ops-changelog.html 7.59 KB
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" /><meta name="viewport" content="width=device-width,initial-scale=1" />
<title>Ops · Changelog · LemonBoss PRD</title>
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,300;9..144,500;9..144,700&family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet" />
<link rel="stylesheet" href="assets/shell.css" />
</head>
<body data-page="ops-changelog.html">
<div class="shell">
  <aside id="sidebar"></aside>
  <main class="page">
    <header class="page-head">
      <div class="crumb"><span class="pill">07 · OPS</span><span class="sep">/</span><span>Changelog</span></div>
      <h1>Changelog · 全部版本变更流</h1>
      <p class="deck">渲染 <code>changelog.ndjson</code> (M-15)。每次 PRD/SDD/units rev 都产一条;可点开看 diff、跳归档版本。是项目「记忆」的入口。</p>
    </header>
    <article class="body">

      <section>
        <h2>UI Wireframe</h2>
        <div class="mock">
          <div class="topbar">
            <span class="dot" style="background:#FF5F57"></span>
            <span class="dot" style="background:#FEBC2E"></span>
            <span class="dot" style="background:#28C840"></span>
            <span class="url">/devloop/p-731042/ops/changelog</span>
          </div>
          <svg viewBox="0 0 1100 480" width="100%" role="img" aria-label="Changelog wireframe">
            <rect width="1100" height="480" fill="#FAF7F1"/>
            <rect x="0" y="0" width="1100" height="48" fill="#0E0E10"/>
            <text x="20" y="32" font-family="Fraunces" font-size="16" fill="#FAF7F1">Changelog · p-731042</text>

            <!-- Filter tabs -->
            <rect x="20" y="68" width="80" height="26" rx="13" fill="#0E0E10"/>
            <text x="60" y="85" font-family="JetBrains Mono" font-size="11" text-anchor="middle" fill="#FAF7F1">all · 8</text>
            <rect x="108" y="68" width="80" height="26" rx="13" fill="#ECE4FB" stroke="#6E48C3"/>
            <text x="148" y="85" font-family="JetBrains Mono" font-size="11" text-anchor="middle" fill="#6E48C3">prd · 3</text>
            <rect x="196" y="68" width="80" height="26" rx="13" fill="#fff" stroke="#0E0E10"/>
            <text x="236" y="85" font-family="JetBrains Mono" font-size="11" text-anchor="middle">sdd · 4</text>
            <rect x="284" y="68" width="80" height="26" rx="13" fill="#fff" stroke="#0E0E10"/>
            <text x="324" y="85" font-family="JetBrains Mono" font-size="11" text-anchor="middle">units · 1</text>

            <!-- Timeline -->
            <line x1="50" y1="120" x2="50" y2="460" stroke="#dcd5c4" stroke-width="2" stroke-dasharray="3 3"/>

            <circle cx="50" cy="140" r="8" fill="#6E48C3"/>
            <rect x="80" y="118" width="1000" height="50" rx="6" fill="#fff" stroke="#dcd5c4"/>
            <text x="96" y="138" font-family="JetBrains Mono" font-size="10" fill="#6E48C3" font-weight="700">PRD · rev 3 · 10:31:42 · yibo (human_feedback)</text>
            <text x="96" y="156" font-family="Fraunces" font-size="13" fill="#0E0E10">+ OAuth 登录,影响 auth-mw 新增</text>

            <circle cx="50" cy="200" r="8" fill="#0E0E10"/>
            <rect x="80" y="178" width="1000" height="50" rx="6" fill="#fff" stroke="#dcd5c4"/>
            <text x="96" y="198" font-family="JetBrains Mono" font-size="10" fill="#0E0E10" font-weight="700">SDD · rev 5 · 10:32:08 · architect (prd@rev3)</text>
            <text x="96" y="216" font-family="Fraunces" font-size="13" fill="#0E0E10">3 个新 Unit: oauth-be / oauth-fe / auth-mw</text>

            <circle cx="50" cy="260" r="8" fill="#0E0E10"/>
            <rect x="80" y="238" width="1000" height="50" rx="6" fill="#fff" stroke="#dcd5c4"/>
            <text x="96" y="258" font-family="JetBrains Mono" font-size="10" fill="#0E0E10" font-weight="700">SDD · rev 6 · 10:42:13 · architect (triage_patch)</text>
            <text x="96" y="276" font-family="Fraunces" font-size="13" fill="#0E0E10">L2 修复: auth-be 401 明确</text>

            <circle cx="50" cy="320" r="8" fill="#C77C2C"/>
            <rect x="80" y="298" width="1000" height="120" rx="6" fill="#FAF7F1" stroke="#0E0E10"/>
            <text x="96" y="318" font-family="JetBrains Mono" font-size="10" fill="#C77C2C" font-weight="700">UNITS · rev 7 · 10:42:14 · architect (rebuild)</text>
            <text x="96" y="336" font-family="Fraunces" font-size="13" fill="#0E0E10">contract_hash 更新 → 2 个 unit reset 入 L1 重跑</text>
            <text x="96" y="362" font-family="JetBrains Mono" font-size="10" fill="#3B3B40">DIFF:</text>
            <text x="96" y="380" font-family="JetBrains Mono" font-size="10" fill="#0E8C5A">  + auth-mw (added)</text>
            <text x="96" y="396" font-family="JetBrains Mono" font-size="10" fill="#8a6b00">  ~ auth-be (changed contract)</text>
            <text x="96" y="412" font-family="JetBrains Mono" font-size="10" fill="#8a6b00">  ~ auth-fe (changed contract)</text>
            <text x="900" y="318" font-family="JetBrains Mono" font-size="10" fill="#6c6c6c" text-anchor="end">[open archive ↗]</text>
          </svg>
        </div>
      </section>

      <section>
        <h2>每条目录包含</h2>
        <table class="dense">
          <thead><tr><th>字段</th><th>来源</th><th>用途</th></tr></thead>
          <tbody>
            <tr><td>kind</td><td>changelog.ndjson</td><td>颜色 / 图标</td></tr>
            <tr><td>rev + ts + by</td><td>同上</td><td>标题行</td></tr>
            <tr><td>trigger</td><td>同上</td><td>「为什么变」(human_feedback / triage_patch / init)</td></tr>
            <tr><td>summary</td><td>同上</td><td>一句话变更</td></tr>
            <tr><td>diff</td><td>同上</td><td>展开后看 +/~/− section · unit 列表</td></tr>
            <tr><td>archive_ref</td><td>同上</td><td>点开跳归档 HTML</td></tr>
          </tbody>
        </table>
      </section>

      <section>
        <h2>交互</h2>
        <ul>
          <li>顶部 chip 切换 all / prd / sdd / units(kind filter)</li>
          <li>每条点击展开 diff 详情</li>
          <li>「↗ archive」按钮在新 tab 打开归档 HTML(history/{kind}-rev-{N}.html)</li>
          <li>「↗ compare」按钮跳 <a href="proto-prd-diff.html">PrdDiffPanel</a> 与上一 rev 对比</li>
          <li>双击两个条目 → 跨 rev 三方对比(this vs prev vs current)</li>
        </ul>
      </section>

      <section>
        <h2>与 timeline.ndjson 的关系</h2>
        <p>changelog 是 timeline 的<b>子集 + 增强</b>:</p>
        <ul>
          <li>timeline 包含<b>所有</b>事件(agent 启动、unit 状态、bug 开关...)</li>
          <li>changelog 只关心<b>文档版本变更</b>,但带有 cheerio diff 详细对比</li>
          <li>两者由 DocStore 同步写入,绝不脱节</li>
        </ul>
      </section>

      <section>
        <h2>关联视图</h2>
        <ul>
          <li>跳 <a href="proto-prd-diff.html">PRD diff 面板</a> 看具体 section 对比</li>
          <li>跳 <a href="ops-loop-log.html">Loop Log</a> 看 rev 变更触发了哪些 L1/L2 跑</li>
          <li>跳 <a href="ops-buglist.html">Buglist</a> 看 rev 变更产生 / 解决了哪些 bug</li>
        </ul>
      </section>

    </article>
    <nav class="prev-next"></nav>
    <footer class="site"><div><b>Section</b>07 · Ops</div><div><b>Page</b>ops-changelog.html</div></footer>
  </main>
</div>
<script src="assets/shell.js"></script>
</body>
</html>