diff --git a/DESIGN.md b/DESIGN.md index e2c21ef..4bf1529 100644 --- a/DESIGN.md +++ b/DESIGN.md @@ -299,7 +299,7 @@ Dataset(语义层): - `payment_metrics` — 计划与实际,按月;逾期金额 看板三个: -- **法务工作台** — 待受理数 · 审查中 · 审查超 30 天(固定阈值,写进砖的标题)· 谈判停滞 · 审批吞吐(本月 vs 上月,用平台 `compareTo`)· 各阶段合同数漏斗 +- **法务工作台** — 待受理数 · 审查中 · 审查超 30 天(固定阈值,写进砖的标题)· 谈判停滞 · 审批吞吐(本月 vs 上月,用平台 `compareTo`)· 各阶段合同数(横向条形图,按合同数从多到少排;只画在办的六个阶段) - **管理层** — 生效合同额 · 90 天内到期 · 高风险合同 · 各台阶路由量(四级台阶各一块砖,读 F2 盖的 `route_*` 标志;是流量,不是停留)· 按方向的合同额趋势 - **财务** — 本月应收 / 应付 · 逾期金额 · 按相对方的未付 top 10 @@ -307,6 +307,8 @@ Dataset(语义层): **各段时长与按类型的「超 SLA」不在 V1.0 交付面内**(维护者裁定,2026-09-09)。语义层不收 SQL 也不收表达式(ADR-0021),没有地方做时间戳减法;且 `Field.datetime` 在 SQLite 上存 ISO 文本,`AVG()` 打在其上会静默返回平均年份而不是平均日期。两项都等平台的日期能力,跟踪于 `objectstack-ai/objectstack#16737`。在那之前 §09 交付的是:周转以各阶段到达数与审批吞吐如实呈现,SLA 以固定 30 天阈值呈现且阈值写进砖的标题(九种类型的真实 SLA 是 2/3/5/10 天,30 天高于全部,标题自陈阈值就不会被误读成按类型的违约)。§09 原列的「审批瓶颈(各台阶平均停留)」同样不交付,且另有一条独立于平台的原因:审批台阶的起止无处可读——`sys_approval_request` 在标准演示数据下零行,审批阶梯(F5)从未运行——所以即使平台补上日期运算,停留时长仍要先有审批请求记录才算得出来。看板在那个位置交付的是各台阶的路由量。⛔ 不得用应用侧日任务盖戳字段把各段时长与「超 SLA」补出来 —— 那是在应用里复刻平台规则。 +**「各阶段合同数」是横向条形图,不是漏斗,且只画在办阶段**(#48 / PR #57 换掉图形,#59 / PR #62 收窄口径,均已合并)。漏斗断言逐级单调递减,而这本合同簿不递减(§10 的分布:draft 10 · submitted 6 · in_review 12 · in_approval 8 · approved 4 · signing 6 · active 60),画成漏斗是在断言数据没说的事。收录判据是**法务在这个阶段是否还有事要做**:`draft` / `submitted` / `in_review` / `in_approval` / `approved` / `signing` 六个在办阶段入图;`active` 与 `rejected` / `expired` / `terminated` / `cancelled` 四种终态都不入图 —— 生效合同簿的规模归管理层看板(生效合同额 · 90 天内到期),不是法务工作台的队列。排序按合同数从多到少(`sortBy: 'contract_count'` / `sortOrder: 'desc'`),⛔ **不承诺可编排的阶段顺序**:console 17.4.0 只有漏斗分支读 `stageOrder`,条形图上静默丢弃,非 `en` 语言下连漏斗分支也因标签不匹配而丢,跟踪于 `objectstack-ai/objectstack#17344`。 + ## 10 种子数据 一家虚构的跨国集团(美国母公司,欧洲与亚太子公司;合同以 USD / EUR / GBP 计价,适用法律分布在 US-NY、England and Wales、Germany),六个月历史,让每个看板第一屏就有内容。`demo-en` 默认,`demo-zh` 同构。