|
886 | 886 | runtimeTargetLifecycleEmpty: "暂无可展示的平台运行状态。", |
887 | 887 | runtimeTargetLifecycleMeta: "{platform} · {state} · 通道:{mode}", |
888 | 888 | runtimeTargetLifecycleDetail: "运行监测:{guard} · 执行心跳:{heartbeat}", |
| 889 | + runtimeTargetLifecycleObservation: "本次执行:{observation} · 成交证据:{evidence}", |
889 | 890 | runtimeTargetLifecycleNoOrder: "固定边界:只读状态;不会启用目标、变更策略或提交订单。", |
890 | 891 | runtimeTargetLifecycleNext: "当前处理", |
891 | 892 | runtimeTargetLifecycleStateEnabled: "已启用", |
|
895 | 896 | runtimeTargetLifecycleCheckNotDue: "未到检查时间", |
896 | 897 | runtimeTargetLifecycleCheckNotApplicable: "不适用", |
897 | 898 | runtimeTargetLifecycleCheckUnavailable: "不可用", |
| 899 | + runtimeTargetLifecycleObservationNotDue: "未到应交易窗口", |
| 900 | + runtimeTargetLifecycleObservationMonitoringOnly: "仅监测通过", |
| 901 | + runtimeTargetLifecycleObservationNotApplicable: "目标停用,不适用", |
| 902 | + runtimeTargetLifecycleObservationAttention: "需要复核", |
| 903 | + runtimeTargetLifecycleObservationUnavailable: "不可用", |
| 904 | + runtimeTargetLifecycleOrderEvidenceNotCollected: "未采集订单/成交回执", |
898 | 905 | runtimeTargetLifecycleDispositionEnabled: "持续监控", |
899 | 906 | runtimeTargetLifecycleDispositionDisabled: "无执行验证", |
900 | 907 | runtimeTargetLifecycleDispositionParked: "已暂停", |
|
1211 | 1218 | runtimeTargetLifecycleEmpty: "No platform runtime status is available to display.", |
1212 | 1219 | runtimeTargetLifecycleMeta: "{platform} · {state} · lane: {mode}", |
1213 | 1220 | runtimeTargetLifecycleDetail: "runtime guard: {guard} · execution heartbeat: {heartbeat}", |
| 1221 | + runtimeTargetLifecycleObservation: "execution: {observation} · order/fill evidence: {evidence}", |
1214 | 1222 | runtimeTargetLifecycleNoOrder: "Fixed boundary: read-only status; it cannot enable a target, change a strategy, or place an order.", |
1215 | 1223 | runtimeTargetLifecycleNext: "CURRENT DISPOSITION", |
1216 | 1224 | runtimeTargetLifecycleStateEnabled: "enabled", |
|
1220 | 1228 | runtimeTargetLifecycleCheckNotDue: "not due", |
1221 | 1229 | runtimeTargetLifecycleCheckNotApplicable: "not applicable", |
1222 | 1230 | runtimeTargetLifecycleCheckUnavailable: "unavailable", |
| 1231 | + runtimeTargetLifecycleObservationNotDue: "not in a due window", |
| 1232 | + runtimeTargetLifecycleObservationMonitoringOnly: "monitoring only", |
| 1233 | + runtimeTargetLifecycleObservationNotApplicable: "target disabled; not applicable", |
| 1234 | + runtimeTargetLifecycleObservationAttention: "needs review", |
| 1235 | + runtimeTargetLifecycleObservationUnavailable: "unavailable", |
| 1236 | + runtimeTargetLifecycleOrderEvidenceNotCollected: "not collected", |
1223 | 1237 | runtimeTargetLifecycleDispositionEnabled: "continue monitoring", |
1224 | 1238 | runtimeTargetLifecycleDispositionDisabled: "disabled validation", |
1225 | 1239 | runtimeTargetLifecycleDispositionParked: "parked", |
|
4365 | 4379 | : t("runtimeTargetLifecycleStateDisabled"); |
4366 | 4380 | } |
4367 | 4381 |
|
| 4382 | + function runtimeTargetLifecycleObservationLabel(value) { |
| 4383 | + return { |
| 4384 | + not_due: t("runtimeTargetLifecycleObservationNotDue"), |
| 4385 | + monitoring_only: t("runtimeTargetLifecycleObservationMonitoringOnly"), |
| 4386 | + not_applicable: t("runtimeTargetLifecycleObservationNotApplicable"), |
| 4387 | + attention: t("runtimeTargetLifecycleObservationAttention"), |
| 4388 | + unavailable: t("runtimeTargetLifecycleObservationUnavailable"), |
| 4389 | + }[value] || t("runtimeTargetLifecycleObservationUnavailable"); |
| 4390 | + } |
| 4391 | + |
| 4392 | + function runtimeTargetLifecycleOrderEvidenceLabel(value) { |
| 4393 | + return { |
| 4394 | + not_collected: t("runtimeTargetLifecycleOrderEvidenceNotCollected"), |
| 4395 | + }[value] || t("runtimeTargetLifecycleOrderEvidenceNotCollected"); |
| 4396 | + } |
| 4397 | + |
4368 | 4398 | function runtimeTargetLifecycleDispositionLabel(value) { |
4369 | 4399 | return { |
4370 | 4400 | continue_enabled_monitoring: t("runtimeTargetLifecycleDispositionEnabled"), |
|
4419 | 4449 | const configuration = target.target || {}; |
4420 | 4450 | const monitoring = target.monitoring || {}; |
4421 | 4451 | const disposition = target.disposition || {}; |
| 4452 | + const executionObservation = entry.execution_observation || {}; |
4422 | 4453 | const card = document.createElement("article"); |
4423 | 4454 | card.className = "health-card"; |
4424 | 4455 | const main = document.createElement("div"); |
|
4440 | 4471 | detail.textContent = t("runtimeTargetLifecycleDetail") |
4441 | 4472 | .replace("{guard}", runtimeTargetLifecycleCheckLabel(monitoring.runtime_guard)) |
4442 | 4473 | .replace("{heartbeat}", runtimeTargetLifecycleCheckLabel(monitoring.execution_heartbeat)); |
4443 | | - main.append(meta, title, reason, detail); |
| 4474 | + const observation = document.createElement("div"); |
| 4475 | + observation.className = "health-card__meta"; |
| 4476 | + observation.textContent = t("runtimeTargetLifecycleObservation") |
| 4477 | + .replace("{observation}", runtimeTargetLifecycleObservationLabel(executionObservation.code)) |
| 4478 | + .replace("{evidence}", runtimeTargetLifecycleOrderEvidenceLabel(executionObservation.order_or_fill_evidence)); |
| 4479 | + main.append(meta, title, reason, detail, observation); |
4444 | 4480 |
|
4445 | 4481 | const stateBlock = document.createElement("div"); |
4446 | 4482 | stateBlock.className = "health-card__score"; |
|
0 commit comments