Files
iAOP/web/cockpit/plans/ti-cl4.json
T
bot_dev1 7a2e45e7c4 feat: 全站 Ant Design Pro 风格重构 + 登录守卫与角色门户(issue #131/#134)
- 新增 web/shared:pro.css(AntD 5 设计系统,旧 CSS 变量统一映射 AntD 色板)、
  session.js(后端优先+本地账号降级双轨会话,IAOP_AUTH 兼容层)、
  pro-header.js(全站统一 Pro 导航条:logo/页题/用户角色 Tag/退出)
- 门户 web/index.html:未登录跳登录页(next 回跳),登录后按角色过滤
  可见模块(readonly→驾驶舱/助手/移动端;engineer→+配置台;admin→全部)
- 登录页 auth/login.html 重写为 Ant Design Pro 风格,本地降级模式自动
  播种演示账号(admin/engineer/viewer),保留 OIDC SSO 双轨入口
- user_store.js 新增 verify() + seedDefaults() 默认账号播种
- 六模块页统一接入 pro.css + 统一导航条 + 登录守卫(PRD 8.2)
- 驾驶舱主题 dark→light(Ant Design 5 色板):renderer.py THEME_TOKENS、
  ti-cl4/resin 模板 theme、告警三级配色对齐 AntD(P0 #ff4d4f/P1 #faad14/
  P2 #1677ff),渲染计划已重编(build_plans.py)
- 验证:core/cockpit 86 单测通过;JS 语法检查通过;静态冒烟全 200
2026-08-05 14:17:37 +08:00

260 lines
6.3 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"$schema": "iAOP-cockpit-layout-v1",
"title": "海绵钛车间驾驶舱",
"theme": "light",
"themeTokens": {
"--cockpit-bg": "#f0f2f5",
"--cockpit-surface": "#ffffff",
"--cockpit-fg": "rgba(0,0,0,0.88)",
"--cockpit-fg-muted": "rgba(0,0,0,0.45)",
"--cockpit-accent": "#1677ff",
"--cockpit-warn": "#faad14",
"--cockpit-grid-line": "rgba(5,5,5,0.06)"
},
"grid": {
"columns": 12
},
"widgets": [
{
"id": "process_view-0",
"component": "ProcessView",
"type": "process_view",
"grid": {
"columnStart": 1,
"columnSpan": 12,
"rowStart": 1,
"rowSpan": 4,
"widthPct": 100.0,
"style": "grid-column: 1 / span 12; grid-row: 1 / span 4;"
},
"description": "四状态工艺流程(氯化 → 精制 → 还原 → 蒸馏)",
"props": {
"src": "ti_four_state.svg",
"states": [
"running",
"warning",
"alarm",
"offline"
],
"stages": [
{
"id": "chlorination",
"name": "氯化",
"device": "CLF-01",
"order": 1
},
{
"id": "purification",
"name": "精制",
"order": 2
},
{
"id": "reduction",
"name": "还原",
"device": "RF-01",
"order": 3
},
{
"id": "distillation",
"name": "蒸馏",
"order": 4
}
]
},
"perf": {
"virtualScroll": false,
"downsample": false,
"worker": false
}
},
{
"id": "trend-1",
"component": "TrendChart",
"type": "trend",
"grid": {
"columnStart": 1,
"columnSpan": 6,
"rowStart": 5,
"rowSpan": 2,
"widthPct": 50.0,
"style": "grid-column: 1 / span 6; grid-row: 5 / span 2;"
},
"description": "氯化炉温度实时趋势(沸腾氯化炉温 850±50℃)",
"props": {
"series": "CLF-01.TEMP",
"window": "PT30M"
},
"perf": {
"virtualScroll": false,
"downsample": false,
"worker": false
}
},
{
"id": "trend-2",
"component": "TrendChart",
"type": "trend",
"grid": {
"columnStart": 7,
"columnSpan": 6,
"rowStart": 5,
"rowSpan": 2,
"widthPct": 50.0,
"style": "grid-column: 7 / span 6; grid-row: 5 / span 2;"
},
"description": "氯气流量实时趋势(流态化监控)",
"props": {
"series": "CLF-01.CL2",
"window": "PT30M"
},
"perf": {
"virtualScroll": false,
"downsample": false,
"worker": false
}
},
{
"id": "kpi_card-3",
"component": "KpiCard",
"type": "kpi_card",
"grid": {
"columnStart": 1,
"columnSpan": 3,
"rowStart": 7,
"rowSpan": 2,
"widthPct": 25.0,
"style": "grid-column: 1 / span 3; grid-row: 7 / span 2;"
},
"description": "还原 TiCl₄ 纯度(%,工艺 ≥ 99.9%)",
"props": {
"metric": "ticl4_purity",
"label": "TiCl₄纯度"
},
"perf": {
"virtualScroll": false,
"downsample": false,
"worker": false
}
},
{
"id": "kpi_card-4",
"component": "KpiCard",
"type": "kpi_card",
"grid": {
"columnStart": 4,
"columnSpan": 3,
"rowStart": 7,
"rowSpan": 2,
"widthPct": 25.0,
"style": "grid-column: 4 / span 3; grid-row: 7 / span 2;"
},
"description": "还原杂质含量(%,越低越好)",
"props": {
"metric": "ticl4_impurity",
"label": "杂质含量"
},
"perf": {
"virtualScroll": false,
"downsample": false,
"worker": false
}
},
{
"id": "kpi_card-5",
"component": "KpiCard",
"type": "kpi_card",
"grid": {
"columnStart": 7,
"columnSpan": 3,
"rowStart": 7,
"rowSpan": 2,
"widthPct": 25.0,
"style": "grid-column: 7 / span 3; grid-row: 7 / span 2;"
},
"description": "车间累计电耗(kWh,单吨海绵钛综合能耗输入)",
"props": {
"metric": "energy_per_ton",
"label": "累计电耗"
},
"perf": {
"virtualScroll": false,
"downsample": false,
"worker": false
}
},
{
"id": "kpi_card-6",
"component": "KpiCard",
"type": "kpi_card",
"grid": {
"columnStart": 10,
"columnSpan": 3,
"rowStart": 7,
"rowSpan": 2,
"widthPct": 25.0,
"style": "grid-column: 10 / span 3; grid-row: 7 / span 2;"
},
"description": "蒸汽流量(t/h,公用工程监控)",
"props": {
"metric": "steam_flow",
"label": "蒸汽流量"
},
"perf": {
"virtualScroll": false,
"downsample": false,
"worker": false
}
},
{
"id": "alarm_panel-7",
"component": "AlarmPanel",
"type": "alarm_panel",
"grid": {
"columnStart": 1,
"columnSpan": 9,
"rowStart": 9,
"rowSpan": 3,
"widthPct": 75.0,
"style": "grid-column: 1 / span 9; grid-row: 9 / span 3;"
},
"description": "告警面板(氯化炉温/还原真空度/纯度/杂质异常)",
"props": {
"subscribe": "alarm_stream"
},
"perf": {
"virtualScroll": false,
"downsample": false,
"worker": false
}
},
{
"id": "nl_query-8",
"component": "NlQuery",
"type": "nl_query",
"grid": {
"columnStart": 10,
"columnSpan": 3,
"rowStart": 9,
"rowSpan": 3,
"widthPct": 25.0,
"style": "grid-column: 10 / span 3; grid-row: 9 / span 3;"
},
"description": "自然语言查询入口(工艺/质量/能耗问答)",
"props": {
"placeholder": "输入自然语言查询(配方 / 质量 / 能耗)"
},
"perf": {
"virtualScroll": false,
"downsample": false,
"worker": false
}
}
],
"widgetCount": 9,
"perfFlags": {
"virtualScroll": false,
"downsample": false,
"worker": false
},
"perfHint": null
}