- 新增 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
260 lines
6.3 KiB
JSON
260 lines
6.3 KiB
JSON
{
|
||
"$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
|
||
} |