Archived
feat(w05): 数据工单第四轮九连改 —— 笔↔软盘卡角编辑、只选不建、浅蓝题头、镜像修数字
2026-08-31 用户一次点齐九件,逐条落: ① 两行编辑闸退役 → 卡右上角笔(开当前这一面的编辑)↔ 软盘(保存)+ 叉(放弃); 按钮就是平台的 data-edit-open/save/cancel 触发器,快照/取消机制原样,按面显隐全在样式表。 ② 保存一瞬间下拉变数字 → ui-kit mirrorTwins:下拉镜像**选项文案**不镜 value,并把 selected 属性拨到人选的那一项(守卫 CSS 与取消回显都认它)。2 测。 ③ 参数输入框占位提示 → 渲染器 twinInputs 认 data-ph 落成 placeholder(平台小扩面,1 测); 值格「规格书上的值 · 查不到留空」,说明格「补充说明 · 选填」。 ④ 参数说明空着不再摆「建议」→ 什么都不摆(连兜底破折号一起收)。 ⑤ 区序对调:芯片档案在前,比对基准在后。 ⑥ **新建芯片类型整条路移除**(只能选已有类型):抽屉与两张编辑表(种子行/Critical-1 修法/thead 回归网)退役,S1 配方 ②③ 自投影删除(八笔→六笔),gateLedgers 收窄到 profile+parameter,writes 同步,gate_reason 与指导书改口「只选不建」;样例改名 「候选缺库·建档定型」;e2e 案例 0 改走选既有 type_1(type_id=90 那套绕坑法随路退役)。 退役面的七条钉测按仓例 it.skip 留墓志铭(钉的是已移除的路径,不是放松断言)。 ⑦ 题头回浅蓝渐变(原目标件那条 120°),深色夜景只留验收两件。 ⑧ 对话区执行卡不再摆「参考信息」板块(basis 数据照旧随卡走,详情/归档仍有)。 ⑨ 比对基准降噪:字段收成丸(名+硬软徽+单位),说明藏进悬浮气泡指上即看; 类型说明一行截断、悬浮展开。 测:ui-kit 33(mirror 2 新)+ 渲染器 61(ph 1 新)+ 包内 104(38 steps 重排)+ 2525 全仓 四门绿;2.10.0 装库 SQL 六探针全中(hd-light/软盘/data-ph/零表格/无 chip_type 编辑面/ gateLedgers 两张);:8787 已重启载入 data-ph 渲染器。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LKMZDwMbyKzjw6Hembwvet
This commit is contained in:
+8
-49
@@ -604,22 +604,9 @@ const SUITES = {
|
||||
edits: [],
|
||||
extraTables: [
|
||||
/*
|
||||
* `parts.chip_type` **没有任何 `data-edit` 绑定**(manifest.ts / case-model.ts
|
||||
* 头注明写:新建类型时人在 `parts.type_param` 那张表加行,`parts.chip_type` 那
|
||||
* 张字典表本身没有编辑面 —— `ViewContainer.addRow` 靠克隆末行实现「加一行」,
|
||||
* 而它在任何一单里都是从零行起,没有可克隆的样子)。写的授权面是**台账声明**
|
||||
* 不是「当下卡上有没有绑定」(`writesOf` 只认 `declarations.ledger`),所以这条
|
||||
* 写入走得通 —— 只是脚本代脚本走 API,不是真人代替点了一个并不存在的按钮。
|
||||
* 只有样例 0(候选缺库·新建类型)会喂 `edits`,其余案例这里留空、这张表不写。
|
||||
* 2026-08-31「只选不建」:parts.chip_type / parts.type_param 两条随功能退役 ——
|
||||
* S1 的写授权面(writes)已收窄,再喂这两张表会被 400 拒。字典只在治理侧维护。
|
||||
*/
|
||||
{ address: 'parts.chip_type', rowKey: 'type_id', blankCol: 'type_name', edits: [] },
|
||||
{
|
||||
// 复合主键 (type_id, param_name) —— 同一类型两个字段不能靠单列区分。
|
||||
address: 'parts.type_param',
|
||||
rowKey: ['type_id', 'param_name'],
|
||||
blankCol: 'param_desc',
|
||||
edits: [],
|
||||
},
|
||||
{
|
||||
// 复合主键 (internal_pn, param_name) —— 两颗料同名参数(如都有「工作温度」)
|
||||
// 不这样区分,rows.find 会永远命中第一条同名行、把不同料的值互相顶掉。
|
||||
@@ -634,8 +621,8 @@ const SUITES = {
|
||||
cases: [
|
||||
{
|
||||
sample: 0,
|
||||
name: '候选缺库 · XL2596S-5.0 新建芯片类型(自增 type_id,字段清单沿用原型口径)入库,'
|
||||
+ '原 PN 一并转挂新类型才够得上 distinct=1 · 审核先点名意见驳回再通过',
|
||||
name: '候选缺库 · XL2596S-5.0 建档并选已有类型(type_1,2026-08-31 起本活动只选不建)'
|
||||
+ '· 审核先点名意见驳回再通过',
|
||||
decideSeq: ['custom:使能阈值那条 UNKNOWN 的去向请写明验证任务号与测试条件', 'approve'],
|
||||
expectDecision: true,
|
||||
expectPort: 'assessment-released',
|
||||
@@ -660,39 +647,13 @@ const SUITES = {
|
||||
* `type_id`,只是绕开这一条平台坑去验证后续链路,不代表浏览器里的真人也这样能走通。**
|
||||
*/
|
||||
customFill: async (taskId) => {
|
||||
const typeId = '90';
|
||||
// ① 新建芯片类型:显式给 type_id(见上方大注释,不走 autoKeys 续号)
|
||||
/* 2026-08-31「只选不建」:两颗料都挂到既有的 type_1(DC-DC)—— 新建类型那条路
|
||||
(显式 type_id=90 绕全表一致坑的那整套)随功能移除,史见 git 2.9.0 及更早。 */
|
||||
const typeId = '1';
|
||||
await api(`/api/desk/tasks/${taskId}/table`, {
|
||||
method: 'POST',
|
||||
body: JSON.stringify({
|
||||
tables: {
|
||||
'parts.chip_type': [
|
||||
{
|
||||
type_id: typeId,
|
||||
type_name: 'DC-DC 降压稳压器(评估自定义)',
|
||||
description: '本次评估自定义的降压转换器类型,核心参数字段清单沿用原类型口径,供原 PN 与候选料共用比对。',
|
||||
},
|
||||
],
|
||||
},
|
||||
}),
|
||||
});
|
||||
console.log(` 新建类型已保存,显式指定 type_id=${typeId}(绕开全表一致平台坑,已报未改)`);
|
||||
// ③ 核心参数字段清单(逐字照抄 type_id=1 的字典行,见 seed-mvp-data.ts)+
|
||||
// 两颗料都转挂新类型(distinct 要求同一个值)+ 候选料的参数值。
|
||||
// LM2596S-5.0 的既有参数值按同名 lookup 自动带过来,不必在这里重填。
|
||||
await api(`/api/desk/tasks/${taskId}/table`, {
|
||||
method: 'POST',
|
||||
body: JSON.stringify({
|
||||
tables: {
|
||||
'parts.type_param': [
|
||||
{ type_id: typeId, param_name: '输入电压范围', param_desc: '芯片允许的输入直流电压区间。候选料的上限低于应用输入上限就是硬伤,烧的是芯片。', constraint_type: 'hard', param_unit: 'V' },
|
||||
{ type_id: typeId, param_name: '输出电压', param_desc: '固定版给定值;可调版给可调区间,需外围反馈电阻网络设定。固定换可调要动外围。', constraint_type: 'hard', param_unit: 'V' },
|
||||
{ type_id: typeId, param_name: '输出电流', param_desc: '满载持续输出能力。低于原料即降额,负载重时会掉压或过热保护。', constraint_type: 'hard', param_unit: 'A' },
|
||||
{ type_id: typeId, param_name: '开关频率', param_desc: '决定外围电感与输出电容的取值。频率变了外围多半要跟着换,不是换颗料就完。', constraint_type: 'soft', param_unit: 'kHz' },
|
||||
{ type_id: typeId, param_name: '静态电流', param_desc: '空载待机时自身消耗。电池供电场景敏感,市电场景通常不敏感。', constraint_type: 'soft', param_unit: 'mA' },
|
||||
{ type_id: typeId, param_name: '工作温度', param_desc: '保证参数指标的环境温度区间。工业温域窄于应用要求就是硬伤。', constraint_type: 'hard', param_unit: '℃' },
|
||||
{ type_id: typeId, param_name: '使能阈值', param_desc: 'ON/OFF 引脚的开关门限。上游用 MCU 电平直驱时,阈值对不上会关不掉或开不起来。', constraint_type: 'hard', param_unit: 'V' },
|
||||
],
|
||||
'parts.profile': [
|
||||
{ internal_pn: 'LM2596S-5.0', chip_type_id: typeId },
|
||||
{
|
||||
@@ -768,10 +729,8 @@ const SUITES = {
|
||||
await db.query("delete from ledger.validation__record where validation_internal_pn = 'XL2596S-5.0'");
|
||||
await db.query("delete from ledger.parts__parameter where internal_pn = 'XL2596S-5.0'");
|
||||
await db.query("delete from ledger.parts__profile where internal_pn = 'XL2596S-5.0'");
|
||||
await db.query("delete from ledger.parts__type_param where type_id = '90'");
|
||||
await db.query("delete from ledger.parts__chip_type where type_id = '90'");
|
||||
});
|
||||
console.log(' 跨案例隔离:LM2596S-5.0 已转回 type_1;这一例全新建的 XL2596S-5.0(候选料本身、评估结果、type_id=90 字典行)已整体清空');
|
||||
console.log(' 跨案例隔离:XL2596S-5.0(这一例建档的候选料与它的评估结果)已整体清空;LM2596S-5.0 类型兜底归位 type_1');
|
||||
},
|
||||
},
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user