Files
effekt-interface/app/api/model/caseModel.py
qiaoxinjiu b71c4a66e1 feat: 添加module表status字段及相关接口优化
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. 优化数据库连接池配置,添加连接验证和自动重试机制
2026-05-18 10:04:56 +08:00

65 lines
3.6 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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生成1AI生成')
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='评审时间')