|
<!doctype html> |
|
<html lang="zh-Hant"> |
|
<head> |
|
<meta charset="utf-8"> |
|
<meta name="viewport" content="width=device-width, initial-scale=1"> |
|
<title>PLS Capability Repair Dispatch Console</title> |
|
<style> |
|
:root{--ink:#17212b;--muted:#627080;--line:#d8dee7;--bg:#f6f8fb;--panel:#fff;--blue:#2457d6;--green:#14805a;--amber:#a35f00;--red:#b42318;--soft:#eef2f7} |
|
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;line-height:1.5} |
|
header{background:#fff;border-bottom:1px solid var(--line);padding:22px clamp(18px,4vw,48px)}main{padding:22px clamp(18px,4vw,48px) 48px;display:grid;gap:16px} |
|
h1{margin:0;font-size:clamp(24px,3vw,36px);letter-spacing:0}h2{margin:0 0 12px;font-size:18px}h3{margin:0 0 8px;font-size:15px}p{margin:0 0 10px} |
|
.sub{color:var(--muted);max-width:1120px;margin-top:8px}.tag{display:inline-flex;align-items:center;height:24px;padding:0 8px;border:1px solid var(--line);border-radius:999px;background:#fbfcfe;color:var(--muted);font-size:12px;margin-right:6px} |
|
.grid{display:grid;gap:16px}.cols4{grid-template-columns:repeat(4,minmax(0,1fr))}.cols3{grid-template-columns:repeat(3,minmax(0,1fr))}.cols2{grid-template-columns:repeat(2,minmax(0,1fr))} |
|
.panel{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:16px}.metric{min-height:112px;display:flex;flex-direction:column;justify-content:space-between}.label{font-size:13px;color:var(--muted)}.value{font-size:30px;font-weight:760}.ok{color:var(--green)}.warn{color:var(--amber)}.stop{color:var(--red)} |
|
table{width:100%;border-collapse:collapse;font-size:13px}th,td{border-bottom:1px solid var(--line);padding:10px 8px;text-align:left;vertical-align:top}th{background:#fbfcfe;color:var(--muted)}code{background:var(--soft);border-radius:4px;padding:2px 5px;font-size:12px} |
|
ul{padding-left:18px;margin:0}li{margin:6px 0}.state{border-left:4px solid var(--blue);padding-left:12px}.state.warn{border-color:var(--amber)}.state.stop{border-color:var(--red)} |
|
@media(max-width:980px){.cols4,.cols3,.cols2{grid-template-columns:1fr}} |
|
</style> |
|
</head> |
|
<body> |
|
<header> |
|
<h1>Capability Repair Dispatch Console</h1> |
|
<p class="sub">此專案已完成 D7-D30、dashboard spec、repo-change handoff。現在真正卡點不是再寫文件,而是 PLS dispatch capability:必須把下一輪任務從 project_runner 改派成 repo_change/github_pr,並附上 backend repo。</p> |
|
<p><span class="tag">Owner: Louis</span><span class="tag">Capability owner: PLS</span><span class="tag">Due: 2026-05-25</span><span class="tag">Stop static loops</span></p> |
|
</header> |
|
<main> |
|
<section class="grid cols4"> |
|
<div class="panel metric"><span class="label">Current Loop</span><span class="value stop">wrong</span><span class="label">project_runner repeats static artifact tasks</span></div> |
|
<div class="panel metric"><span class="label">Needed Kind</span><span class="value ok">repo</span><span class="label">repo_change or github_pr</span></div> |
|
<div class="panel metric"><span class="label">Missing Input</span><span class="value warn">1</span><span class="label">PLS backend repository URL/path</span></div> |
|
<div class="panel metric"><span class="label">Next SLA</span><span class="value ok">24h</span><span class="label">attach repo and dispatch implementation</span></div> |
|
</section> |
|
<section class="panel"> |
|
<h2>30 天路徑</h2> |
|
<div class="grid cols4"> |
|
<div class="state"><h3>D1</h3><p>PLS 停止再派 project_runner static pack,補上 backend repo URL/path。</p></div> |
|
<div class="state"><h3>D7</h3><p>repo_change worker 開 branch,實作 migration/API/UI/LINE/dispatch-next。</p></div> |
|
<div class="state"><h3>D14</h3><p>GitHub PR 通過測試與 review,scorecard card 可在 staging render。</p></div> |
|
<div class="state"><h3>D30</h3><p>週節奏上線:Louis approve gate,PLS 自動派 repair/publish/rerun。</p></div> |
|
</div> |
|
</section> |
|
<section class="grid cols2"> |
|
<div class="panel"> |
|
<h2>Purpose-to-Purpose E2E</h2> |
|
<ul> |
|
<li>原始目的:驗證 AI review prediction 是否命中。</li> |
|
<li>已產出:D7/D14/D30、dashboard spec、repo-change handoff。</li> |
|
<li>現在要做:修 PLS dispatch/capability,讓 repo_change worker 接手。</li> |
|
<li>人採用:Louis 只需提供/確認 repo;PLS 派工程 worker;reviewers 用後台 card。</li> |
|
<li>指標改善:停止 artifact loop,進入 PR、部署、週報採用。</li> |
|
</ul> |
|
</div> |
|
<div class="panel"> |
|
<h2>Value / Money Path</h2> |
|
<ul> |
|
<li>省成本:阻止 project_runner 每 10 分鐘重做相同規劃包。</li> |
|
<li>降風險:避免 PLS 誤以為 project 已進 implementation,其實缺 repo。</li> |
|
<li>釋放人力:下一輪 worker 可直接開 PR,不再人工轉譯需求。</li> |
|
<li>營收/轉換:dashboard 進後台後,AI prediction verification 才能被管理層每週採用。</li> |
|
</ul> |
|
</div> |
|
</section> |
|
<section class="panel"> |
|
<h2>Queue Repair Contract</h2> |
|
<table> |
|
<tr><th>Problem</th><th>Required Repair</th><th>Acceptance</th></tr> |
|
<tr><td>Wrong worker kind</td><td>create next job with <code>worker_kinds=["repo_change","github_pr"]</code></td><td>claim output shows repo_change/github_pr, not project_runner</td></tr> |
|
<tr><td>Missing repo</td><td>attach backend repo URL/path to job metadata</td><td>worker can run <code>git status</code> inside repo</td></tr> |
|
<tr><td>Static loop</td><td>mark current project_runner chain as blocked for implementation</td><td>no more generic production pack job until repo task completes</td></tr> |
|
<tr><td>Implementation target</td><td>link previous handoff Gist as spec</td><td>PR description references migration/API/UI/LINE/dispatch-next contract</td></tr> |
|
</table> |
|
</section> |
|
<section class="grid cols3"> |
|
<div class="panel"><h2>Data / API</h2><p>Add dispatch metadata fields: <code>target_repo_url</code>, <code>target_branch</code>, <code>implementation_spec_ref</code>, <code>required_worker_kind</code>, <code>blocked_until_repo_attached</code>.</p></div> |
|
<div class="panel"><h2>Permissions / Audit</h2><p>Only PLS/Louis can attach repo and authorize repo_change. Worker must not invent repo URLs or claim PR success without GitHub output.</p></div> |
|
<div class="panel"><h2>People Sync</h2><p>LINE asks one thing: Louis/PLS confirm backend repo. Everyone else waits until PR/staging exists.</p></div> |
|
</section> |
|
<section class="panel"> |
|
<h2>LINE 草稿</h2> |
|
<p>AI 預測驗證已完成 dashboard implementation spec,但目前 worker 沒有 PLS backend repo,不能開 PR。請 Louis/PLS 補 backend repo URL/path,下一輪改派 repo_change/github_pr worker。驗收:有 branch/PR、migration/API/UI/LINE/dispatch-next 測試通過。</p> |
|
</section> |
|
</main> |
|
</body> |
|
</html> |