1. 在module表新增status字段(0:待确认;1:正常;2:弃用) 2. 修改/document/generate-cases接口,创建模块时设置status=0 3. 修改/case/restore接口,恢复用例时同步更新模块及其父模块的status为1 4. 修改/case/list接口,支持module_status参数过滤,默认只显示status=1的模块 5. 修改/case/list接口,返回module_path字段 6. 修改/plan/case/list接口,返回module_path字段 7. 修改/module/tree接口,默认筛选status=1的数据 8. 优化数据库连接池配置,添加连接验证和自动重试机制
65 lines
3.6 KiB
Python
65 lines
3.6 KiB
Python
from sqlalchemy import BigInteger, Column, Integer, SmallInteger, String, TIMESTAMP, Text, text
|
||
from sqlalchemy.dialects.postgresql import ARRAY, JSONB
|
||
from sqlalchemy.ext.declarative import declarative_base
|
||
|
||
from common.sqlSession import to_dict
|
||
|
||
Base = declarative_base()
|
||
Base.to_dict = to_dict
|
||
|
||
|
||
class Module(Base):
|
||
__tablename__ = 'module'
|
||
id = Column(BigInteger, primary_key=True, autoincrement=True, comment='id')
|
||
project_id = Column(BigInteger, nullable=False, comment='项目id')
|
||
parent_id = Column(BigInteger, default=0, comment='父模块id')
|
||
name = Column(String(128), nullable=False, comment='模块名称')
|
||
sort_order = Column(Integer, default=0, comment='排序')
|
||
path = Column(String(512), comment='模块路径')
|
||
is_delete = Column(Integer, default=0, comment='0:未删除;1:已删除')
|
||
status = Column(Integer, default=0, comment='0:待确认;1:正常;2:弃用')
|
||
|
||
|
||
class TestCase(Base):
|
||
__tablename__ = 'test_case'
|
||
id = Column(BigInteger, primary_key=True, autoincrement=True, comment='id')
|
||
project_id = Column(BigInteger, nullable=False, comment='项目id')
|
||
module_id = Column(BigInteger, comment='模块id')
|
||
case_key = Column(String(64), nullable=False, comment='项目内唯一编号')
|
||
title = Column(String(255), nullable=False, comment='标题')
|
||
preconditions = Column(Text, comment='前置条件')
|
||
steps = Column(Text, comment='步骤')
|
||
expected_results = Column(Text, comment='预期结果')
|
||
priority = Column(SmallInteger, default=2, comment='0:P0 1:P1 2:P2 3:P3')
|
||
case_type = Column(SmallInteger, default=1, comment='1:功能 2:性能 3:安全 4:接口')
|
||
tags = Column(ARRAY(String(64)), server_default=text("'{}'::varchar[]"), comment='标签')
|
||
status = Column(SmallInteger, default=1, comment='1:正常 2:已废弃 3:评审中 4:评审通过')
|
||
is_auto = Column(Integer, default=0, comment='0:未实现自动化;1:已实现自动化')
|
||
is_ai_generated = Column(Integer, default=0, comment='0:非AI生成;1:AI生成')
|
||
created_by = Column(BigInteger, comment='创建人')
|
||
is_delete = Column(Integer, default=0, comment='0:未删除;1:已删除')
|
||
created_time = Column(TIMESTAMP, server_default=text('CURRENT_TIMESTAMP'), nullable=True, comment='创建时间')
|
||
updated_time = Column(TIMESTAMP, server_default=text('CURRENT_TIMESTAMP'), server_onupdate=text('CURRENT_TIMESTAMP'), nullable=True, comment='修改时间')
|
||
|
||
|
||
class CaseSnapshot(Base):
|
||
__tablename__ = 'case_snapshot'
|
||
id = Column(BigInteger, primary_key=True, autoincrement=True, comment='id')
|
||
case_id = Column(BigInteger, nullable=False, comment='用例id')
|
||
version = Column(Integer, nullable=False, comment='版本')
|
||
snapshot = Column(JSONB, nullable=False, comment='快照')
|
||
created_by = Column(BigInteger, comment='创建人')
|
||
created_time = Column(TIMESTAMP, server_default=text('CURRENT_TIMESTAMP'), nullable=True, comment='创建时间')
|
||
|
||
|
||
class CaseReview(Base):
|
||
__tablename__ = 'case_review'
|
||
id = Column(BigInteger, primary_key=True, autoincrement=True, comment='id')
|
||
case_id = Column(BigInteger, nullable=False, comment='用例id')
|
||
reviewer_id = Column(BigInteger, nullable=False, comment='评审人')
|
||
status = Column(SmallInteger, default=0, comment='0:待评审 1:通过 2:驳回 3:建议修改')
|
||
comments = Column(Text, comment='评论')
|
||
diff_content = Column(Text, comment='JSON diff')
|
||
created_time = Column(TIMESTAMP, server_default=text('CURRENT_TIMESTAMP'), nullable=True, comment='创建时间')
|
||
reviewed_time = Column(TIMESTAMP, nullable=True, comment='评审时间')
|