增加项目的各个功能

This commit is contained in:
qiaoxinjiu
2026-05-07 19:21:19 +08:00
parent aba1618f89
commit ee6cd4ae66
121 changed files with 9346 additions and 43 deletions

View File

@@ -0,0 +1,46 @@
# encoding: UTF-8
from ..dao.planDao import PlanDao
from ..dao.projectDao import ProjectDao
from ..dao.reportDao import ReportDao
from ..model.planModel import TestPlan
from ..model.reportModel import Report
class ReportService(object):
@staticmethod
def create(session, model_cls, add_info):
return ReportDao.create(session, model_cls, add_info)
@staticmethod
def get_by_id(session, model_cls, obj_id):
return ReportDao.get_by_id(session, model_cls, obj_id)
@staticmethod
def list_by_filters(session, model_cls, filter_list, page_num=1, page_size=20, order_column=None, asc=False):
return ReportDao.list_by_filters(session, model_cls, filter_list, int(page_num), int(page_size), order_column, asc)
@staticmethod
def generate_report(session, plan_id, generated_by=None):
plan = PlanDao.get_by_id(session, TestPlan, plan_id)
if not plan:
return 0, '未查询到对应计划!'
project = ProjectDao.get_by_id(session, ProjectDao.project_model(), plan.project_id)
if not project:
return 0, '未查询到对应项目!'
# 复用计划统计,保证计划详情和报告中的指标口径一致。
stats = PlanDao.plan_stats(session, plan_id)
# MVP 阶段先生成简单 HTML后续可替换为模板渲染器。
content = '<html><body><h1>{}</h1><p>总用例:{}</p><p>通过率:{}%</p></body></html>'.format(
plan.name, stats['total_cases'], stats['pass_rate']
)
add_info = {
'plan_id': int(plan_id),
'project_id': plan.project_id,
'product_id': project.product_id,
'name': '{}_报告'.format(plan.name),
'report_type': 1,
'summary': stats,
'content': content,
'generated_by': generated_by
}
return ReportDao.create(session, Report, add_info)