From ec3de1f19e6c1c74e7857afd990cbb7c17146cf4 Mon Sep 17 00:00:00 2001 From: xcs Date: Thu, 27 Aug 2026 00:05:24 +0800 Subject: [PATCH] =?UTF-8?q?fix(w05):=20landing-confirm=20=E7=9A=84=20reque?= =?UTF-8?q?st=5Fstatus=20/=20current=5Fstage=20=E6=94=B9=E5=BE=BD=E6=A0=87?= =?UTF-8?q?=20=E2=80=94=E2=80=94=20=E6=94=BE=E8=A1=8C=E7=AD=BE=E5=AD=97?= =?UTF-8?q?=E9=A1=B5=E4=B8=8D=E5=86=8D=E6=91=86=20ASCII=20=E6=9C=BA?= =?UTF-8?q?=E5=99=A8=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 审查发现 P01_TABLE 的需求状态(tally 列)与当前阶段仍用 ro() 直显原值,把 responded/gate03 这类机器码摆在了放行签字页上(本仓栽过两次同款:BT 层级、key_person_change)。改用 tag() + data-class-of 投影,EXTRA_CSS 补 t-reqstat(五档)与 t-stage(assessing/gate03 两档,取值域 由本活动写死)人读名;台账写入值不变,requiredWhen 机检仍读原值。测试组「枚举列只用 data-class-of 投影」扩到 landing-confirm 的四个枚举列(含既有的 analysis_status / recommendation_level),把这次的回归钉死。 Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01FJcX8A6TWp4GRs41TYryEh --- .../__tests__/activity.test.ts | 5 +++++ .../src/views/report.ts | 16 ++++++++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/activities/part-substitution-assessment/__tests__/activity.test.ts b/activities/part-substitution-assessment/__tests__/activity.test.ts index e1770a8..5eb036c 100644 --- a/activities/part-substitution-assessment/__tests__/activity.test.ts +++ b/activities/part-substitution-assessment/__tests__/activity.test.ts @@ -226,6 +226,11 @@ describe('报告模版:编辑面与只读面各就各位', () => { expect(viewHtml('difference-review')).toContain('data-class-of="difference_status"'); expect(viewHtml('difference-review')).toContain('data-class-of="recommendation_level"'); expect(viewHtml('difference-review')).not.toContain('data-slot="difference_status"'); + const landing = viewHtml('landing-confirm'); + for (const col of ['request_status', 'current_stage', 'analysis_status', 'recommendation_level']) { + expect(landing, col).toContain(`data-class-of="${col}"`); + expect(landing, col).not.toContain(`data-slot="${col}"`); + } }); it('宿主拒推含脚本的模版', async () => { diff --git a/activities/part-substitution-assessment/src/views/report.ts b/activities/part-substitution-assessment/src/views/report.ts index 32d3828..ceb3637 100644 --- a/activities/part-substitution-assessment/src/views/report.ts +++ b/activities/part-substitution-assessment/src/views/report.ts @@ -282,6 +282,18 @@ const EXTRA_CSS = ` .proto-root .jc-tag.t-risk.v-low { color: var(--ok); background: var(--ok-soft); } .proto-root .jc-tag.t-risk.v-medium { color: var(--warn-accent); background: var(--warn-soft); } .proto-root .jc-tag.t-risk.v-high, .proto-root .jc-tag.t-risk.v-critical { color: var(--danger); background: var(--danger-soft); } +/* + * 需求状态(P-01 tally 列)与当前阶段(自由文本,但活动只写 assessing/gate03 两个机器码)—— + * 落账确认件是放行签字页,不许把机器码摆给签字的人看(本仓栽过两次同款:BT 层级、 + * key_person_change);current_stage 的取值域由本活动自己写死,两档映射即完整。 + */ +.proto-root .jc-tag.t-reqstat.v-pending::after { content: "待处理"; } +.proto-root .jc-tag.t-reqstat.v-responded::after { content: "已响应"; } +.proto-root .jc-tag.t-reqstat.v-won::after { content: "已成交"; } +.proto-root .jc-tag.t-reqstat.v-abandoned::after { content: "已放弃"; } +.proto-root .jc-tag.t-reqstat.v-closed::after { content: "已关闭"; } +.proto-root .jc-tag.t-stage.v-assessing::after { content: "评估中"; } +.proto-root .jc-tag.t-stage.v-gate03::after { content: "提交 ACT-GATE-03"; } /* 绑定区:四项锁定的灰底只读行 */ .proto-root .jc-bound { display: grid; grid-template-columns: 140px 1fr; gap: 6px 14px; padding: 10px 14px; margin: 8px 0 14px; background: var(--soft); border: 1px solid var(--line-soft); border-radius: 9px; font-size: 13px; } .proto-root .jc-bound b { color: var(--ink-3); font-weight: 600; } @@ -677,8 +689,8 @@ const P01_TABLE = `
- - + +
${ro('verification_requirement')} ${ro('output_ref', 'mono')} ${ro('next_action')}${ro('current_stage', 'mono')}${ro('request_status', 'mono')}${tag('t-stage', 'current_stage')}${tag('t-reqstat', 'request_status')}
`;