提交 75870a5e authored 作者: 陈泽健's avatar 陈泽健

feat(reports): 报告中心展示历史失败/取消执行 + 会话56交接归档

- reports.py list_reports:状态筛选由仅 completed 扩展为 completed/failed/cancelled,并返回 status 字段
- Reports.vue 触发方式列新增失败/取消状态标签(failed红色 / cancelled信息色)
- HANDOFF_UI自动化.md 记录会话56(钉钉通知改版 + 5.60 部署)+ 会话55历史状态归档
Co-Authored-By: 's avatarClaude <noreply@anthropic.com>
上级 ae83a558
此差异已折叠。
...@@ -134,7 +134,11 @@ async def list_reports( ...@@ -134,7 +134,11 @@ async def list_reports(
db: AsyncSession = Depends(get_db), db: AsyncSession = Depends(get_db),
): ):
""" """
获取可生成报告的已完成执行记录列表 获取可生成报告的执行记录列表
已结束的执行(完成/失败/取消)均会列出——报告由 case_results
实时渲染,失败/取消的执行同样有明细数据可查看。运行中/待执行
的执行数据不完整,不在报告中心展示。
Args: Args:
skip (int): 跳过记录数 skip (int): 跳过记录数
...@@ -147,8 +151,10 @@ async def list_reports( ...@@ -147,8 +151,10 @@ async def list_reports(
""" """
from sqlalchemy import func from sqlalchemy import func
# 构建筛选条件:已完成 + 可选按用例类型 # 构建筛选条件:已结束状态 + 可选按用例类型
conditions = [Execution.status == "completed"] conditions = [
Execution.status.in_(["completed", "failed", "cancelled"])
]
if case_type: if case_type:
conditions.append(Execution.case_type == case_type) conditions.append(Execution.case_type == case_type)
...@@ -183,6 +189,7 @@ async def list_reports( ...@@ -183,6 +189,7 @@ async def list_reports(
"id": e.id, "id": e.id,
"name": e.name, "name": e.name,
"case_type": e.case_type, "case_type": e.case_type,
"status": e.status,
"pass_rate": e.pass_rate, "pass_rate": e.pass_rate,
"total_cases": e.total_cases, "total_cases": e.total_cases,
"passed": e.passed, "passed": e.passed,
......
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
</el-tag> </el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="触发方式" width="90"> <el-table-column label="触发方式" width="140">
<template #default="{ row }"> <template #default="{ row }">
<el-tag <el-tag
:type="row.trigger_type === 'scheduled' ? 'warning' : 'info'" :type="row.trigger_type === 'scheduled' ? 'warning' : 'info'"
...@@ -43,6 +43,14 @@ ...@@ -43,6 +43,14 @@
> >
{{ row.trigger_type === 'scheduled' ? '定时' : '手动' }} {{ row.trigger_type === 'scheduled' ? '定时' : '手动' }}
</el-tag> </el-tag>
<el-tag
v-if="row.status && row.status !== 'completed'"
:type="row.status === 'failed' ? 'danger' : 'info'"
size="small"
style="margin-left: 4px"
>
{{ row.status === 'failed' ? '失败' : '取消' }}
</el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="通过率" width="120"> <el-table-column label="通过率" width="120">
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论