dcdc8d1ddd
全栈知识治理平台首次入库(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 干净
136 lines
8.9 KiB
HTML
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>
|