diff --git a/vehicle-data-platform/docs/deployment.md b/vehicle-data-platform/docs/deployment.md index 8786217b..90282643 100644 --- a/vehicle-data-platform/docs/deployment.md +++ b/vehicle-data-platform/docs/deployment.md @@ -127,6 +127,8 @@ ALERT_STREAM_LATENESS_SEC=120 `PLATFORM_RELEASE` is surfaced by `/api/ops/health` at `data.runtime.platformRelease` so operators can confirm which ECS release is currently active after a deployment. +The global monitor persists its navigation workspace in the `/monitor` query string and passes a validated `monitorReturn` only to vehicle detail, track, history and mileage routes. Reverse proxies must preserve query strings on SPA fallback responses. Do not rewrite or decode the nested return value separately: the client accepts only a relative same-application `/monitor` path, canonicalizes filters, pagination and viewport values, and rejects external origins or malformed bounds. Production smoke should request all affected SPA routes and verify that the current `MonitorReturnBar-*` and `monitorContext-*` assets are served from the active release. + All three platform systemd units first load `/opt/lingniu-go-native/env/base.env` for the existing MySQL, Redis, TDengine and Kafka connection settings, then load `platform.env` for platform-specific overrides. `DATA_MODE=production` is mandatory on ECS: a missing or unreachable MySQL connection returns `DATA_STORE_UNAVAILABLE` instead of silently serving demonstration data. Use `DATA_MODE=mock` only for local development. `EXPORT_DIR` must point outside the release symlink. The API writes mode-`0640` CSV files and an atomic `jobs.json` index there; completed tasks survive API restarts, while interrupted queued/running jobs are marked failed and can be recreated. Every job persists its owner account, role/user type, customer/tenant references, resolved VINs and per-vehicle time scope. Non-admin principals can list and download only their own jobs; customers additionally pass a live account-status and vehicle-grant check before execution, every 5,000-row batch and every download. Old ownerless jobs remain visible only to administrators. The browser downloads through an authenticated Blob request rather than a direct anchor, so the Bearer credential is always present. diff --git a/vehicle-data-platform/docs/frontend-production-readiness.md b/vehicle-data-platform/docs/frontend-production-readiness.md index 03d87883..c20ef5af 100644 --- a/vehicle-data-platform/docs/frontend-production-readiness.md +++ b/vehicle-data-platform/docs/frontend-production-readiness.md @@ -307,6 +307,14 @@ The export workspace is owner-aware: each row shows the creating account, author The production gate exported 1,274 location rows for one real VIN. The 215,212-byte CSV contained export audit, vehicle Scope and quality-reason metadata. A guessed ID returned 404, the API restarted successfully, and the file SHA-256 remained `00a4b1a877364f048a06e8bf6d80828e0dacaddd2f946b39b6cd00cfb2e9013e` with no partial file left behind. The release passed all 241 production frontend tests and the TypeScript/Vite build gate. +## 2026-07-16: monitor investigation context continuity + +Release `monitor-context-continuity-20260716170911` makes the global monitor URL the canonical owner of its operator workspace: map/list mode, search and source/status filters, selected VIN, detail visibility, list page and limit, and map zoom/bounds. Child links carry only a validated same-application `/monitor` return path; malformed bounds, unsupported routes and external origins are discarded instead of becoming redirects. + +Vehicle detail, track replay, history and mileage render one shared return bar only when monitor context exists. Track/history/statistics query changes preserve the return parameter, and vehicle-detail investigation links forward it. Direct menu entry remains clean. FleetMap restores the saved WGS-84 bounds midpoint and zoom at construction time and suppresses the selected-vehicle recenter that would otherwise overwrite a restored viewport; fractional zoom levels remain valid and are serialized to two decimal places. + +Route and component tests cover exact context round trips, direct-entry behavior, same-origin validation, malformed viewport rejection, browser-history navigation, four child workflows and saved-map restoration. The complete frontend gate passed 49 files and 251 tests, followed by TypeScript/Vite production build verification. ECS smoke verified 23 current assets, 58 compatibility assets across three generations, all three active services, the authenticated production health release, six SPA routes and both context bundles. + ## Release evidence template - Commit and release identifier diff --git a/vehicle-data-platform/docs/vehicle-data-platform-meeting-todo.md b/vehicle-data-platform/docs/vehicle-data-platform-meeting-todo.md index af1f38f4..e1ee9aa9 100644 --- a/vehicle-data-platform/docs/vehicle-data-platform-meeting-todo.md +++ b/vehicle-data-platform/docs/vehicle-data-platform-meeting-todo.md @@ -219,7 +219,17 @@ ### P0-06 从全局监控进入子功能后保留车辆上下文 -状态:`待开发` +状态:`已完成` + +已上线结果(release `monitor-context-continuity-20260716170911`): + +- 全局监控把地图/列表模式、车牌/VIN 搜索、协议和状态筛选、选中车辆、详情展开/收起、列表分页以及地图 Zoom/边界固化到当前 URL;刷新、浏览器前进/后退和返回页面均使用同一上下文。 +- 从监控车辆详情进入单车详情、轨迹回放、历史数据和里程查询时,附带经过同源校验的 `monitorReturn`;外站地址、非 `/monitor` 地址和非法地图边界会被拒绝,不能形成开放重定向。 +- 四个子页面仅在确实由全局监控进入时显示统一“返回全局监控”栏;直接从菜单进入不会出现误导入口。 +- 轨迹、历史和里程页面在再次查询、重置或使用日期快捷项后继续保留返回上下文;单车详情进入轨迹/历史时也继续传递同一上下文。 +- 地图首次恢复时直接使用保存的中心边界和 Zoom;存在已保存视窗时不会因为已选车辆再次强制缩放或抢夺用户地图操作。合法小数 Zoom 会保留到两位,不再退化为默认级别。 +- 自动化覆盖上下文往返、安全校验、非法参数、直接菜单入口、四个子页面筛选保持、地图恢复及选车联动;全量前端 49 个文件、251 项测试和 TypeScript/Vite 生产构建通过。 +- ECS 原子发布后,23 个当前资源与 58 个前三代兼容资源逐字节校验通过;三个服务均为 active,鉴权健康接口确认 production 数据模式和当前 release,六个 Web 路由及上下文资源烟测通过。 目标: