1. 新增文档源管理模块(documentSource) - 控制器:documentSourceController.py - DAO层:documentSourceDao.py - 模型:documentSourceModel.py - 服务层:documentSourceService.py 2. 新增技能管理模块(skill) - 控制器:skillController.py - DAO层:skillDao.py - 模型:skillModel.py - 服务层:skillService.py 3. 新增AI服务(aiService.py) 4. 新增配置文件 - AI配置:config/ai_config.py - 技能配置:config/skills/test-case-generator/ 5. 新增SQL脚本 - 文档权限:add_document_permissions.sql - 模块状态字段:add_module_status_field.sql - 文档源表:create_document_source_table.sql - 技能规则:skills_rules_pgsql.sql
68 lines
4.6 KiB
Python
68 lines
4.6 KiB
Python
from sqlalchemy import BigInteger, Column, Integer, SmallInteger, String, TIMESTAMP, Text, text
|
||
from sqlalchemy.dialects.postgresql import JSONB
|
||
from sqlalchemy.ext.declarative import declarative_base
|
||
|
||
from common.sqlSession import to_dict
|
||
|
||
Base = declarative_base()
|
||
Base.to_dict = to_dict
|
||
|
||
|
||
class TestSkill(Base):
|
||
__tablename__ = 'test_skill'
|
||
id = Column(BigInteger, primary_key=True, autoincrement=True, comment='id')
|
||
project_id = Column(BigInteger, nullable=False, comment='项目id')
|
||
module_id = Column(BigInteger, comment='模块id,空表示项目级通用')
|
||
name = Column(String(128), nullable=False, comment='Skill名称')
|
||
code = Column(String(64), nullable=False, comment='Skill编码,项目内唯一')
|
||
description = Column(Text, comment='Skill描述')
|
||
trigger_condition = Column(Text, nullable=False, comment='触发条件')
|
||
reasoning_path = Column(Text, comment='推理路径')
|
||
output_spec = Column(Text, comment='输出规范')
|
||
skill_file_path = Column(String(512), comment='Skill文件路径,指向config/skills下生成的SKILL.md')
|
||
skill_type = Column(SmallInteger, nullable=False, default=1, comment='类型:1通用测试策略 2历史缺陷模式 3边界场景 4接口测试 5UI测试 6性能测试 7安全测试 8数据一致性 9并发幂等 99其他')
|
||
risk_level = Column(SmallInteger, nullable=False, default=2, comment='风险等级:0高 1中高 2中 3低')
|
||
tags = Column(JSONB, nullable=False, server_default=text("'[]'::jsonb"), comment='标签数组')
|
||
status = Column(SmallInteger, nullable=False, default=1, comment='状态:1启用 2停用 3草稿')
|
||
owner_id = Column(BigInteger, comment='负责人用户id')
|
||
created_by = Column(BigInteger, comment='创建人用户id')
|
||
usage_count = Column(Integer, nullable=False, default=0, comment='使用次数')
|
||
is_delete = Column(Integer, nullable=False, 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 TestBusinessRule(Base):
|
||
__tablename__ = 'test_business_rule'
|
||
id = Column(BigInteger, primary_key=True, autoincrement=True, comment='id')
|
||
project_id = Column(BigInteger, nullable=False, comment='项目id')
|
||
module_id = Column(BigInteger, comment='模块id,空表示项目级通用')
|
||
name = Column(String(128), nullable=False, comment='业务规则名称')
|
||
rule_code = Column(String(64), comment='业务规则编码,项目内唯一')
|
||
rule_content = Column(Text, nullable=False, comment='业务规则内容')
|
||
applicable_scene = Column(Text, comment='适用场景')
|
||
example = Column(Text, comment='示例')
|
||
rule_file_path = Column(String(512), comment='业务规则文件路径,指向config/rules下生成的RULE.md')
|
||
priority = Column(SmallInteger, nullable=False, default=2, comment='优先级:0高 1中高 2中 3低')
|
||
tags = Column(JSONB, nullable=False, server_default=text("'[]'::jsonb"), comment='标签数组')
|
||
status = Column(SmallInteger, nullable=False, default=1, comment='状态:1启用 2停用 3草稿')
|
||
owner_id = Column(BigInteger, comment='负责人用户id')
|
||
created_by = Column(BigInteger, comment='创建人用户id')
|
||
usage_count = Column(Integer, nullable=False, default=0, comment='使用次数')
|
||
is_delete = Column(Integer, nullable=False, 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 TestAiGenerationContext(Base):
|
||
__tablename__ = 'test_ai_generation_context'
|
||
id = Column(BigInteger, primary_key=True, autoincrement=True, comment='id')
|
||
generation_id = Column(BigInteger, comment='AI生成任务id,兼容现有生成任务')
|
||
project_id = Column(BigInteger, nullable=False, comment='项目id')
|
||
module_id = Column(BigInteger, comment='模块id')
|
||
source_type = Column(SmallInteger, nullable=False, comment='来源类型:1 Skill 2业务规则')
|
||
source_id = Column(BigInteger, nullable=False, comment='来源id')
|
||
source_name = Column(String(128), comment='来源名称快照')
|
||
match_score = Column(Integer, nullable=False, default=0, comment='匹配分数')
|
||
created_time = Column(TIMESTAMP, server_default=text('CURRENT_TIMESTAMP'), nullable=True, comment='创建时间')
|