forked from ChaiHao/BPOS-MVP
话说的范围要盖住门拦的范围;报告上把缺哪几格红字直说
三件,都是「说的和做的不是同一件事」这一类的又一次现形。 **为什么模型会漏掉 start** —— 提示词那条规矩写窄了。 原文:「标了「须你启动」的项要先 start **再调工具**」——只说了调工具; 而拦截那一侧(`readyToWork`)管的是 tool / ask / human / decide / entry / finish 一整片。 模型那一拍要发的是 `human`(派工单),照字面读这条规矩管不着它,于是漏了 start, 撞上「S3_confirm 标了人工激活,要先 start 再干活」白烧一拍。 **话窄一格,模型就正好漏在那一格上。** 现在写全:动它之前先 start,发卡与 finish 都算; 只有 write 例外(它的 itemId 只是记账,挂不上照写)。 **目标价左对齐** —— 右对齐是给要竖着相加的那种数用的;这张表一行一个料、彼此不相加, 右对齐只让它跟自己的表头分了家:标题贴左、数贴右,中间空一条,眼睛来回找。 等宽字体留着(位数对齐仍有用),对齐跟表头走。 **报告上把缺哪几格红字直说** —— 从前只在空格子里摆一枚小小的「必填」胶囊, 九行料摊开就淹在表里;而人打开这一屏就是来填的。现在表上方一条红带, 点名还差几格、差在哪一行的哪一列。两个数由基座现算(`_missing` / `_missing_keys`), 与提交闸、放行门 L1 同一个数;**模版不算也不判** —— 「一格不缺就别出这条带」 交给样式表(`data-class-of` → `v-0` 那档 display:none)。 浏览器验过两态:缺 1 格时 v-1 显示,从件上补齐后重渲变 v-0 自动收起。 五道门禁全绿(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:
@@ -73,7 +73,7 @@ export const manifest: ActivityManifest = {
|
||||
identity: {
|
||||
activityId: ACTIVITY_ID,
|
||||
name: 'A1 · 询价受理',
|
||||
packageVersion: '41.0.0',
|
||||
packageVersion: '42.0.0',
|
||||
category: '统一报价',
|
||||
sdkVersion: '0.1.0-m5',
|
||||
checksum: 'dev-checksum-quote-intake',
|
||||
|
||||
@@ -96,7 +96,15 @@ const BIND_CSS = `
|
||||
.proto-root .jc-tbl-in.on td > .jc-cell { display: block; }
|
||||
/* 类那一列平时只有一枚 24px 的徽,编辑态要放得下一个字 */
|
||||
.proto-root .jc-tbl-in.on td.jc-ty, .proto-root .jc-tbl-in.on th:nth-child(2) { width: 56px; min-width: 56px; }
|
||||
.proto-root .jc-tbl-in.on td.num > .jc-cell, .proto-root .jc-tbl-in.on .jc-cell.num { text-align: right; }
|
||||
/*
|
||||
* **数值列也左对齐**(2026-08-02 用户:「目标价的价格也要跟标题左对齐,右对齐太奇怪了」)。
|
||||
*
|
||||
* 右对齐是给**要竖着相加的那种数**用的(金额合计、数量小计)——这张表里的目标价
|
||||
* 一行一个料、彼此不相加,右对齐只是让它和自己的表头分家:标题贴左、数贴右,
|
||||
* 中间空一条,眼睛得来回找。等宽字体留着(位数对齐仍有用),对齐方式跟表头走。
|
||||
*/
|
||||
.proto-root .jc-vcell.num, .proto-root .jc-cell.num { text-align: left; }
|
||||
.proto-root .jc-tbl-in.on td.num > .jc-cell, .proto-root .jc-tbl-in.on .jc-cell.num { text-align: left; }
|
||||
/* 编辑态下必填空格子:红框 + 红 placeholder(原型的 req-empty 同款,只是由 :placeholder-shown 认) */
|
||||
.proto-root .jc-tbl-in.on td.req > .jc-cell:placeholder-shown { border-color: #f3b6b3; background: #fffafa; }
|
||||
.proto-root .jc-tbl-in.on tbody tr:has(td.req > .jc-cell:placeholder-shown) td { background: #fffbfb; }
|
||||
@@ -136,6 +144,20 @@ html.editable .proto-root .jc-editgate {
|
||||
.proto-root .jc-editgate.on .jc-egbtn.open { display: none; }
|
||||
.proto-root .jc-editgate.on .jc-egbtn.ghost, .proto-root .jc-editgate.on .jc-egbtn.save { display: inline-flex; }
|
||||
.proto-root .jc-editgate.on .jc-editgate-t { visibility: hidden; }
|
||||
/* 缺项红带 —— **只在这一屏可改时出现**,且一格不缺就不出(判断在样式表,不在填数里) */
|
||||
.proto-root .jc-gapbar { display: none; }
|
||||
html.editable .proto-root .jc-gapbar {
|
||||
display: flex; align-items: flex-start; gap: 8px;
|
||||
margin: 0 0 10px; padding: 9px 12px; border-radius: 9px;
|
||||
background: #fff5f5; border: 1px solid #f3b6b3; color: var(--danger);
|
||||
font-size: 12px; line-height: 1.65;
|
||||
}
|
||||
.proto-root .jc-gapbar svg { flex: 0 0 auto; margin-top: 2px; }
|
||||
.proto-root .jc-gapbar b { font-weight: 800; }
|
||||
.proto-root .jc-gapbar span { color: #9a3b36; }
|
||||
/* 一格不缺 —— 那条带没有话可说 */
|
||||
html.editable .proto-root .jc-gapbar.v-0 { display: none; }
|
||||
|
||||
/* 那条「怎么改」的提示只在开了闸之后说 —— 锁着的时候它是句废话 */
|
||||
.proto-root .jc-editbar { display: none; }
|
||||
.proto-root .jc-editgate.on + .jc-editbar { display: flex; }
|
||||
@@ -402,6 +424,23 @@ const listTable = (mode: 'draft' | 'final'): string => {
|
||||
};
|
||||
|
||||
/** 编辑态那条提示带 —— 原型的 `jc-editbar`,只在待处理那一屏现身 */
|
||||
/**
|
||||
* **缺哪几格,红字直说**(2026-08-02 用户:「执行单现在要怎么填不明显,在报告上明显一点」)。
|
||||
*
|
||||
* 从前这一屏只在空格子里摆一枚小小的「必填」胶囊 —— 九行料摊开,那几枚胶囊淹在表里,
|
||||
* 人得逐行扫过去才知道自己要动哪一格。而他打开这一屏就是来填的。
|
||||
*
|
||||
* 现在表上方直接一条红带:**还差 N 格,分别是哪一行的哪一列**。
|
||||
* 两个数都由基座现算(`域_对象_missing` / `_missing_keys`),模版不算也不判 ——
|
||||
* 「一格不缺就别出这条带」这个判断交给样式表:`data-class-of` 把数消毒成
|
||||
* `v-0` / `v-1` / …,`v-0` 那一档 `display:none`。件本身仍然只做取值。
|
||||
*/
|
||||
const gapBar = `<div class="jc-gapbar" data-class-of="quote_intake_record_missing">${ico('alert', 14)}
|
||||
<span><b>还差 <span data-slot="quote_intake_record_missing"></span> 格必填没补</b>
|
||||
—— <span data-slot="quote_intake_record_missing_keys"></span>。
|
||||
按右上角「编辑」开表,红框那几格就是要填的;补齐了才提交得了。</span>
|
||||
</div>`;
|
||||
|
||||
/**
|
||||
* 一张可改的表的**闸** —— 默认锁着,按「编辑」才开(2026-08-01 用户定)。
|
||||
*
|
||||
@@ -492,6 +531,7 @@ export const INTAKE_OVERVIEW = doc({
|
||||
part('受理要素', 'F-01 完整度自检') +
|
||||
four('gap') +
|
||||
part('有效 PN 清单', '<b data-slot="line_total"></b> 条 · 已剔除 <b data-slot="skipped_total"></b>') +
|
||||
gapBar +
|
||||
editGate('quote_intake.record', '有效 PN 清单') +
|
||||
listTable('draft') +
|
||||
addRowBar('quote_intake.record') +
|
||||
|
||||
Reference in New Issue
Block a user