 cd28f94e8f
			
		
	
	cd28f94e8f
	
	
	
		
			
			Major Features: ✅ JWT Bearer Token authentication system with secure token management ✅ API key generation and management with scoped permissions ✅ Complete user management (registration, login, logout, password change) ✅ Frontend authentication components and context integration Backend Architecture Improvements: ✅ CORS configuration via environment variables (CORS_ORIGINS) ✅ Dependency injection pattern for unified coordinator ✅ Database schema fixes with UUID support and SQLAlchemy compliance ✅ Task persistence replaced in-memory storage with database-backed system ✅ Service separation following Single Responsibility Principle ✅ Fixed SQLAlchemy metadata column naming conflicts Infrastructure & Testing: ✅ Comprehensive Jest unit testing and Playwright e2e testing infrastructure ✅ GitHub Actions CI/CD pipeline integration ✅ Enhanced API clients matching PROJECT_PLAN.md specifications ✅ Docker Swarm deployment with proper networking and service connectivity Database & Security: ✅ UUID-based user models with proper validation ✅ Unified database schema with authentication tables ✅ Token blacklisting and refresh token management ✅ Secure password hashing with bcrypt ✅ API key scoping and permissions system API Enhancements: ✅ Authentication endpoints (/api/auth/*) ✅ Task management with database persistence ✅ Enhanced monitoring and health check endpoints ✅ Comprehensive error handling and validation Deployment: ✅ Successfully deployed to Docker Swarm at https://hive.home.deepblack.cloud ✅ All services operational with proper networking ✅ Environment-based configuration support 🛠️ Technical Debt Resolved: - Fixed global coordinator instances with proper dependency injection - Replaced hardcoded CORS origins with environment variables - Unified User model schema conflicts across authentication system - Implemented database persistence for critical task storage - Created comprehensive testing infrastructure This release transforms Hive from a development prototype into a production-ready distributed AI orchestration platform with enterprise-grade authentication, proper architectural patterns, and robust deployment infrastructure. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
		
			
				
	
	
		
			41 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| """
 | |
| Task model for SQLAlchemy ORM
 | |
| """
 | |
| 
 | |
| from sqlalchemy import Column, String, Text, Integer, DateTime, ForeignKey, UUID as SqlUUID
 | |
| from sqlalchemy.dialects.postgresql import JSONB
 | |
| from sqlalchemy.sql import func
 | |
| from sqlalchemy.orm import relationship
 | |
| from ..core.database import Base
 | |
| import uuid
 | |
| 
 | |
| 
 | |
| class Task(Base):
 | |
|     __tablename__ = "tasks"
 | |
|     
 | |
|     # Primary identification
 | |
|     id = Column(SqlUUID(as_uuid=True), primary_key=True, index=True, default=uuid.uuid4)
 | |
|     
 | |
|     # Task details
 | |
|     title = Column(String(255), nullable=False)
 | |
|     description = Column(Text)
 | |
|     priority = Column(Integer, default=5)
 | |
|     status = Column(String(50), default='pending')
 | |
|     
 | |
|     # Relationships
 | |
|     assigned_agent_id = Column(String(255), ForeignKey("agents.id"), nullable=True)
 | |
|     workflow_id = Column(SqlUUID(as_uuid=True), ForeignKey("workflows.id"), nullable=True)
 | |
|     execution_id = Column(SqlUUID(as_uuid=True), ForeignKey("executions.id"), nullable=True)
 | |
|     
 | |
|     # Task metadata (includes context and payload)
 | |
|     task_metadata = Column("metadata", JSONB, nullable=True)
 | |
|     
 | |
|     # Timestamps
 | |
|     created_at = Column(DateTime(timezone=True), server_default=func.now())
 | |
|     started_at = Column(DateTime(timezone=True), nullable=True)
 | |
|     completed_at = Column(DateTime(timezone=True), nullable=True)
 | |
|     
 | |
|     # Relationships
 | |
|     assigned_agent = relationship("Agent", back_populates="tasks")
 | |
|     workflow = relationship("Workflow", back_populates="tasks")
 | |
|     execution = relationship("Execution", back_populates="tasks") |