ACT-WORK-05:P-08 交回后先 finish 再发 P-10 卡,顺序写死进 guide

实测逮到:人交回 P-08 那张卡(表1+表2)后,模型下一拍直接发了 P-10
的卡,却没先 finish S0d_p08_master——引擎挑工作区画面按"当下还没干完
的第一步"取 view,S0d_p08_master 还 Active 时画面就停在 p08-master-create
不动,人拿到 P-10 的卡却看不见资料表一格,提交闸必然拦死。

两处 guide 补齐先后顺序:S0d_p08_master 交回段落写死"finish 在先、
发卡在后"两步动作串,并点出不收步的后果(画面停在哪);S0d_p10_document
开头加兜底句,若进来时上一项还开着,先补 finish 再发卡。

包内测试钉死这段顺序表述不会被静默删掉或改软。版本号 1.2.0 → 1.2.1。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FJcX8A6TWp4GRs41TYryEh
This commit is contained in:
xcs
2026-08-27 02:54:09 +08:00
co-authored by Claude Opus 5
parent c6b02dfd39
commit c121349dea
3 changed files with 19 additions and 3 deletions
@@ -201,6 +201,16 @@ describe('说明书与剧本的骨架', () => {
expect(s0d).toContain('至少留一颗候选'); expect(s0d).toContain('至少留一颗候选');
}); });
it('P-08 交回之后先 finish 再发 P-10 卡,顺序写死进两段 guide(2026-08-27 实测:漏收步会让工作区画面停在 P-08 那两张表,P-10 卡发出后人却看不见资料表、提交闸拦死)', () => {
const s0d = ASSESSMENT_STEPS.find((s) => s.item === 'S0d_p08_master')?.guide ?? '';
expect(s0d).toContain('finish S0d_p08_master');
expect(s0d).toMatch(/顺序不能反/);
expect(s0d).toContain('p08-master-create');
const s0d10 = ASSESSMENT_STEPS.find((s) => s.item === 'S0d_p10_document')?.guide ?? '';
expect(s0d10).toContain('finish S0d_p08_master');
expect(s0d10).toMatch(/若它还开着|先.*finish/);
});
it('五段进度,每段名 ≤10 字;除放行外每项恰属一段', () => { it('五段进度,每段名 ≤10 字;除放行外每项恰属一段', () => {
expect(ASSESSMENT_PHASES).toHaveLength(5); expect(ASSESSMENT_PHASES).toHaveLength(5);
for (const p of ASSESSMENT_PHASES) expect(p.name.length, p.name).toBeLessThanOrEqual(10); for (const p of ASSESSMENT_PHASES) expect(p.name.length, p.name).toBeLessThanOrEqual(10);
@@ -342,7 +342,12 @@ current_stage = "assessing"。application_scenario / bom_position **这一步不
brand_name 有就写}(这一行是骨架,下一项 S0d_p10_document 会把它填成正式记录)。 brand_name 有就写}(这一行是骨架,下一项 S0d_p10_document 会把它填成正式记录)。
4. 同一拍发说明书③那张 P-08 数据工单(title 里列全料号),发完这一拍结束(挂起)。 4. 同一拍发说明书③那张 P-08 数据工单(title 里列全料号),发完这一拍结束(挂起)。
【P-08 那张确认回来了】finish 这一项 —— 下一项是 S0d_p10_document,同一批料号接着补资料记录。 【P-08 那张确认回来了】这一拍的动作串**恰好两个,顺序不能反**:
① 先 \`finish S0d_p08_master\` —— **必须先把这一项收掉**。不收掉,引擎挑工作区画面时按
「当下还没干完的第一步」取 view,S0d_p08_master 只要还 Active,画面就一直停在
\`p08-master-create\`(P-08 那两张表);下一拍就算发出了 P-10 的卡,人的工作区也看不见
P-10 的资料表,一格都填不了,提交闸必然拦死。
② 再照说明书④发 P-10 数据工单 —— 下一项是 S0d_p10_document,同一批料号接着补资料记录。
【这张卡一单只发一次】人交回来之后不许再发;答复里没有值(空 values)也算答过 —— 人在件上填的东西已经落草稿层。`, 【这张卡一单只发一次】人交回来之后不许再发;答复里没有值(空 values)也算答过 —— 人在件上填的东西已经落草稿层。`,
}, },
@@ -355,7 +360,8 @@ current_stage = "assessing"。application_scenario / bom_position **这一步不
tools: [], tools: [],
/* 触达人,不给 doneWhen;人工激活:发卡就算启动 */ /* 触达人,不给 doneWhen;人工激活:发卡就算启动 */
guide: `这一项只在 \`${D}.pn_check\` 里有 absent 行时走(要走到这一步,S0d_p08_master 必然已经收完);都在库时入场前提本就不成立, guide: `这一项只在 \`${D}.pn_check\` 里有 absent 行时走(要走到这一步,S0d_p08_master 必然已经收完);都在库时入场前提本就不成立,
这一项与 S0d_p08_master 都不会进你的「当下可为」。 这一项与 S0d_p08_master 都不会进你的「当下可为」。**进到这一项时,S0d_p08_master 应当已经收掉了;若它还开着(Active),
先 \`finish S0d_p08_master\` 再发这张卡** —— 它没收掉,画面会一直停在 P-08 那两张表,人拿到 P-10 的卡也看不见资料表。
【发 P-10 数据工单】「建」的名单就是 \`${D}.pn_check\` 里仍是 exists_status = "absent" 的那几行(候选总数 ≥2 时被放弃的那些, 【发 P-10 数据工单】「建」的名单就是 \`${D}.pn_check\` 里仍是 exists_status = "absent" 的那几行(候选总数 ≥2 时被放弃的那些,
S0d_p08_master 那一步已经把它们改成 "abandoned",不在这份名单里)。同一拍照说明书④发那张 P-10 数据工单(title 里列全料号,只发一次), S0d_p08_master 那一步已经把它们改成 "abandoned",不在这份名单里)。同一拍照说明书④发那张 P-10 数据工单(title 里列全料号,只发一次),
@@ -89,7 +89,7 @@ export const manifest: ActivityManifest = {
identity: { identity: {
activityId: ACTIVITY_ID, activityId: ACTIVITY_ID,
name: 'ACT-WORK-05 · 差异评估', name: 'ACT-WORK-05 · 差异评估',
packageVersion: '1.2.0', packageVersion: '1.2.1',
category: '需求分析与方案匹配', category: '需求分析与方案匹配',
sdkVersion: '0.1.0-m5', sdkVersion: '0.1.0-m5',
checksum: 'dev-checksum-part-substitution-assessment', checksum: 'dev-checksum-part-substitution-assessment',