ETest-Vue-FastAPI/ruoyi-fastapi-backend/module_admin/entity/do/etest_entities_do.py

269 lines
11 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

from datetime import datetime
from sqlalchemy import Column, String, Integer, BigInteger, DateTime, Boolean, ForeignKey, JSON
from sqlalchemy.orm import relationship
from config.database import Base
class TestPermission(Base):
"""
测试权限配置表 - 谁可以测什么
"""
__tablename__ = 'test_permission'
id = Column(BigInteger, primary_key=True, autoincrement=True, comment='权限ID')
user_id = Column(BigInteger, nullable=False, comment='用户ID')
# 可选限制条件
eut_type_id = Column(BigInteger, nullable=True, comment='产品类型限制(可选)')
test_category_id = Column(BigInteger, nullable=True, comment='测试类别限制(可选)')
# 权限类型
permission_type = Column(String(20), default='TESTER', comment='权限类型: TESTER=测试人')
# 领取限制
can_claim = Column(Boolean, default=True, comment='是否可领取工单')
max_concurrent = Column(Integer, default=5, comment='最大并行工单数')
# 优先级权重(用于排序)
priority_weight = Column(Integer, default=1, comment='优先级权重')
# 若依标准字段
create_by = Column(String(64), default='', comment='创建者')
create_time = Column(DateTime, default=datetime.now, comment='创建时间')
update_by = Column(String(64), default='', comment='更新者')
update_time = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment='更新时间')
del_flag = Column(String(1), default='0', comment='删除标志')
__table_args__ = {'comment': '测试权限配置表'}
class TestCategoryDetail(Base):
"""
测试类别详细配置表 - 仅叶子节点(测试项目)需要
"""
__tablename__ = 'test_category_detail'
id = Column(BigInteger, primary_key=True, autoincrement=True, comment='详情ID')
category_id = Column(BigInteger, nullable=False, comment='关联测试类别ID')
# 测试条件参数模板JSON格式
# 示例: [{"field": "temperature", "label": "温度", "unit": "°C", "type": "number", "required": true}]
condition_fields = Column(JSON, nullable=True, comment='测试条件字段定义')
# 测试结果字段定义JSON格式
# 示例: [{"field": "voltage", "label": "电压", "type": "number", "unit": "V"}]
result_fields = Column(JSON, nullable=True, comment='测试结果字段定义')
# 原始数据配置
allow_raw_data = Column(Boolean, default=True, comment='是否允许提交原始数据')
raw_data_fields = Column(JSON, nullable=True, comment='原始数据字段定义')
# 测试步骤模板
step_template = Column(JSON, nullable=True, comment='测试步骤模板')
# 若依标准字段
create_by = Column(String(64), default='', comment='创建者')
create_time = Column(DateTime, default=datetime.now, comment='创建时间')
update_by = Column(String(64), default='', comment='更新者')
update_time = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment='更新时间')
del_flag = Column(String(1), default='0', comment='删除标志')
__table_args__ = {'comment': '测试类别详细配置表'}
class ReportPermission(Base):
"""
报告权限配置表 - 谁可以编写/审核报告
"""
__tablename__ = 'report_permission'
id = Column(BigInteger, primary_key=True, autoincrement=True, comment='权限ID')
user_id = Column(BigInteger, nullable=False, comment='用户ID')
# 权限类型: WRITER=编写人, REVIEWER_1=一审, REVIEWER_2=二审, REVIEWER_3=三审
permission_type = Column(String(20), nullable=False, comment='权限类型')
# 适用测试类别(可选)
test_category_id = Column(BigInteger, nullable=True, comment='测试类别限制')
# 领取限制
can_claim = Column(Boolean, default=True, comment='是否可领取')
max_concurrent = Column(Integer, default=3, comment='最大并行报告数')
# 若依标准字段
create_by = Column(String(64), default='', comment='创建者')
create_time = Column(DateTime, default=datetime.now, comment='创建时间')
update_by = Column(String(64), default='', comment='更新者')
update_time = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment='更新时间')
del_flag = Column(String(1), default='0', comment='删除标志')
__table_args__ = {'comment': '报告权限配置表'}
class TestReport(Base):
"""
测试报告表
"""
__tablename__ = 'test_report'
id = Column(BigInteger, primary_key=True, autoincrement=True, comment='报告ID')
report_no = Column(String(50), unique=True, nullable=False, comment='报告编号')
# 报告类型: CATEGORY=按大类, ITEM=按子项
report_type = Column(String(20), nullable=False, comment='报告类型')
# 关联
category_id = Column(BigInteger, nullable=False, comment='测试大类ID')
item_id = Column(BigInteger, nullable=True, comment='测试子项ID')
# 优先级
priority = Column(Integer, default=1, comment='优先级')
# 编写人(可领取)
writer_id = Column(BigInteger, nullable=True, comment='编写人ID')
claimed_by_writer_at = Column(DateTime, nullable=True, comment='编写人领取时间')
# 一审
reviewer_1_id = Column(BigInteger, nullable=True, comment='一审人ID')
review_1_status = Column(String(20), nullable=True, comment='一审状态')
review_1_at = Column(DateTime, nullable=True, comment='一审时间')
review_1_comment = Column(String(500), nullable=True, comment='一审意见')
# 二审
reviewer_2_id = Column(BigInteger, nullable=True, comment='二审人ID')
review_2_status = Column(String(20), nullable=True, comment='二审状态')
review_2_at = Column(DateTime, nullable=True, comment='二审时间')
review_2_comment = Column(String(500), nullable=True, comment='二审意见')
# 三审
reviewer_3_id = Column(BigInteger, nullable=True, comment='三审人ID')
review_3_status = Column(String(20), nullable=True, comment='三审状态')
review_3_at = Column(DateTime, nullable=True, comment='三审时间')
review_3_comment = Column(String(500), nullable=True, comment='三审意见')
# 报告状态
status = Column(String(20), default='PENDING_WRITE', comment='报告状态')
# 当前版本
current_version_id = Column(BigInteger, nullable=True, comment='当前版本ID')
# 若依标准字段
create_by = Column(String(64), default='', comment='创建者')
create_time = Column(DateTime, default=datetime.now, comment='创建时间')
update_by = Column(String(64), default='', comment='更新者')
update_time = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment='更新时间')
del_flag = Column(String(1), default='0', comment='删除标志')
__table_args__ = {'comment': '测试报告表'}
class ReportWorkOrderRelation(Base):
"""
报告工单关联表
"""
__tablename__ = 'report_work_order_relation'
id = Column(BigInteger, primary_key=True, autoincrement=True, comment='关联ID')
report_id = Column(BigInteger, nullable=False, comment='报告ID')
work_order_id = Column(BigInteger, nullable=False, comment='工单ID')
# 若依标准字段
create_by = Column(String(64), default='', comment='创建者')
create_time = Column(DateTime, default=datetime.now, comment='创建时间')
__table_args__ = {'comment': '报告工单关联表'}
class TestReportVersion(Base):
"""
报告版本表 - 留痕
"""
__tablename__ = 'test_report_version'
id = Column(BigInteger, primary_key=True, autoincrement=True, comment='版本ID')
report_id = Column(BigInteger, nullable=False, comment='关联报告ID')
version_no = Column(Integer, nullable=False, comment='版本号')
# 报告内容
content = Column(JSON, nullable=False, comment='报告内容')
# 提交信息
submitted_by = Column(BigInteger, nullable=False, comment='提交人ID')
submitted_at = Column(DateTime, nullable=False, comment='提交时间')
submit_comment = Column(String(500), nullable=True, comment='提交说明')
# 审核结果
review_result = Column(String(20), nullable=True, comment='审核结果')
reviewed_by = Column(BigInteger, nullable=True, comment='审核人ID')
reviewed_at = Column(DateTime, nullable=True, comment='审核时间')
review_comment = Column(String(1000), nullable=True, comment='审核意见')
# 若依标准字段
create_by = Column(String(64), default='', comment='创建者')
create_time = Column(DateTime, default=datetime.now, comment='创建时间')
__table_args__ = {'comment': '报告版本表'}
class WorkOrderRetestRecord(Base):
"""
工单重测记录表 - 留痕
"""
__tablename__ = 'work_order_retest_record'
id = Column(BigInteger, primary_key=True, autoincrement=True, comment='记录ID')
work_order_id = Column(BigInteger, nullable=False, comment='关联工单ID')
# 触发来源
trigger_source = Column(String(20), nullable=False, comment='触发来源')
triggered_by = Column(BigInteger, nullable=False, comment='触发人ID')
triggered_at = Column(DateTime, nullable=False, comment='触发时间')
# 重测原因
reason = Column(String(500), nullable=False, comment='重测原因')
report_id = Column(BigInteger, nullable=True, comment='关联报告ID')
review_comment = Column(String(500), nullable=True, comment='审核意见')
# 重测前状态快照
previous_status = Column(Integer, nullable=False, comment='重测前状态')
previous_result = Column(JSON, nullable=True, comment='重测前结果快照')
# 若依标准字段
create_by = Column(String(64), default='', comment='创建者')
create_time = Column(DateTime, default=datetime.now, comment='创建时间')
update_by = Column(String(64), default='', comment='更新者')
update_time = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment='更新时间')
del_flag = Column(String(1), default='0', comment='删除标志')
__table_args__ = {'comment': '工单重测记录表'}
class ReportReviewRecord(Base):
"""
报告审核记录表 - 留痕
"""
__tablename__ = 'report_review_record'
id = Column(BigInteger, primary_key=True, autoincrement=True, comment='记录ID')
report_id = Column(BigInteger, nullable=False, comment='关联报告ID')
version_id = Column(BigInteger, nullable=False, comment='关联版本ID')
# 审核信息
review_level = Column(Integer, nullable=False, comment='审核级别')
reviewer_id = Column(BigInteger, nullable=False, comment='审核人ID')
reviewed_at = Column(DateTime, nullable=False, comment='审核时间')
# 审核结果
action = Column(String(20), nullable=False, comment='审核动作')
comment = Column(String(1000), nullable=True, comment='审核意见')
# 报告内容快照
report_content_snapshot = Column(JSON, nullable=True, comment='报告内容快照')
retest_work_order_ids = Column(JSON, nullable=True, comment='指定重测工单ID列表')
# 若依标准字段
create_by = Column(String(64), default='', comment='创建者')
create_time = Column(DateTime, default=datetime.now, comment='创建时间')
__table_args__ = {'comment': '报告审核记录表'}