Archived
「flow:按**步序位置**推送声明的模版」(AM 07)。原先这条链只有写面没有读面,
活动的 viewTemplates 是一行占位字符串,工作台视图区永远只显示一份硬编码概览。
补齐整条链:
· 步声明新增 `view`:这一步呈现哪张模版 —— 推什么由声明给定,不由临场决定。
· 新增模版填数的纯函数(interaction/domain):`data-slot` 取值、`data-rows` 逐条展开。
**填数只做取值与转义**,没有表达式、没有分支、没有循环 —— 一旦模版能算,
它就成了代码,容器的「无脚本执行权」也就形同虚设。填充**消费槽位**,
交出去的是干净 HTML,不是带模板属性的半成品。
· interaction 补读面 `viewOf`;desk 路由把推送的 HTML 交给前端;
ViewRegion 经 `@ui` 的 ViewContainer(sandbox="" 的 iframe)渲染 —— feature 不碰 innerHTML。
· A1 写了三张真模版(事态全景 / 打标判据 / 成果预览),内联自带样式
(沙箱页面不继承工作台 CSS),按步序位置挂在 S3 / S5 / S6 上。
沿路两处修:
① 取值路径遇到**本身带点号的键**(台账地址 `域.对象`)会被拆成两级、永远取不到。
改为整键优先、找不到再下行;`view-render` 与 `step-sequence` 两处同修。
② 「本单交付」不能画成台账全表:任务视图是正式版 + 我的草稿的合并结果,
直接拿来列会把**别单**放行过的记录一并列出。本单自己写下的行单独放在
`mine:域.对象` 下(整键,取值不歧义)。
另:视图推送失败原先静默吞掉 —— 会让「视图区一直空着」变成查不出原因的怪事;
改为留痕(仍不影响步序推进,呈现是投影)。
实测:一封 RFQ 入站 → 放行前那一屏列出本单交付 LM358DR / TI / 12000 / 8.2 / 10周,
以及 Type A「直接快答」的分类结论与四项打标判据。
gates: tsc / eslint / depcruise(321 模块)/ api-report / 423 测试 全绿
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KeDBx2PHLavbURXB8LJJ7m
77 lines
2.7 KiB
CSS
77 lines
2.7 KiB
CSS
/* ============================================================================
|
|
JCAI 治理台 · 令牌与基座
|
|
—— 只放设计令牌 + 页面基座;治理台的外壳与全部组件在 console.css。
|
|
令牌与工作台同源(飞书蓝阶 + 中性阶 + 功能色 + 类型强调色),但**壳不同**:
|
|
工作台是浅色三栏工作面,治理台是深色轨 + 深色顶栏的控制台。
|
|
========================================================================== */
|
|
|
|
:root {
|
|
/* —— 飞书蓝阶 —— */
|
|
--brand: #3370ff;
|
|
--brand-deep: #245bdb;
|
|
--brand-pressed: #1c4cba;
|
|
--brand-soft: #e1eaff;
|
|
--brand-wash: #f0f4ff;
|
|
/* —— AI 在场渐变 —— */
|
|
--ai-a: #3370ff;
|
|
--ai-b: #7f3bf5;
|
|
--ai-grad: linear-gradient(135deg, var(--ai-a), var(--ai-b));
|
|
/* —— 中性阶 —— */
|
|
--ink: #1f2329;
|
|
--ink-2: #41464e;
|
|
--ink-3: #646a73;
|
|
--ink-4: #8f959e;
|
|
--line: #dee0e3;
|
|
--line-soft: #e8eaed;
|
|
--canvas: #f0f2f5;
|
|
--soft: #f8f9fb;
|
|
--cardline: #e1e6ec;
|
|
--card-shadow: 0 1px 2px rgba(31, 35, 41, .05);
|
|
/* —— 功能色 —— */
|
|
--ok: #278717; --ok-accent: #34c724; --ok-soft: #e8f8e4;
|
|
--warn: #de7802; --warn-accent: #ff8800; --warn-soft: #fff4e5;
|
|
--danger: #d83931; --danger-accent: #f54a45; --danger-soft: #feeae9;
|
|
/* —— 活动 / 节点类型强调色 —— */
|
|
--st-auto: #4954e6; --st-execute: #e07a00; --st-decision: #7f3bf5;
|
|
--st-collab: #0aa294; --st-wait: #6a7590;
|
|
/* —— 字体 / 动效 —— */
|
|
--sans: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
|
|
--mono: ui-monospace, "SF Mono", SFMono-Regular, "JetBrains Mono", Menlo, Consolas, monospace;
|
|
--t-fast: .16s cubic-bezier(.3, 0, .2, 1);
|
|
--t-med: .26s cubic-bezier(.3, 0, .2, 1);
|
|
}
|
|
|
|
/* ============================== 基座 ============================== */
|
|
* { box-sizing: border-box; }
|
|
html, body { height: 100%; }
|
|
body {
|
|
margin: 0;
|
|
min-width: 1120px;
|
|
background: #eceff4;
|
|
color: var(--ink);
|
|
font-family: var(--sans);
|
|
-webkit-font-smoothing: antialiased;
|
|
}
|
|
:root { scrollbar-width: thin; scrollbar-color: #c9ced6 transparent; }
|
|
::selection { background: var(--brand-soft); }
|
|
:where(button, input, textarea, select, a, [tabindex]):focus-visible {
|
|
outline: 2px solid var(--brand);
|
|
outline-offset: 2px;
|
|
border-radius: 8px;
|
|
}
|
|
|
|
/*
|
|
* 视图区容器 —— 活动推送 HTML 的沙箱画框(AM 07)。
|
|
* 这是**平台本体**的件:活动只给内容,尺寸与边框归系统。
|
|
* iframe 无脚本执行权(sandbox=""),因此内容自带样式、不继承工作台 CSS。
|
|
*/
|
|
.jc-view-frame {
|
|
display: block;
|
|
width: 100%;
|
|
min-height: 420px;
|
|
height: 100%;
|
|
border: 0;
|
|
border-radius: 10px;
|
|
background: #f7f8fa;
|
|
}
|