feat: AI Worker 平台 MVP v1.0.0 - 多租户/项目管理/AI Worker/任务编排/HITL审核/成本治理

This commit is contained in:
2026-08-12 13:30:43 +08:00
parent 7da701b740
commit 528fad30be
+34
View File
@@ -0,0 +1,34 @@
"""Artifact model - task deliverables with versioning."""
from sqlalchemy import Column, String, Integer, Text, ForeignKey
from app.models.base import Base, TimestampMixin, TenantMixin
class Artifact(Base, TimestampMixin, TenantMixin):
"""An artifact is a deliverable produced by a task.
Supports versioning: each task can have multiple artifact versions.
Type: text, code, document, data, image, mixed
"""
__tablename__ = "artifacts"
id = Column(Integer, primary_key=True, autoincrement=True)
task_id = Column(Integer, ForeignKey("tasks.id"), nullable=False, index=True)
project_id = Column(Integer, ForeignKey("projects.id"), nullable=False)
title = Column(String(500), nullable=False)
content = Column(Text, default="")
artifact_type = Column(String(50), default="text")
# Versioning
version = Column(Integer, default=1)
is_latest = Column(String(10), default="true")
# Source attribution
created_by_user_id = Column(Integer, ForeignKey("users.id"), nullable=True)
created_by_worker_id = Column(Integer, ForeignKey("ai_workers.id"), nullable=True)
# Source references (for traceability - JSON array of source citations)
sources = Column(Text, default="[]")
def __repr__(self):
return f"<Artifact {self.title} v{self.version}>"