68 lines
2.2 KiB
Python
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))
|
|
|