forked from ChaiHao/BPOS-MVP
进度条补回漏掉的那一格;删掉一条已经不存在的路
用户送来一条实测日志:中间被拒四次,卡片进度条也走得不对。两处都不是模型跑偏。 **进度条漏了一格** —— `INTAKE_PHASES` 里没有 `S3_confirm`(它是 08-01 才补回成一项的): 计划项六个、名单里五个。于是 S2 一收,前两格全过,条当场跳到「判定去向」; 而人这会儿正对着受理需求审定那张卡 —— **他手上办的那件事在条上没有格子**, 条却已经走过去了。那不是走快了一格,是它在说一件没发生的事。 补成四格(定位客户 / 归一受理 / 交你审定 / 判定去向)+ 基座统一加的放行收口; 包内自测钉死「除放行外每一项恰好属于一个阶段」「一项不进两个阶段」。 **那四次拒回是一条已经不存在的路** —— 说明书里还留着「人交回来还缺必填,就再发一张卡」。 提交闸上线后那条路没有了:缺必填根本按不下提交。模型照它办,每次都撞在 「这件事刚问过,人也答过了」上,白烧四拍。改成「这张卡一单只发一次」。 同批把提交闸补到**服务端**(收下回传之前把住):说明书向模型承诺 「卡回来时必填一定是齐的」,那句承诺只有服务端拦得住才算数。 A1 三案例复跑:9 拍 / 10 拍 / 14 拍,前两个**被拒 0**(修前是 12 拍被拒 1), 进度条五格逐格走对。五道门禁全绿(975 passed)。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JsTDjoHovERXyy6Wmw1ALp
This commit is contained in:
@@ -11,7 +11,7 @@
|
||||
*/
|
||||
import { describe, expect, it } from 'vitest';
|
||||
import { evaluateCondition } from '@sfeel';
|
||||
import { INTAKE_STEPS } from '../src/case-model.ts';
|
||||
import { INTAKE_PHASES, INTAKE_STEPS } from '../src/case-model.ts';
|
||||
import { CMMN_XML } from '../src/case-model.ts';
|
||||
import { manifest } from '../src/manifest.ts';
|
||||
|
||||
@@ -250,3 +250,34 @@ function safeEval(expression: string, scope: Record<string, unknown>): boolean {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* **每个计划项都得有格可待**(2026-08-02 用户:「卡片的进度条走的不对」)。
|
||||
*
|
||||
* 从前 `INTAKE_PHASES` 漏了 `S3_confirm`:计划项六个、名单里五个。
|
||||
* 于是 S2 一收,前两格全过,进度条当场跳到「判定去向」—— 而人这会儿正对着
|
||||
* 受理需求审定那张卡。**他手上办的那件事在条上没有格子**,条却已经走过去了:
|
||||
* 那不是走快了一格,是它在说一件没发生的事。
|
||||
*/
|
||||
describe('阶段刻度:每一项都有格可待', () => {
|
||||
const inPhase = new Set(INTAKE_PHASES.flatMap((p) => p.items));
|
||||
|
||||
it('**除放行外每一项恰好属于一个阶段** —— 漏一项,进度条就会在它办着的时候跳过去', () => {
|
||||
const planned = INTAKE_STEPS.map((s) => s.item).filter((id) => id !== 'T_release');
|
||||
expect(planned.filter((id) => !inPhase.has(id))).toEqual([]);
|
||||
});
|
||||
|
||||
it('一项不进两个阶段 —— 进了两个,「这一格过没过」就有两种答案', () => {
|
||||
const all = INTAKE_PHASES.flatMap((p) => p.items);
|
||||
expect(all.length).toBe(new Set(all).size);
|
||||
});
|
||||
|
||||
it('**放行不在名单里** —— 收口那一格由基座统一加,活动自己起名会各叫各的', () => {
|
||||
expect(inPhase.has('T_release')).toBe(false);
|
||||
});
|
||||
|
||||
it('阶段里不许出现案例模型没有的项 —— 那一格永远过不去', () => {
|
||||
const ids = new Set(INTAKE_STEPS.map((s) => s.item));
|
||||
expect([...inPhase].filter((id) => !ids.has(id))).toEqual([]);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user