fix(rectification): segment verification report drops the minute leaderboard (BUG-1151)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
28f4df0e07
commit
b62308c4ad
@@ -1,5 +1,10 @@
|
||||
# 印度占星 Skill 更新日志
|
||||
|
||||
## 2026-10-01 — 盘型口径的验证报告不再按分钟排名
|
||||
|
||||
- 交付卡「查看验证报告」在盘型口径下去掉「当前候选基本并列」「本命上升(该分钟)」和「排名 / 时间 / 相对支持」表,保留事件吻合、大运对照和技法审计;已有校正打开报告即生效(BUG-1151)。
|
||||
- 旧的分钟口径报告不变。Skill 版本不变;不改数据库结构。
|
||||
|
||||
## 2026-10-01 — 采用后的核对题可以作答了;交付收尾那句话不再丢
|
||||
|
||||
- 修复:采用后的核对题点任何选项都提示「这次没提交上」。现在能正常作答(BUG-1150)。
|
||||
|
||||
@@ -15467,3 +15467,19 @@
|
||||
- 相关记录:BUG-912、BUG-498、BUG-1146、BUG-1149。
|
||||
- 复发自:无
|
||||
- 修复版本:`codex/rectification-post-adopt-verify-20261001`。
|
||||
|
||||
## BUG-1151 | 盘型口径的验证报告仍按分钟排名,与卡片「D9 较可信」打架
|
||||
|
||||
- 状态:resolved(2026-10-01 Claude 直接执行;产品 10-01 选 A)
|
||||
- 首次发现 / 最近更新:2026-10-01 / 2026-10-01
|
||||
- 影响面:`v9/skill-verification-report.ts::buildSkillVerificationPacket`(新增 `segmentProduct`)、`mastra/rectification-v9-tools.ts`(盘型口径报告打开开关)。报告每次读取时现算,已有校正打开即生效。
|
||||
- 用户现象:交付卡「查看验证报告」里写「当前候选基本并列:04:53、05:06…」「本命上升(该分钟)」,并附「排名 / 时间 / 相对支持」表;卡片顶部却是「D9 天蝎(较可信)」。
|
||||
- 根因:盘型口径实现(BUG-1115~1117)只在报告前加了盘型摘要与「只供引擎诊断」一句,并删掉 D9/D10 换升行;八法报告的筛选段与候选窗表仍是分钟口径。
|
||||
- 决策记录:产品 10-01 选 A——盘型口径下报告去掉分钟排名表、并列/代表分钟行、「本命上升(该分钟)」;保留不可分宽度、事件吻合、Dasha 表与技法审计。分钟口径(旧案例)报告逐字不变。
|
||||
- 修复:`segmentProduct` 为真时不输出上述三处;盘型口径报告传 `segmentProduct: segmentReport`。
|
||||
- 验证:`frontend/tests/rectification-product-delivery.test.ts`(真引擎 golden)新增断言:盘型口径报告不含「当前候选基本并列 / 当前代表分钟 / 本命上升(该分钟)/ 相对支持 / 候选窗」,仍含「不可分宽度」「Technique Audit Table」;分钟口径仍含排名表与「本命上升(该分钟)」。去掉开关时 15 条红。
|
||||
- 防复发:盘型口径的用户可见面(气泡、卡片、报告)都不得出现分钟排名。
|
||||
- 相关记录:BUG-1115~1117、BUG-1147。
|
||||
- 复发自:无
|
||||
- 修复版本:`codex/rectification-post-adopt-verify-20261001`。
|
||||
|
||||
|
||||
@@ -55,3 +55,7 @@ Python 快速门:本单不改 `scripts/**`、`tests/**`,未跑。`test:db`
|
||||
同根问题:交付收尾补写轮次的 `<id>:gate` 请求号也不是 uuid,一并修。真机反映的「选中后旁白和卡片消失一会儿」本机无浏览器未复现;采用路径现在不再发只读续跑、收尾句能落库,待真机复测,复现则请录屏。
|
||||
|
||||
第二轮门禁(`52495df7`,基线 staging `fa6d026f`):tsc 0、lint 0 error、用例 4866(失败 24 条与 f1a169cb 基线逐条一致、cancelled 0;唯一「缺失」名为 c0f05912 改名)、`/` ○ Static、首屏 gzip JS 555,642、镜像 COPY 布局构建通过;真库重放 8 条中可采用的 1 条:采用轮次写入、作答成功。
|
||||
|
||||
## 第三轮:验证报告去分钟排名(BUG-1151,产品选 A)
|
||||
|
||||
`buildSkillVerificationPacket` 加 `segmentProduct`;盘型口径不出并列/代表分钟行、「本命上升(该分钟)」、候选窗排名表。golden 测试加断言,去开关 15 条红。
|
||||
|
||||
@@ -265,7 +265,7 @@
|
||||
| `TASK-rectification-chart-tier-caveats-20261001.md` | — | **报告与聊天标注判断不了的分盘**:采用后读 `active_birth_provenance`(segment-v1)→ 结果 `segment_summary` 档位,blocked/indistinct 的 D9/D10 在聊天 answer_policy 与一句说明、报告章节顶部提示 + 主题降级;旧资料逐字节不变;不改库、不改 consult/route.ts | 待领取 | BUG-1138~1139 |
|
||||
| `TASK-rectification-angle-timing-research-20261001.md` | `PROGRESS-rectification-angle-timing-research-20261001.md` | **角度类时间技法研究(离线)**:行运土木罗压本命上升 / 天顶度数、次限推运角、太阳弧角(1° ≈ 4 分钟出生时间),77 例 v5;乱序日期对照 ≥ 50 次必做、留一法、不得挤出真值;显著才叠加到六题后验比头段命中与区间宽度 | 已实现待验收(0/9 预登记检验显著,BUG-1141 closed_by_design;分支 codex/rectification-angle-timing-research-20261001,未推送) | BUG-1141 |
|
||||
| (直接执行,无任务书) | `PROGRESS-rectification-segment-order-20261001.md` | **健康区分题写入失败(BUG-1143)+ 按盘型挑题默认开启(BUG-1144)**:区分类焦点把 `health_pressure` 原样写入、违反表约束、写入被吞后提前交付(BUG-672 同族);修后 77 例真库回放平均问题数 ±10 2.8→4.6、±30 3.6→5.4,D10 头段 ±30 39→52;按段选题 ≤61 分钟默认开,±30 D9 46→51、D10 52→55,真值段 76/76 | 已验收(Claude 10-01 直接执行) | 分支 codex/rectification-segment-order-20261001 |
|
||||
| (直接执行,无任务书) | `PROGRESS-rectification-post-adopt-card-20261001.md` | **采用后核对题无按钮(BUG-1146)+ 盘型口径回复念分钟排名(BUG-1147)**:keep 分支丢探针身份致 GET 空卡(BUG-498 复发);采用接口不写轮次、只读运行被 60 秒交付窗口挡掉,题挂到上一题回复下;改为采用接口写「已采用 HH:MM。再核对一件过去的事。」轮次并挂题。盘型口径下去掉「领先 / 落后」、交付旁白不再说「分不开」、边界句只说一次 | 已验收(Claude 10-01 直接执行);真机回报后补修 BUG-1149(请求号非 uuid 被真库拒写)、BUG-1150(核对题作答 stale_probe),本机真库重放通过;真机清单 `docs/testing/rectification-post-adopt-card-20261001.md` | 分支 codex/rectification-post-adopt-verify-20261001 |
|
||||
| (直接执行,无任务书) | `PROGRESS-rectification-post-adopt-card-20261001.md` | **采用后核对题无按钮(BUG-1146)+ 盘型口径回复念分钟排名(BUG-1147)**:keep 分支丢探针身份致 GET 空卡(BUG-498 复发);采用接口不写轮次、只读运行被 60 秒交付窗口挡掉,题挂到上一题回复下;改为采用接口写「已采用 HH:MM。再核对一件过去的事。」轮次并挂题。盘型口径下去掉「领先 / 落后」、交付旁白不再说「分不开」、边界句只说一次 | 已验收(Claude 10-01 直接执行);真机回报后补修 BUG-1149(请求号非 uuid 被真库拒写)、BUG-1150(核对题作答 stale_probe),本机真库重放通过;BUG-1151 盘型报告去分钟排名(产品选 A);真机清单 `docs/testing/rectification-post-adopt-card-20261001.md` | 分支 codex/rectification-post-adopt-verify-20261001 |
|
||||
| `TASK-rectification-typed-event-scoring-research-20260929.md` | `PROGRESS-rectification-typed-event-research-20260929.md` | **打字经历按选择题规则计分(离线研究,不上线)**:计分通道不对称 + 已入账年份挡题;R0 学业质量题措辞 / 年精度显示成 1 月(冻结文件,需重新冻结) | 已验收关单(Claude 10-01:三类技法 9 项检验 0 显著,真值平均排位 0.49~0.59;Claude 补正对照——埋入信号排位 0.077、挪年 0.502——流程有效;BUG-1141 closed_by_design) | BUG-1088、1089 |
|
||||
| `TASK-report-reader-polish-20260929.md` | `PROGRESS-report-reader-polish-20260929.md` | **报告页打磨**:生成入口挪进页面主体(删标题栏按钮)、详情页到底部按钮(懒渲染一次到底)、导出按钮带文字、目录一级/二级分层、去掉「字段」与 RL/NL 缩写表头、状态列同义重复去重、报告表格淡底色、分块导出显示真实文件大小 | Claude 直接执行并自验(tsc 0、lint 0 error、全量 fail 与基线同 24 条、`/` Static、gzip +7 B、快速门 Python 1000 passed),已部署 staging `d7772011`,真机欠 | BUG-1092~1094 |
|
||||
| `TASK-report-english-edition-20260929.md` | `PROGRESS-report-english-edition-20260929.md` | **报告中英两版**:同一次引擎计算渲染 zh/en 两遍(不用模型翻译),瑜伽库 477 条补英文、模板与前端表头英文化;中文逐字节不变、英文零汉字、两版数字序列一致;阅读页 `?lang=en` 切换,导出当前语言 + 「问 AI 建议导出英文版」提示;旧报告不补英文 | Claude 直接执行(含两个 fork 子代理)并自验(tsc 0、lint 0 error、全量 fail 与基线同 24 条、`/` Static、gzip +0.06%、Python 定向全绿),已部署 staging `d7772011`,真机欠 | — |
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
4. **刷新**:刷新页面,核对题还在、四个按钮还在、仍挂在那条采用消息下面。
|
||||
5. **答核对题**:点一个按钮,不出现「这次没提交上」,能进入下一题或看到「前事核对到这里…」。
|
||||
5a. **选中时**:点「更像这个」后,上面的旁白和卡片不应消失;如果仍消失一下,请录屏发给 Claude。
|
||||
5b. **验证报告**:交付卡点「查看验证报告」,里面没有「当前候选基本并列」「本命上升(该分钟)」和「排名 / 时间 / 相对支持」表。
|
||||
6. **旧校正会话**:从会话列表打开一个以前的校正会话,能打开、不报错。
|
||||
|
||||
有任何一项不符,截图发给 Claude。
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@ This file adapts the full visual analysis in `CLAUDE_DESIGN.md` to the shipped J
|
||||
|
||||
## 校正按盘型交付(2026-09-30,在途,BUG-1115~1117)
|
||||
|
||||
复用范围卡布局:主行逐张写目标盘的上升与可信档位,分钟范围降为次行。完整扫描缺失时明确不能证明全窗一致;超过 61 分钟的 D9/D10 不作解读推荐。采用按钮沿用旧 owner/result/candidate 与门控,不另造候选:采用服务端头段交集/优先级/clamp 后的实际日期和分钟。已采用状态只认服务端核验的 result、候选锚点、date/time 与 segment provenance 身份,不能仅凭钟点相同点亮;只读与锁门仍禁用。来源偏移按实际采用日历日期计算,原填报资料保留,采用不等于确认。不增加 Home 状态、等待动画或新输入框。当前自动化/真机验收未闭环,不视作上线完成。
|
||||
复用范围卡布局:主行逐张写目标盘的上升与可信档位,分钟范围降为次行。完整扫描缺失时明确不能证明全窗一致;超过 61 分钟的 D9/D10 不作解读推荐。采用按钮沿用旧 owner/result/candidate 与门控,不另造候选:采用服务端头段交集/优先级/clamp 后的实际日期和分钟。已采用状态只认服务端核验的 result、候选锚点、date/time 与 segment provenance 身份,不能仅凭钟点相同点亮;只读与锁门仍禁用。来源偏移按实际采用日历日期计算,原填报资料保留,采用不等于确认。不增加 Home 状态、等待动画或新输入框。当前自动化/真机验收未闭环,不视作上线完成。折叠的「查看验证报告」同样不出分钟排名:无并列/代表分钟行、无「本命上升(该分钟)」、无候选排名表(BUG-1151)。
|
||||
|
||||
### 新产品缺扫描与部分扫描(T4 子组,在途)
|
||||
|
||||
|
||||
@@ -62,6 +62,11 @@ export type SkillVerificationReportInput = Readonly<{
|
||||
holdoutReservationStatus?: "reserved" | "not_reserved_min_events";
|
||||
separation?: CandidateSeparation;
|
||||
engineResultId?: string | null;
|
||||
/**
|
||||
* Segment (盘型) product (BUG-1151, product 10-01 option A): the report carries no minute
|
||||
* leaderboard — no tie/representative line, no 「本命上升(该分钟)」, no candidate-rank table.
|
||||
*/
|
||||
segmentProduct?: boolean;
|
||||
}>;
|
||||
|
||||
export function signByCandidateFromTransitions(
|
||||
@@ -179,11 +184,11 @@ export function buildSkillVerificationPacket(input: SkillVerificationReportInput
|
||||
"这是当前窗的相对拟合,标签是 `candidate_range_not_birth_time_truth`。采用只会把代表性时间写入当前排盘,不是已确认的唯一出生分钟。",
|
||||
"",
|
||||
"### 筛选",
|
||||
tied
|
||||
...(input.segmentProduct ? [] : [tied
|
||||
? `- 当前候选基本并列:${(input.separation?.credibleRange ?? []).join("、") || "尚未拉开"}。${time} 只是后续计算的代表点,不是赢家。`
|
||||
: `- 当前代表分钟:${time}`,
|
||||
: `- 当前代表分钟:${time}`]),
|
||||
`- 不可分宽度:${width}`,
|
||||
`- 本命上升(该分钟):${lagna}`,
|
||||
...(input.segmentProduct ? [] : [`- 本命上升(该分钟):${lagna}`]),
|
||||
d9Differs
|
||||
? "- D9 仍会换升。这是候选结构差异,应生成区分探针,不能直接宣布不可分。"
|
||||
: "- D9 上升在当前窗较稳。",
|
||||
@@ -191,11 +196,13 @@ export function buildSkillVerificationPacket(input: SkillVerificationReportInput
|
||||
? "- D10 仍会换升。这是候选结构差异,应生成区分探针,不能直接宣布不可分。"
|
||||
: "- D10 上升在当前窗较稳。",
|
||||
"",
|
||||
"### 候选窗(正文复述;卡片仍作采用控件)",
|
||||
"| 排名 | 时间 | 相对支持 |",
|
||||
"|---|---|---|",
|
||||
...(candidateLines.length > 0 ? candidateLines : ["| — | — | 还没有可出示的候选 |"]),
|
||||
"",
|
||||
...(input.segmentProduct ? [] : [
|
||||
"### 候选窗(正文复述;卡片仍作采用控件)",
|
||||
"| 排名 | 时间 | 相对支持 |",
|
||||
"|---|---|---|",
|
||||
...(candidateLines.length > 0 ? candidateLines : ["| — | — | 还没有可出示的候选 |"]),
|
||||
"",
|
||||
]),
|
||||
"### 各候选分盘上升(只抄本表)",
|
||||
"| 时间 | D9 | D10 |",
|
||||
"|---|---|---|",
|
||||
|
||||
@@ -551,6 +551,7 @@ export function latestResultToolProjection(
|
||||
? "reserved" : "not_reserved_min_events",
|
||||
separation: decision.separation,
|
||||
engineResultId: latest.resultId,
|
||||
segmentProduct: segmentReport,
|
||||
});
|
||||
const protectedPacket = segmentReport ? {
|
||||
...skillPacket,
|
||||
|
||||
@@ -71,12 +71,19 @@ for (const domain of [null, "marriage", "career", "general", "report", "other"]
|
||||
assert.match(markup, /目前范围/);
|
||||
assert.doesNotMatch(markup, /用哪张盘解读/);
|
||||
assert.doesNotMatch(narration + stopped + report, /上升盘型暂未知|representative_diagnostic_not_adopted_chart/);
|
||||
// BUG-1151: the minute product keeps its leaderboard.
|
||||
assert.match(report, /\| 排名 \| 时间 \| 相对支持 \|/);
|
||||
assert.match(report, /本命上升(该分钟)/);
|
||||
} else {
|
||||
assert.deepEqual(delivery.product_delivery, productDeliveryForDomain(domain));
|
||||
assert.match(markup, /用哪张盘解读/);
|
||||
assert.doesNotMatch(markup, /最可能/);
|
||||
assert.doesNotMatch(narration + stopped + timeline?.workingLabel, /目前范围|眼下更像|代表分钟 \d/);
|
||||
assert.match(report, /只供引擎诊断/);
|
||||
// BUG-1151 (product 10-01 option A): no minute leaderboard in the segment report.
|
||||
assert.doesNotMatch(report, /当前候选基本并列|当前代表分钟|本命上升(该分钟)|相对支持|候选窗/);
|
||||
assert.match(report, /不可分宽度/);
|
||||
assert.match(report, /Technique Audit Table/);
|
||||
const nestedMissing = { ...delivery };
|
||||
delete nestedMissing.product_delivery;
|
||||
const recovered = parseRectificationCandidateResult({ ...projected, rangeDelivery: nestedMissing });
|
||||
|
||||
Reference in New Issue
Block a user