[SEN] 在 GoAdmin 基线上重建多边形区域与方向警戒线配置 #69

Closed
opened 2026-08-14 10:26:40 +08:00 by ila · 3 comments
Owner

状态

已完成

基本信息

  • 类型:需求 / 新 GoAdmin 基线重建
  • 任务类型:单项目独立任务
  • 主项目:Sense
  • 主 agent:Sense agent
  • 所属 Epic:#7
  • 所属 MVP:#8
  • 前置工单:#68
  • 是否允许与前置工单并行:否
  • 原因:区域几何必须绑定已可监看的设备 Profile、分辨率与画面坐标,才能可靠校准。
  • 独立运行:Brain、Bell 均不启动时完成实现和验收

原始需求与追溯

  • 来源:用户于 2026-08-14 要求先建立 Sense 全部独立任务工单;Product-Requirements、Product-Roadmap、Requirements-Migration-Matrix。
  • 需求摘要:在 #61 冻结 GoAdmin/go-admin-ui 源码派生骨架上,重新实现 Sense 独立纵切;旧 explore 只用于业务、测试和故障证据,不复制自研基础框架。
  • 历史对照:#27 和已确认 Sense 原型中的区域绘制与重校准规则。

目标

实现设备/Profile 绑定的多边形区域和方向警戒线版本配置,并在 Profile、分辨率或能力变化时显式标记需要重新校准。

做什么

实现区域/警戒线列表、绘制、编辑、校验、版本、启停和审计;复用通用表单/Dialog/Tag,只为画布绘制新增业务组件。

不做什么

不实现 Brain 区域判定;不发布跨项目区域契约;不做人脸、热力图或复杂地图;不静默重投影旧几何。

GoAdmin 复用与文档门禁

  • 必须沿用 #61 建立的 Cobra、Gin、GORM、Casbin、JWT、迁移、Router、Store、Axios、Layout 和权限链。
  • 优先复用 go-admin-ui 的页面容器、搜索栏、表格、表单、分页、Dialog、Tag、权限按钮和反馈组件。
  • 冻结 go-admin-doc 必查:models.md、dto.md、service.md、db.md,以及 go-admin-ui 表单、Dialog、Tag、权限按钮。
  • 在工单评论记录实际阅读文件、采用方式及无法复用而新增的业务组件。
  • 不永久删除默认模块;无关能力采用菜单、路由、权限和后端访问同时禁用。

写路径

  • Sense/server/app/sense/area/**
  • Sense/server/cmd/migrate/migration/version/*area*
  • Sense/ui/src/views/sense/area/**
  • Sense/ui/src/api/sense/area*
  • Sense/ui/src/components/sense/geometry-editor/**
  • Sense/tests/area/**
  • Sense/server/app/admin/router/sense_area.go
  • Sense/server/app/sense/admission/service.go
  • Sense/server/app/sense/admission/service_test.go
  • Sense/ui/tests/unit/sense/area*.spec.js

禁止写入:Brain/**、Bell/**、contracts/**、根级部署配置、docs/**、wiki-docs.json。如实现发现必须修改这些路径,停止并转协同工单。

文档影响

更新区域、方向线、坐标、版本、重新校准状态和管理员操作说明。

长期文档先更新 Gitea Wiki;本地 docs/ 镜像由单一协调工单同步,避免共享路径冲突。

验收标准

  • 多边形与方向线几何校验、版本并发和审计成立
  • 配置绑定明确的 Device/Profile/分辨率
  • Profile、分辨率或能力变化触发 needs_recalibration
  • 旧版本可追溯但不能被静默覆盖
  • 画布键盘/鼠标操作、错误反馈和视觉风格一致
  • Brain/Bell 未启动时可独立保存、读取和预览配置

验证方式

  • 几何、版本、并发、重校准和 PostgreSQL 集成测试
  • 前端画布、表单、可访问性、lint 与 build
  • 浏览器人工绘制/编辑/冲突 smoke
  • 不启动 Brain/Bell 的独立验收

风险与回退

错误坐标可能导致安全规则失准。所有几何绑定 Profile 版本并阻止静默迁移;回退新增版本,不覆盖历史配置。

协同需求摘要

本工单不建立跨项目契约。发现 Sense→Brain 源/区域配置或 Sense/Brain→Bell 事件/证据需求时,只记录生产者、消费者、目的与建议验证,不取得共享写路径。

需求变化记录

  • 2026-08-15:实施检查确认 Sense 的正式迁移入口位于 Sense/server/cmd/migrate/migration/version/,将原不存在的 Sense/server/database/migrations/*area* 修正为实际迁移路径,并补充 GoAdmin Router、前端单测路径。
  • 2026-08-15:Profile 替换的唯一正式写入点位于 admission service;为在分辨率、编码、Profile 删除/替换时主动标记 needs_recalibration,纳入 admission/service.go 及其测试。仍只影响 Sense,不改变跨项目边界或验收目标。

实施与验证结果

  • 实现提交:17bd383;长期文档镜像提交:f82dd51;任务归档提交:afd4dab;最终 Wiki 镜像同步:55be480。
  • 评审 PR:#87,feature/69-sense-area → dev,当前 open 且可合并;未合并、未关闭本工单。
  • 后端:新增不可变区域版本、PostgreSQL 行锁与期望版本冲突控制、Device/Profile/分辨率服务端绑定、Profile 替换重校准和 GoAdmin Casbin 权限。
  • 前端:复用 go-admin-ui/Element Plus 通用布局和组件,只新增支持鼠标与键盘操作、可见焦点及 ARIA 错误反馈的几何编辑器。
  • 验证通过:go test ./...、go vet ./...、go build ./...、race 测试、PostgreSQL 17 实库迁移/策略/并发测试、pnpm lint、45 个前端单测、生产构建和 Edge/Playwright 烟测。
  • 长期 Wiki revisions:Architecture 0ba2909431bd、Business Rules 2bcd90c50818、Local Development 31cad04ab68e、Troubleshooting 3523b7cd1f12。
  • 任务归档:Task-69-Sense多边形区域与方向警戒线配置,revision 107d58783efef0d9876f082d5e61ed2b5bc6045d,镜像 docs/task/69-Sense多边形区域与方向警戒线配置.md。
  • python dev_scripts/sync_wiki_docs.py --check:通过。
  • 未验证:客户现场授权摄像头、实际部署反向代理及目标客户浏览器上的端到端人工操作。

人工验收与合并

  • 2026-08-15:用户明确确认“#69 验收通过”。
  • 功能 PR #87 已合入 dev,合并提交:61b79db9f72db3ca8b7187898b34763d9cab806c。
  • 验收归档 PR #88 已合入 dev,合并提交:cf50c285f4876d2d99dedef60e46d6e5adc69511。
  • 已同步父 MVP #8 的 #69 子任务索引;#8 尚有 #70、#71 及 Brain/Bell 范围,因此保持打开。
  • 本次未合入 main。
## 状态 已完成 ## 基本信息 - 类型:需求 / 新 GoAdmin 基线重建 - 任务类型:单项目独立任务 - 主项目:Sense - 主 agent:Sense agent - 所属 Epic:#7 - 所属 MVP:#8 - 前置工单:#68 - 是否允许与前置工单并行:否 - 原因:区域几何必须绑定已可监看的设备 Profile、分辨率与画面坐标,才能可靠校准。 - 独立运行:Brain、Bell 均不启动时完成实现和验收 ## 原始需求与追溯 - 来源:用户于 2026-08-14 要求先建立 Sense 全部独立任务工单;Product-Requirements、Product-Roadmap、Requirements-Migration-Matrix。 - 需求摘要:在 #61 冻结 GoAdmin/go-admin-ui 源码派生骨架上,重新实现 Sense 独立纵切;旧 `explore` 只用于业务、测试和故障证据,不复制自研基础框架。 - 历史对照:#27 和已确认 Sense 原型中的区域绘制与重校准规则。 ## 目标 实现设备/Profile 绑定的多边形区域和方向警戒线版本配置,并在 Profile、分辨率或能力变化时显式标记需要重新校准。 ## 做什么 实现区域/警戒线列表、绘制、编辑、校验、版本、启停和审计;复用通用表单/Dialog/Tag,只为画布绘制新增业务组件。 ## 不做什么 不实现 Brain 区域判定;不发布跨项目区域契约;不做人脸、热力图或复杂地图;不静默重投影旧几何。 ## GoAdmin 复用与文档门禁 - 必须沿用 #61 建立的 Cobra、Gin、GORM、Casbin、JWT、迁移、Router、Store、Axios、Layout 和权限链。 - 优先复用 go-admin-ui 的页面容器、搜索栏、表格、表单、分页、Dialog、Tag、权限按钮和反馈组件。 - 冻结 go-admin-doc 必查:`models.md`、`dto.md`、`service.md`、`db.md`,以及 go-admin-ui 表单、Dialog、Tag、权限按钮。 - 在工单评论记录实际阅读文件、采用方式及无法复用而新增的业务组件。 - 不永久删除默认模块;无关能力采用菜单、路由、权限和后端访问同时禁用。 ## 写路径 - `Sense/server/app/sense/area/**` - `Sense/server/cmd/migrate/migration/version/*area*` - `Sense/ui/src/views/sense/area/**` - `Sense/ui/src/api/sense/area*` - `Sense/ui/src/components/sense/geometry-editor/**` - `Sense/tests/area/**` - `Sense/server/app/admin/router/sense_area.go` - `Sense/server/app/sense/admission/service.go` - `Sense/server/app/sense/admission/service_test.go` - `Sense/ui/tests/unit/sense/area*.spec.js` 禁止写入:`Brain/**`、`Bell/**`、`contracts/**`、根级部署配置、`docs/**`、`wiki-docs.json`。如实现发现必须修改这些路径,停止并转协同工单。 ## 文档影响 更新区域、方向线、坐标、版本、重新校准状态和管理员操作说明。 长期文档先更新 Gitea Wiki;本地 `docs/` 镜像由单一协调工单同步,避免共享路径冲突。 ## 验收标准 - [x] 多边形与方向线几何校验、版本并发和审计成立 - [x] 配置绑定明确的 Device/Profile/分辨率 - [x] Profile、分辨率或能力变化触发 needs_recalibration - [x] 旧版本可追溯但不能被静默覆盖 - [x] 画布键盘/鼠标操作、错误反馈和视觉风格一致 - [x] Brain/Bell 未启动时可独立保存、读取和预览配置 ## 验证方式 - 几何、版本、并发、重校准和 PostgreSQL 集成测试 - 前端画布、表单、可访问性、lint 与 build - 浏览器人工绘制/编辑/冲突 smoke - 不启动 Brain/Bell 的独立验收 ## 风险与回退 错误坐标可能导致安全规则失准。所有几何绑定 Profile 版本并阻止静默迁移;回退新增版本,不覆盖历史配置。 ## 协同需求摘要 本工单不建立跨项目契约。发现 Sense→Brain 源/区域配置或 Sense/Brain→Bell 事件/证据需求时,只记录生产者、消费者、目的与建议验证,不取得共享写路径。 ## 需求变化记录 - 2026-08-15:实施检查确认 Sense 的正式迁移入口位于 `Sense/server/cmd/migrate/migration/version/`,将原不存在的 `Sense/server/database/migrations/*area*` 修正为实际迁移路径,并补充 GoAdmin Router、前端单测路径。 - 2026-08-15:Profile 替换的唯一正式写入点位于 admission service;为在分辨率、编码、Profile 删除/替换时主动标记 `needs_recalibration`,纳入 `admission/service.go` 及其测试。仍只影响 Sense,不改变跨项目边界或验收目标。 ## 实施与验证结果 - 实现提交:`17bd383`;长期文档镜像提交:`f82dd51`;任务归档提交:`afd4dab`;最终 Wiki 镜像同步:`55be480`。 - 评审 PR:#87,`feature/69-sense-area → dev`,当前 open 且可合并;未合并、未关闭本工单。 - 后端:新增不可变区域版本、PostgreSQL 行锁与期望版本冲突控制、Device/Profile/分辨率服务端绑定、Profile 替换重校准和 GoAdmin Casbin 权限。 - 前端:复用 go-admin-ui/Element Plus 通用布局和组件,只新增支持鼠标与键盘操作、可见焦点及 ARIA 错误反馈的几何编辑器。 - 验证通过:`go test ./...`、`go vet ./...`、`go build ./...`、race 测试、PostgreSQL 17 实库迁移/策略/并发测试、`pnpm lint`、45 个前端单测、生产构建和 Edge/Playwright 烟测。 - 长期 Wiki revisions:Architecture `0ba2909431bd`、Business Rules `2bcd90c50818`、Local Development `31cad04ab68e`、Troubleshooting `3523b7cd1f12`。 - 任务归档:`Task-69-Sense多边形区域与方向警戒线配置`,revision `107d58783efef0d9876f082d5e61ed2b5bc6045d`,镜像 `docs/task/69-Sense多边形区域与方向警戒线配置.md`。 - `python dev_scripts/sync_wiki_docs.py --check`:通过。 - 未验证:客户现场授权摄像头、实际部署反向代理及目标客户浏览器上的端到端人工操作。 ## 人工验收与合并 - 2026-08-15:用户明确确认“#69 验收通过”。 - 功能 PR #87 已合入 `dev`,合并提交:`61b79db9f72db3ca8b7187898b34763d9cab806c`。 - 验收归档 PR #88 已合入 `dev`,合并提交:`cf50c285f4876d2d99dedef60e46d6e5adc69511`。 - 已同步父 MVP #8 的 #69 子任务索引;#8 尚有 #70、#71 及 Brain/Bell 范围,因此保持打开。 - 本次未合入 `main`。
ila added the kind/taskproject/sensescope/independentpriority/p0 labels 2026-08-14 10:26:40 +08:00
Author
Owner

开始实施。前置 #68 已验收关闭并合入 dev;分支 feature/69-sense-area 从 dev@020bf3f 创建,工作区初始干净。

已读取冻结 go-admin-doc:

  • docs/intro/advanced/models.md:沿用明确 TableName、模型字段和审计字段约定。
  • docs/intro/advanced/dto.md:分页/筛选请求独立 DTO,输入在进入服务前后均做严格校验。
  • docs/intro/advanced/service.md:业务事务、分页、对象不存在和并发错误由 Service 层处理。
  • docs/intro/advanced/db.md:PostgreSQL 表名、时间、创建/更新人字段与迁移规范。

UI 复用 go-admin-ui BasicLayout、Axios、Element Plus 表单/表格/分页/Dialog/Tag/Alert/权限按钮;现有通用组件无法表达视频坐标点选与警戒线方向,因此仅新增 geometry-editor 业务组件。UI/UX 检查采用:保持现有 GoAdmin 视觉而不采用独立主题;鼠标与键盘都有绘制路径;错误使用文字与 aria-live,不仅靠颜色;可见焦点、撤销/清空、保存加载态和未保存关闭确认;画布固定比例避免布局跳动。

代码图 MCP 当前未提供可调用工具,已按仓库规则回退到 rg 和定点读取。

开始实施。前置 #68 已验收关闭并合入 `dev`;分支 `feature/69-sense-area` 从 `dev@020bf3f` 创建,工作区初始干净。 已读取冻结 go-admin-doc: - `docs/intro/advanced/models.md`:沿用明确 TableName、模型字段和审计字段约定。 - `docs/intro/advanced/dto.md`:分页/筛选请求独立 DTO,输入在进入服务前后均做严格校验。 - `docs/intro/advanced/service.md`:业务事务、分页、对象不存在和并发错误由 Service 层处理。 - `docs/intro/advanced/db.md`:PostgreSQL 表名、时间、创建/更新人字段与迁移规范。 UI 复用 go-admin-ui BasicLayout、Axios、Element Plus 表单/表格/分页/Dialog/Tag/Alert/权限按钮;现有通用组件无法表达视频坐标点选与警戒线方向,因此仅新增 `geometry-editor` 业务组件。UI/UX 检查采用:保持现有 GoAdmin 视觉而不采用独立主题;鼠标与键盘都有绘制路径;错误使用文字与 aria-live,不仅靠颜色;可见焦点、撤销/清空、保存加载态和未保存关闭确认;画布固定比例避免布局跳动。 代码图 MCP 当前未提供可调用工具,已按仓库规则回退到 `rg` 和定点读取。
Author
Owner

实施闭环完成,现提交人工验收:

  • PR:#87(feature/69-sense-area → dev),保持 open,未合并。
  • 代码与文档提交:17bd383、f82dd51、afd4dab、55be480。
  • 任务归档 Wiki revision:107d58783efef0d9876f082d5e61ed2b5bc6045d。
  • python dev_scripts/sync_wiki_docs.py --check 最终通过。
  • 全部自动化验证结果和未覆盖的客户现场验证已写入工单及归档。

工单状态已更新为“待验收”,等待用户明确验收;本次未关闭工单、未合并 PR。

实施闭环完成,现提交人工验收: - PR:#87(`feature/69-sense-area → dev`),保持 open,未合并。 - 代码与文档提交:`17bd383`、`f82dd51`、`afd4dab`、`55be480`。 - 任务归档 Wiki revision:`107d58783efef0d9876f082d5e61ed2b5bc6045d`。 - `python dev_scripts/sync_wiki_docs.py --check` 最终通过。 - 全部自动化验证结果和未覆盖的客户现场验证已写入工单及归档。 工单状态已更新为“待验收”,等待用户明确验收;本次未关闭工单、未合并 PR。
ila closed this issue 2026-08-15 09:37:38 +08:00
Author
Owner

用户已验收通过。功能 PR #87 与验收归档 PR #88 均已合入 dev;任务 Wiki revision c679c3c2b41a190480732cd28cc52083c76843e5,父 MVP #8 的 #69 索引已勾选。本工单现关闭,未合入 main。

用户已验收通过。功能 PR #87 与验收归档 PR #88 均已合入 `dev`;任务 Wiki revision `c679c3c2b41a190480732cd28cc52083c76843e5`,父 MVP #8 的 #69 索引已勾选。本工单现关闭,未合入 `main`。
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ila/yovision#69