Files
wangjia d0aa53c79d fix(usage): 修按天分桶时区错位 + 区分账号额度/maestro用量口径 + 成本说明文档 (tsk_JKAzHuXvSw7h)
全局面板「用量」数据问题修复与澄清:

1. 时区分桶根因(store.ts):按天/周/月分桶与今天/本月窗口起点原全用 UTC,
   UTC+8 用户本地 00:00–08:00 的 run 被算进前一天、当天窗口晚 8h → 柱状图偏移
   一天、当天偏小。新增 localDay/localMonth,periodStartISO/weekStartLabel/
   usageDetail 改用 daemon 本地时区(SQL 比绝对时刻仍正确)。

2. UI 口径区分(design/ui_kits/console):额度条标注账号级含交互会话,AGENT 卡/
   详情弹框标注仅统计 maestro 任务执行,$ 加 API 列表价估算非实际扣费提示并以 ≈
   前缀,模型列加近似角标。新增 4 个 i18n key×5 语言。

3. 文档:新增 docs/usage-cost-explained.html(两数据源/为何对不上/cost 公式/
   单价表/本地时区分桶/已知近似),登记进 docs/index.html 知识库调研。

4. 测试:budget.test.ts 新增 UTC+8 跨日分桶用例。typecheck + 268 测试全绿。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-30 09:18:36 +08:00

114 lines
9.5 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Maestro · 文档索引</title>
<link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,400;0,500;0,600;1,400&display=swap" rel="stylesheet">
<style>
:root{--bg:#0d0d0d;--bg2:#141414;--bg3:#1a1a1a;--border:#252525;--border2:#333;--text:#e8e8e8;--text2:#a0a0a0;--text3:#555;--cyan:#00d4d4;--cyan2:#009999;--green:#4ec94e;--green2:#2d6e2d;--amber:#f0a500;--amber2:#9c6a00;--violet:#9b7bff;--violet2:#6644cc;--red:#ff5555;--red2:#aa2222;--blue:#5599ff;--blue2:#2255cc;--code-bg:#0a0a0a;--shadow:0 4px 32px rgba(0,0,0,.7)}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:'IBM Plex Mono',monospace;background:var(--bg);color:var(--text);font-size:13px;line-height:1.7}
.topbar{position:sticky;top:0;z-index:100;background:var(--bg2);border-bottom:1px solid var(--border);height:48px;display:flex;align-items:center;padding:0 24px;gap:12px}
.topbar-brand{font-size:13px;font-weight:600;color:var(--cyan);letter-spacing:.06em}
.topbar-sub{font-size:11px;color:var(--text3)}
.wrap{max-width:1000px;margin:0 auto;padding:32px 24px 80px}
.lead{font-size:13px;color:var(--text2);margin:0 0 28px;line-height:1.8}
.lead strong{color:var(--text)}
.cat{margin:0 0 30px}
.cat-hdr{display:flex;align-items:center;gap:10px;font-size:15px;font-weight:600;color:var(--text);margin:0 0 14px;padding-bottom:8px;border-bottom:1px solid var(--border)}
.cat-hdr .ico{font-size:11px;color:var(--cyan);border:1px solid var(--cyan2);border-radius:4px;padding:1px 7px}
.cat-hdr .cnt{font-size:11px;color:var(--text3);font-weight:400}
.doc{display:block;background:var(--bg2);border:1px solid var(--border);border-left:3px solid var(--border2);border-radius:6px;padding:14px 16px;margin:0 0 10px;text-decoration:none;color:inherit;transition:border-color .15s,background .15s}
.doc:hover{border-color:var(--cyan2);border-left-color:var(--cyan);background:var(--bg3)}
.doc.plan{border-left-color:var(--violet2)}
.doc.plan:hover{border-left-color:var(--violet)}
.doc.src{border-left-color:var(--amber2)}
.doc.src:hover{border-left-color:var(--amber)}
.doc-ttl{font-size:14px;font-weight:600;color:var(--text)}
.doc:hover .doc-ttl{color:var(--cyan)}
.doc.plan:hover .doc-ttl{color:var(--violet)}
.doc.src:hover .doc-ttl{color:var(--amber)}
.doc-path{font-size:11px;color:var(--text3);margin:3px 0 6px}
.doc-desc{font-size:12px;color:var(--text2);line-height:1.7}
.tags{margin-top:8px;display:flex;gap:6px;flex-wrap:wrap}
.tag{font-size:10px;padding:1px 7px;border-radius:3px;border:1px solid}
.tag.design{color:var(--blue);border-color:var(--blue2);background:rgba(85,153,255,.08)}
.tag.plan{color:var(--violet);border-color:var(--violet2);background:rgba(155,123,255,.08)}
.tag.src{color:var(--amber);border-color:var(--amber2);background:rgba(240,165,0,.08)}
.tag.html{color:var(--cyan);border-color:var(--cyan2);background:rgba(0,212,212,.08)}
.tag.md{color:var(--text2);border-color:var(--border2);background:rgba(255,255,255,.03)}
.empty{font-size:12px;color:var(--text3);font-style:italic;padding:6px 2px}
.foot{margin-top:36px;font-size:11px;color:var(--text3);border-top:1px solid var(--border);padding-top:14px}
</style>
</head>
<body>
<div class="topbar">
<span class="topbar-brand">MAESTRO</span>
<span class="topbar-sub">· 文档索引 / docs index</span>
</div>
<div class="wrap">
<p class="lead">Maestro 项目全部文档的单一入口。按 <strong>设计方案 / 实现计划 / 知识库调研 / 排障 Runbook</strong> 分类汇总(HTML 与历史 MD 都列)。<strong>新增文档须同时登记此处。</strong></p>
<!-- ── 设计方案 ── -->
<div class="cat">
<div class="cat-hdr"><span class="ico">设计</span> 设计方案 / 架构设计 <span class="cnt">· 2</span></div>
<a class="doc" href="architecture.html">
<div class="doc-ttl">MAESTRO · 架构设计</div>
<div class="doc-path">docs/architecture.html</div>
<div class="doc-desc">系统整体架构设计:进程模型(daemon 唯一 DB 写者 / worker 文件协议)、前后端、数据流、调度与执行管道总览。</div>
<div class="tags"><span class="tag design">架构</span><span class="tag html">HTML</span></div>
</a>
<a class="doc" href="optimization-plan.html">
<div class="doc-ttl">三类任务执行方法优化方案 · 含实现状态</div>
<div class="doc-path">docs/optimization-plan.html</div>
<div class="doc-desc">三类后台 agent(① 拆解 / ② 执行+双复审 / ③ 解冲突)的六维优化定稿 + 通用规则 + 状态机/ER 图 + Agent 记忆注入 L1L4。顶部 <strong>★ 实现状态</strong>表给出每个优化点 → 提交对照(2026-06-25 全部上线,含 3 个线上实测 bug 修复)。含<strong>模型按项目可配置(默认 opus-4.8)</strong><strong>diff 声明外文件硬闸</strong></div>
<div class="tags"><span class="tag design">优化方案</span><span class="tag html">HTML</span></div>
</a>
</div>
<!-- ── 实现计划 ── -->
<div class="cat">
<div class="cat-hdr"><span class="ico">计划</span> 实现计划 <span class="cnt">· 2</span></div>
<a class="doc plan" href="superpowers/plans/2026-06-22-maestro-refactor-phase1.html">
<div class="doc-ttl">Maestro 大重构全景 · 现状 → 目标 → 计划</div>
<div class="doc-path">docs/superpowers/plans/2026-06-22-maestro-refactor-phase1.html</div>
<div class="doc-desc">扁平 FSM → <strong>schedule_status × work_type</strong> 正交模型的完整技术蓝图(HTML 阅读版)。四标签:现状架构 / 重构目标 / 设计方案 / 具体实现。专题含:状态设计、<strong>任务提交与入口(网页/MCP/todo 同步三入口·图片文件附件·AI 提任务)</strong>、并发调度(CAS·couplingPenalty)、<strong>交互平面·stuck 人工接管</strong>、数据库 SchemaER 图)、Agent 记忆注入 L1L4、<strong>Agent 规格与注册表(每 agent 流程/模型/skill/prompt/上下文 + 动态扩展)</strong><strong>运维与护栏(成本预算治理·限流背压·资源 GC·可观测·依赖环检测)</strong><strong>安全与沙箱</strong><strong>前端 API 契约(REST 全量 + WS 事件)</strong>、Phase 1 逐步实施计划。全部图表为深色内联 SVG(自包含、无 CDN)。</div>
<div class="tags"><span class="tag plan">实现计划</span><span class="tag design">设计</span><span class="tag html">HTML 阅读版</span></div>
</a>
<a class="doc src" href="superpowers/plans/2026-06-22-maestro-refactor-phase1.md">
<div class="doc-ttl">同上 · Markdown 执行真相源</div>
<div class="doc-path">docs/superpowers/plans/2026-06-22-maestro-refactor-phase1.md</div>
<div class="doc-desc">上面 HTML 的同源 <code>.md</code>,保留 <code>- [ ]</code> checkbox 供 executing-plans / subagent-driven-development 驱动执行跟踪。<strong>.md 是执行真相源,.html 仅供阅读。</strong></div>
<div class="tags"><span class="tag src">执行真相源</span><span class="tag md">MD</span></div>
</a>
</div>
<!-- ── 知识库调研 ── -->
<div class="cat">
<div class="cat-hdr"><span class="ico">调研</span> 知识库调研 <span class="cnt">· 2</span></div>
<a class="doc" href="usage-cost-explained.html">
<div class="doc-ttl">用量与成本计算说明 · 数据源口径 + cost 公式 + 时区分桶</div>
<div class="doc-path">docs/usage-cost-explained.html</div>
<div class="doc-desc">讲清全局面板「用量」的<strong>两个互不相交数据源</strong>:① 账号级订阅额度(<code>usage.ts</code> 直连 oauth/usage,含你自己的 Claude Code 交互会话)vs ② maestro 自有 run 的 cost/token<code>cc.ts→ingest→store</code>,仅任务执行)——这就是「只有 maestro 在跑却有其他 token 消费」的真相。含 <strong>cost 公式</strong>(四类 token × 各模型单价 / 1e6,引自 <code>pricing.ts</code> 单价表)、<strong>按天/周/月分桶规则与本地时区口径</strong>(修复 UTC 偏移一天 bug)、<strong>$ 为 API 列表价名义估算非订阅实账单</strong>、分模型 token 近似与未知模型记 0 两项已知近似。</div>
<div class="tags"><span class="tag html">HTML</span><span class="tag design">用量/成本</span></div>
</a>
<a class="doc" href="task-rules.html">
<div class="doc-ttl">任务执行规则参考 · 当前实现</div>
<div class="doc-path">docs/task-rules.html</div>
<div class="doc-desc">后台 agent 处理任务的<strong>当前线上规则</strong>(非提案):复杂度路由(easy/medium/hard)+ 四类执行路径——① 任务拆解(HARD,只读 planner26 子任务·depth≤4·5 字段·三段输出·落库·审批·子任务调度)· ② 方案撰写(MEDIUM)· ③ 任务执行(executorworktree + verify/checks/diff/双复审硬闸 + auto-merge)· ④ 解冲突(conflict,真 git merge + P0 插队)。含<strong>跨类通用规则</strong><strong>模型档位</strong>(默认 opus-4-8 + 项目可配 + 回退链)、<strong>关键状态转移表</strong></div>
<div class="tags"><span class="tag html">HTML</span><span class="tag design">规则参考</span></div>
</a>
</div>
<!-- ── 排障 Runbook ── -->
<div class="cat">
<div class="cat-hdr"><span class="ico">排障</span> 排障 Runbook <span class="cnt">· 0</span></div>
<div class="empty">(暂无)</div>
</div>
<div class="foot">单一入口 · 直接 file:// 打开 · 新增 / 迁移文档请同步登记本页。</div>
</div>
</body>
</html>