Archived
feat(w05): 五条样例与 e2e 套件就位,包已装库并经 SQL 核对 —— 五案例尚未跑
Task 11 的 Step 1-3。装包结果用 SQL 核过库里那一行(不看脚本的话): part-substitution-assessment@2.0.0 · enabled · steps 恰四步 [S1_inputs, S2_assess, S3_review, T_release] · 零处残留已退役的工具名 · declarations.tools=[] · 五条样例名与设计一致。 **Step 4(五案例 e2e)没跑,故本提交不声称任何跑通结果。** 卡在登录:KEYCLOAK_E2E_CLIENT_SECRET 与 KEYCLOAK_PROVISIONING_CLIENT_SECRET 指纹完全相同(已核),e2e 服务账号的 secret 从来没被真正配过,取 token 恒 401。 另一条路 JCAI_E2E_BEARER 解出来是真人的 token 且已过期 —— 试跑绝不派到用户 工作台,政策上不能用,技术上也用不了。 pnpm gates 退出码 0(2407 通过 / 34 跳过)。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LKMZDwMbyKzjw6Hembwvet
This commit is contained in:
@@ -93,14 +93,21 @@ describe('清单本身合规', () => {
|
||||
expect(launchProps).not.toContain('datasheets');
|
||||
});
|
||||
|
||||
it('五条样例:第一条满载走数据工单那条路,名字 ≤14 字,形状各不相同', () => {
|
||||
/*
|
||||
* 2026-08-29 Task 11:随新样例集换血(单数 `candidateInternalPn`,起单只剩两格)——
|
||||
* 旧断言查的是已撤下的 `candidateInternalPns`(数组)/ `customerName`,这里同步核新形状:
|
||||
* 第一条是「候选缺库」那条路(S1 会派数据工单),每条样例的入参恰是启动契约那两格,不多不少。
|
||||
*/
|
||||
it('五条样例:第一条候选缺库那条路,名字 ≤14 字,入参恰两格且各不相同', () => {
|
||||
expect(manifest.samples).toHaveLength(5);
|
||||
for (const s of manifest.samples) expect(s.name.length, s.name).toBeLessThanOrEqual(14);
|
||||
expect(new Set(manifest.samples.map((s) => JSON.stringify(s.input))).size).toBe(5);
|
||||
const first = manifest.samples[0]?.input as { candidateInternalPns?: string[] };
|
||||
expect(first.candidateInternalPns).toContain('XL2596S-5.0');
|
||||
const newCustomer = manifest.samples.find((s) => (s.input as { customerName?: string }).customerName !== undefined);
|
||||
expect(newCustomer).toBeDefined();
|
||||
const first = manifest.samples[0]?.input as { originalInternalPn?: string; candidateInternalPn?: string };
|
||||
expect(first.originalInternalPn).toBe('LM2596S-5.0');
|
||||
expect(first.candidateInternalPn).toBe('XL2596S-5.0');
|
||||
for (const s of manifest.samples) {
|
||||
expect(Object.keys(s.input as Record<string, unknown>).sort()).toEqual(['candidateInternalPn', 'originalInternalPn']);
|
||||
}
|
||||
});
|
||||
|
||||
/*
|
||||
|
||||
@@ -462,61 +462,21 @@ export const manifest: ActivityManifest = {
|
||||
|
||||
/*
|
||||
* ── 样例集:五条形状真不同(常备案例即验收案例)──
|
||||
* 本任务不改样例(它们仍是旧九步 / 旧入参形状的素材,Task 3 重写案例模型时一并核对)。
|
||||
* 库里只播了 LM2596S-5.0 / LM2596S-ADJ 两颗(见 seed-mvp-data.ts),XL2596S-5.0 / CN-DCDC-32V / LM2596S-3.3 刻意不在库。
|
||||
* **2026-08-29 Task 11 换成新入参形状**(单数 `candidateInternalPn`,与 §4.1 的启动两参同步 ——
|
||||
* 旧九步遗留的 `customerCode`/`requestDescription`/`candidateInternalPns`(数组)三键随之撤下,
|
||||
* 起单表单本就只剩两格)。五条覆盖 S1 的五种入场局面:①候选缺库(新建类型那条路,S1 数据工单
|
||||
* 三块都要动)②两颗都在库且同型(零卡直接进 S2)③两颗都在库但分属不同芯片类型(硬拦,
|
||||
* 光凭其它格子填满绕不过去)④原 PN 缺库(候选在库)⑤两颗都缺库。
|
||||
* 库里播了 LM2596S-5.0 / LM2596S-ADJ(DC-DC 降压稳压器,type_id=1)与 AMS1117-3.3
|
||||
* (LDO 线性稳压器,type_id=2)三颗(见 seed-mvp-data.ts);XL2596S-5.0 / CN-DCDC-32V /
|
||||
* LM2596S-3.3 刻意不在库。
|
||||
*/
|
||||
samples: [
|
||||
{
|
||||
name: '候选缺库·派数据工单',
|
||||
input: {
|
||||
customerCode: 'CU-0142',
|
||||
requestDescription: '工业电源项目在用 LM2596S-5.0(TI,12V→5V),原厂 PCN 转 NRND,客户要求验证替代料;应用 12V→5V、工业温域、输入上限 40V',
|
||||
originalInternalPn: 'LM2596S-5.0',
|
||||
candidateInternalPns: ['XL2596S-5.0', 'LM2596S-ADJ'],
|
||||
},
|
||||
expect: { ports: ['assessment-released'] },
|
||||
},
|
||||
{
|
||||
name: '都在库·常路',
|
||||
input: {
|
||||
customerCode: 'CU-0142',
|
||||
requestDescription: 'LM2596S-5.0 转 NRND,客户先评估同族可调版 LM2596S-ADJ 能否替代(愿意改外围);应用 12V→5V、工业温域',
|
||||
originalInternalPn: 'LM2596S-5.0',
|
||||
candidateInternalPns: ['LM2596S-ADJ'],
|
||||
},
|
||||
expect: { ports: ['assessment-released'] },
|
||||
},
|
||||
{
|
||||
name: '原PN缺库·硬阻塞',
|
||||
input: {
|
||||
customerCode: 'CU-0142',
|
||||
requestDescription: '客户另一块板在用 LM2596S-3.3(3.3V 固定版),同批 PCN,要求评估 LM2596S-ADJ 替代;应用 12V→3.3V',
|
||||
originalInternalPn: 'LM2596S-3.3',
|
||||
candidateInternalPns: ['LM2596S-ADJ'],
|
||||
},
|
||||
expect: { ports: ['assessment-released'] },
|
||||
},
|
||||
{
|
||||
name: '三候选·含硬约束不推荐',
|
||||
input: {
|
||||
customerCode: 'CU-0142',
|
||||
requestDescription: '工业电源 12V→5V,输入上限 40V,工业温域;三个候选:XL2596S-5.0、LM2596S-ADJ、国产 CN-DCDC-32V(输入上限只有 32V)',
|
||||
originalInternalPn: 'LM2596S-5.0',
|
||||
candidateInternalPns: ['XL2596S-5.0', 'LM2596S-ADJ', 'CN-DCDC-32V'],
|
||||
},
|
||||
expect: { ports: ['assessment-released'] },
|
||||
},
|
||||
{
|
||||
name: '新客户·先建档',
|
||||
input: {
|
||||
customerCode: 'CU-9001',
|
||||
customerName: '深圳恒星电源有限公司',
|
||||
requestDescription: '新客户口述:工业电源 12V→5V 在用 LM2596S-5.0,想评估 LM2596S-ADJ',
|
||||
originalInternalPn: 'LM2596S-5.0',
|
||||
candidateInternalPns: ['LM2596S-ADJ'],
|
||||
},
|
||||
expect: { ports: ['assessment-released'] },
|
||||
},
|
||||
{ name: '候选缺库·新建类型', input: { originalInternalPn: 'LM2596S-5.0', candidateInternalPn: 'XL2596S-5.0' }, expect: { ports: ['assessment-released'] } },
|
||||
{ name: '都在库·零卡直分析', input: { originalInternalPn: 'LM2596S-5.0', candidateInternalPn: 'LM2596S-ADJ' }, expect: { ports: ['assessment-released'] } },
|
||||
{ name: '类型不一致·硬拦', input: { originalInternalPn: 'LM2596S-5.0', candidateInternalPn: 'AMS1117-3.3' }, expect: { ports: ['assessment-released'] } },
|
||||
{ name: '原PN缺库', input: { originalInternalPn: 'LM2596S-3.3', candidateInternalPn: 'LM2596S-ADJ' }, expect: { ports: ['assessment-released'] } },
|
||||
{ name: '两颗都缺库', input: { originalInternalPn: 'CN-DCDC-32V', candidateInternalPn: 'XL2596S-5.0' }, expect: { ports: ['assessment-released'] } },
|
||||
],
|
||||
|
||||
entry: { file: 'index.js', checksum: 'dev-entry-part-substitution-assessment' },
|
||||
|
||||
Reference in New Issue
Block a user