feat: AI Worker 平台 MVP v1.0.0 - 多租户/项目管理/AI Worker/任务编排/HITL审核/成本治理
This commit is contained in:
@@ -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}>"
|
||||
Reference in New Issue
Block a user