Files
knowledge-governance/docs/previews/refresh-2026-09-12/b-editorial-ledger.html
T
zheromiku dcdc8d1ddd feat: 知识治理平台(含已验证发布/回滚契约)
全栈知识治理平台首次入库(P1-P10 + 发布链路模拟验证闭环):

- 治理核心:源目录/变更集/人工审核/发布批次/发布执行(fail-closed 闸口)
- 测试通道:WeKnora 测试 KB 上传/轮询/验收;poll 完成时写入
  parser_generation/index_generation,修复 manual/seed 路径发布闸口永久拦截
- 发布适配器 v071(本地 source=测试角色 / 云端 target=生产角色 模拟验证通过):
  * ES 导出/导入 mapping 自适应(.keyword 子字段、可选 tenant_id)
  * OSS locator 支持嵌套 scheme;chunks.seq_id 由目标序列分配
  * bundle 归档同身份重试原子替换;verifier 按 bundle chunk_type 计数
  * 回滚 job payload 支持 prior_execution_id(strict 解码)
- 三通道发布+回滚演练实测:publish 4/4 verified,检索命中,
  rollback 4/4 rolled_back,目标端 PG is_enabled=false、ES is_enabled=false
- 前端 A·Data-console 风格全站统一,120 用例通过
- 门禁:go vet / go test 全包通过,gofmt 干净
2026-09-30 10:54:06 +08:00

136 lines
8.9 KiB
HTML

<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1">
<title>方向B · Editorial ledger(解析监控)</title>
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&family=Noto+Serif+SC:wght@500;700&family=Noto+Sans+SC:wght@400;500&display=swap">
<style>
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:"Noto Sans SC","PingFang SC",system-ui,sans-serif;background:#f7f4ec;color:#1e1a14;font-size:13px;line-height:1.6;-webkit-font-smoothing:antialiased}
.serif{font-family:"Noto Serif SC",serif}
.mono{font-family:"IBM Plex Mono",monospace}
.app{display:grid;grid-template-columns:220px 1fr;min-height:100vh}
.side{background:#231f18;color:#b8ac98;padding:24px 0;display:flex;flex-direction:column}
.side .brand{padding:0 20px 18px;border-bottom:1px solid #3d352a}
.side .brand h1{font-family:"Noto Serif SC",serif;color:#f0e9da;font-size:17px;font-weight:700;letter-spacing:.06em}
.side .brand span{display:block;font-size:10px;color:#7a6f5c;margin-top:4px;letter-spacing:.18em}
.side nav{padding:18px 0;display:flex;flex-direction:column}
.side nav a{color:#a3967f;text-decoration:none;padding:9px 20px;font-size:13px;border-left:3px solid transparent;display:flex;justify-content:space-between}
.side nav a:hover{color:#e8e0cd;background:#2b261d}
.side nav a.on{color:#f7f2e5;border-left-color:#c2410c;background:#2b261d;font-weight:500}
.side nav a em{font-style:normal;font-family:"IBM Plex Mono",monospace;font-size:11px}
.side .foot{margin-top:auto;padding:18px 20px;border-top:1px solid #3d352a;font-size:11px;color:#7a6f5c;line-height:1.7}
.side .foot b{color:#d9a05b;font-weight:500}
.main{min-width:0}
.page{max-width:880px;padding:38px 48px 60px}
.doc-rule{height:3px;background:#1e1a14;margin-bottom:14px}
.doc-rule.thin{height:1px;background:#b8ac98}
header h1{font-family:"Noto Serif SC",serif;font-size:26px;font-weight:700;letter-spacing:.02em;line-height:1.2}
header .standfirst{font-size:13.5px;color:#5c5342;margin-top:8px;max-width:560px}
header .dateline{font-family:"IBM Plex Mono",monospace;font-size:11px;color:#8a7f68;margin-top:12px;padding-top:10px;border-top:1px solid #d5cbb4;display:flex;gap:18px}
header .dateline b{color:#1e1a14;font-weight:500}
.ledger{display:grid;grid-template-columns:repeat(5,1fr);margin:26px 0 30px;border-top:1px solid #b8ac98;border-bottom:1px solid #b8ac98}
.cell{padding:14px 4px;text-align:center;border-right:1px solid #ddd3ba}
.cell:last-child{border-right:0}
.cell .num{font-family:"IBM Plex Mono",monospace;font-size:27px;font-weight:500;line-height:1}
.cell .lbl{font-size:11px;color:#6e6450;margin-top:6px;letter-spacing:.14em}
.cell.f .num{color:#a1201e}.cell.w .num{color:#b45309}.cell.r .num{color:#1d4ed8}.cell.d .num{color:#166534}.cell.x .num{color:#6e6450}
h2.sec{font-family:"Noto Serif SC",serif;font-size:15px;font-weight:700;margin:26px 0 12px;display:flex;align-items:baseline;gap:12px}
h2.sec .n{font-family:"IBM Plex Mono",monospace;font-size:11px;color:#a1201e;font-weight:400}
h2.sec::after{content:"";flex:1;height:1px;background:#d5cbb4}
.entry{display:grid;grid-template-columns:44px minmax(0,1fr) auto;gap:18px;padding:14px 0 16px;border-bottom:1px solid #ddd3ba}
.entry .idx{font-family:"Noto Serif SC",serif;font-size:20px;color:#a8a091;font-weight:700}
.entry h3{font-family:"Noto Serif SC",serif;font-size:15px;font-weight:700;letter-spacing:.01em}
.entry h3 .tag{font-family:"IBM Plex Mono",monospace;font-size:10px;color:#6e6450;border:1px solid #d5cbb4;padding:1px 7px;border-radius:0;vertical-align:2px;margin-left:8px;font-weight:400;letter-spacing:.04em}
.entry .cause{font-size:12.5px;color:#5c5342;margin-top:6px;max-width:600px}
.entry .cause code{font-family:"IBM Plex Mono",monospace;font-size:11px;background:#ece6d5;padding:1px 6px;color:#a1201e}
.entry .chain{margin-top:10px;font-family:"IBM Plex Mono",monospace;font-size:10.5px;color:#8a7f68;display:flex;gap:10px;flex-wrap:wrap}
.entry .chain .ok{color:#166534}.entry .chain .no{color:#a1201e;font-weight:600}
.entry .chain i{font-style:normal;color:#c6bda8}
.entry .act button{font-family:"Noto Sans SC",sans-serif;font-size:12px;border:1px solid #1e1a14;background:transparent;color:#1e1a14;padding:6px 14px;cursor:pointer;letter-spacing:.06em}
.entry .act button:hover{background:#1e1a14;color:#f7f4ec}
.entry .meta{font-family:"IBM Plex Mono",monospace;font-size:10.5px;color:#a8a091;margin-top:8px}
.deadline{margin-top:8px;border-left:3px solid #a1201e;padding:10px 16px;background:#f1ecdf}
.deadline h4{font-family:"Noto Serif SC",serif;font-size:13px;margin-bottom:4px}
.deadline p{font-size:12px;color:#5c5342}
footer{margin-top:36px;padding-top:14px;border-top:1px solid #b8ac98;font-family:"IBM Plex Mono",monospace;font-size:11px;color:#8a7f68;display:flex;flex-wrap:wrap;gap:20px}
footer b{color:#1e1a14;font-weight:500}
footer .ok{color:#166534}footer .bad{color:#a1201e}
</style>
</head>
<body>
<div class="app">
<aside class="side">
<div class="brand"><h1>知识治理台账</h1><span>GOVERNANCE LEDGER</span></div>
<nav>
<a href="#">来源与目录 <em>08</em></a>
<a href="#" class="on">解析监控 <em>03</em></a>
<a href="#">发布管理 <em>02</em></a>
<a href="#">系统设置</a>
</nav>
<div class="foot">当前快照<br><b>2026-09-12 10:41</b><br>操作员 · 文档工程师</div>
</aside>
<div class="main">
<div class="page">
<div class="doc-rule"></div>
<header>
<h1>解析监控 · 需人工处理</h1>
<p class="standfirst">失败任务以条目登记:缘由、链路断点、处置建议依次列出。勾选后由操作员署名批量重试,死信须逐条复核后方可重新入队。</p>
<div class="dateline"><span>账期 <b>2026-09-12</b></span><span>1 小时成功 <b>88.9%</b></span><span>24 小时成功 <b>96.4%</b></span><span>Worker <b>2</b></span></div>
</header>
<div class="ledger">
<div class="cell f"><div class="num">2</div><div class="lbl">失败</div></div>
<div class="cell w"><div class="num">1</div><div class="lbl">停滞</div></div>
<div class="cell r"><div class="num">4</div><div class="lbl">处理中</div></div>
<div class="cell d"><div class="num">48</div><div class="lbl">已完成</div></div>
<div class="cell x"><div class="num">1</div><div class="lbl">死信</div></div>
</div>
<h2 class="sec">失败条目 <span class="n">贰条 · 按断点阶段登记</span></h2>
<div class="entry">
<div class="idx">一</div>
<div>
<h3>CR20A 电气规格说明书.pdf<span class="tag">对外</span><span class="tag">更新</span></h3>
<div class="cause">错误码 <code>remote_parse_failed</code>,第二次尝试,已停留七十一小时。建议先在 WeKnora 手动解析该文件确认格式,再决定是否重试。</div>
<div class="chain"><span class="ok">下载 ✓</span><i>·</i><span class="ok">Hash ✓</span><i>·</i><span class="ok">OSS ✓</span><i>·</i><span class="no">文档解析 ✗</span><i>·</i><span>WeKnora 上传</span><i>·</i><span>索引</span><i>·</i><span>完成</span></div>
</div>
<div class="act"><button>重 试</button><div class="meta">cs-1 · tp-failed</div></div>
</div>
<div class="entry">
<div class="idx">二</div>
<div>
<h3>伺服驱动器调试手册.docx<span class="tag">对内</span><span class="tag">新增</span></h3>
<div class="cause">错误码 <code>mineru_timeout</code>,第一次尝试,已停留四十五分钟。多为 MinerU 容量或超时问题,确认服务恢复接单后重试。</div>
<div class="chain"><span class="ok">下载 ✓</span><i>·</i><span class="ok">Hash ✓</span><i>·</i><span class="ok">OSS ✓</span><i>·</i><span class="ok">文档解析 ✓</span><i>·</i><span class="ok">WeKnora 上传 ✓</span><i>·</i><span class="no">索引 ✗</span><i>·</i><span>完成</span></div>
</div>
<div class="act"><button>重 试</button><div class="meta">cs-3 · tp-044</div></div>
</div>
<h2 class="sec">死信登记 <span class="n">壹条 · 尝试耗尽</span></h2>
<div class="deadline">
<h4>对外知识库 · test.upload · <span class="mono">release_manifest_mismatch</span></h4>
<p>发布结果与冻结清单不一致,已降级为失败。原任务与审计行保留,重新入队将创建全新尝试。来源 cs-2 · CR1A 固件变更记录.pdf · 尝试 5/5 · 2026-09-10 14:22</p>
</div>
<footer>
<span>MinerU <b class="ok">可接单</b></span>
<span>WeKnora 测试 <b class="ok">可接单</b></span>
<span>PostgreSQL <b>12ms</b></span>
<span>队列 <b>3 待 / 4 跑</b></span>
<span>CPU 42% · 内存 18.6/32.0GB</span>
</footer>
</div>
</div>
</div>
</body>
</html>