diff --git a/dashboard/server.py b/dashboard/server.py index ebb7f4c..a15063d 100644 --- a/dashboard/server.py +++ b/dashboard/server.py @@ -470,10 +470,27 @@ def view_runs(): runs_html = (f"
运行(最近 50)
" + _RUN_COLS + _run_rows(runs) + "
") if runs else \ empty_gap("暂无运行记录", "创作链落库后,每次运行登记一行(example_run)。") - cand = (empty_gap("待审候选 · 待落库", "候选表(99)未建,AI 候选正文暂无持久化登记。") - if not table_exists("example_candidate") else "
候选表已建 · 暂无候选
") - dec = (empty_gap("用户决策 · 待落库", "决策记录表(99)未建,接受/合并/丢弃暂以 git 提交留痕。") - if not table_exists("example_user_decision") else "
决策表已建 · 暂无决策
") + if table_exists("example_candidate"): + _, cands = q("SELECT id, work_id, target_chapter, candidate_version, run_type, state, source_role " + "FROM example_candidate WHERE deleted=false AND state IN ('draft','checking','passed') " + "ORDER BY create_time DESC LIMIT 30") + cand = ("
待审候选(活跃)
" + "" + + "".join(f"" + f"" for c in cands) + + "
id作品章版本类型状态角色
{esc(c[0])}{esc(c[1])}{esc(c[2])}{esc(c[3])}{esc(c[4])}{chip(c[5])}{esc(c[6])}
") if cands else "
候选表已建 · 暂无待审候选
" + else: + cand = empty_gap("待审候选 · 待落库", "候选表(99)未建,AI 候选正文暂无持久化登记。") + if table_exists("example_user_decision"): + _, decs = q("SELECT work_id, target_chapter, decision, rationale, decided_by, create_time " + "FROM example_user_decision ORDER BY create_time DESC LIMIT 30") + dec = ("
用户决策(最近 30)
" + "" + + "".join(f"" + f"" for d in decs) + + "
作品章决策理据决策人时间
{esc(d[0])}{esc(d[1])}{chip({'accept':'good','merge':'warn','discard':'crit'}.get(d[2],'warn'), d[2])}{esc((d[3] or '')[:40])}{esc(d[4])}{esc(d[5])}
") if decs else "
决策表已建 · 暂无决策
" + else: + dec = empty_gap("用户决策 · 待落库", "决策记录表(99)未建,接受/合并/丢弃暂以 git 提交留痕。") body = (f"

运行记录agentic 的操作与产出 · 流程 05 · 质量 06

" f"{entries}{runs_html}

待审候选

{cand}

用户决策

{dec}") return layout("运行记录", body, "/runs")