FE/backend/models.py

68 lines
2.2 KiB
Python

from sqlalchemy import Column, String, JSON
from database import Base
class Space(Base):
__tablename__ = "spaces"
id = Column(String(50), primary_key=True)
name = Column(String(200), nullable=False)
class TestCase(Base):
__tablename__ = "test_cases"
id = Column(String(50), primary_key=True)
case_id = Column(String(50), unique=True, nullable=True)
text = Column(String(200), nullable=False)
module = Column(String(100))
type = Column(String(50), default="General")
priority = Column(String(20), default="P2")
review_status = Column(String(50), default="Draft")
execution_status = Column(String(50), default="UNTESTED")
maintainer = Column(String(100))
requirement_id = Column(String(100))
bug_id = Column(String(100))
steps = Column(JSON, nullable=True) # [{action, expected}]
tags = Column(JSON, nullable=True) # string[]
reviewers = Column(JSON, nullable=True) # string[] (Feishu open_ids)
parent_id = Column(String(50), nullable=True)
space_id = Column(String(50))
class TestTask(Base):
__tablename__ = "test_tasks"
id = Column(String(50), primary_key=True)
name = Column(String(200), nullable=False)
status = Column(String(50), default="PENDING") # PENDING / RUNNING / COMPLETED
plan_id = Column(String(50))
assignees = Column(JSON, nullable=True) # string[]
created_at = Column(String(50))
class TestPlan(Base):
__tablename__ = "test_plans"
id = Column(String(50), primary_key=True)
name = Column(String(200), nullable=False)
type = Column(String(50)) # Self-test / Regression / Requirement / Smoke
case_ids = Column(JSON, nullable=True) # string[]
assignees = Column(JSON, nullable=True) # string[] (Feishu open_ids)
created_at = Column(String(50))
space_id = Column(String(50))
class Bug(Base):
__tablename__ = "bugs"
id = Column(String(50), primary_key=True)
title = Column(String(200), nullable=False)
status = Column(String(50), default="OPEN") # OPEN / RESOLVED / CLOSED
case_id = Column(String(50))