5.2 KiB
generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件) wiki_page: Architecture-and-Code-Map wiki_url: https://git.ilapage.cn/ila/yovision/wiki/Architecture-and-Code-Map.- wiki_revision: 7619efaad2d1e5567ceb9474b8a059c48f34973e synchronized_at: 2026-08-14T03:13:56Z
架构与代码地图
项目定位
YoVision 采用单仓三项目、两个销售产品的结构。单仓用于保持共享契约和端到端验证一致,不代表共享认证、数据库或发布生命周期。
摄像头 / RTSP / ONVIF
│
v
Sense(设备、媒体、区域、运维)
│ 版本化媒体/配置契约
v
Brain(推理、跟踪、区域判定、事件 mapper)
│ 标准事件契约
v
Bell(事件入站、规则、Alert、ack/close、升级、通知)
Bell 也可接收合成事件、传感器平台或第三方系统事件;Sense 与 Brain 不得成为 Bell 的启动依赖。Sense 未配置 Bell 时仍可完成设备接入、实时监看、区域配置、运维和本地事件查看。
代码地图
| 能力 | 路径 | 首个阅读入口 | 验证位置 | 风险 |
|---|---|---|---|---|
| Sense 产品 | Sense/ |
Sense/AGENTS.md、Sense/README.md、Sense/server/main.go、Sense/ui/src/main.js |
Sense/server/ Go 测试;Sense/ui/ lint/单测/构建 |
高:GoAdmin 派生、设备、媒体、凭据 |
| Brain 推理 | Brain/ |
Brain/AGENTS.md;后续包入口 |
Brain/ 内测试与契约测试 |
高:模型、GPU、隐私、事件语义 |
| Bell 产品 | Bell/ |
Bell/AGENTS.md;待 GoAdmin 派生工单建立 README/入口 |
待新骨架建立 | 高:GoAdmin 派生、认证、事件与告警状态机 |
| 共享契约 | contracts/ |
contracts/AGENTS.md |
三端消费者/生产者测试 | 高:兼容性与跨项目影响 |
| Harness | dev_scripts/ |
check_harness.py |
tests/ |
中 |
| 工单模板 | .gitea/issue_template/ |
task.md |
Harness 严格检查 | 中 |
| Wiki 镜像 | docs/ |
docs/README.md |
sync_wiki_docs.py --check |
低;禁止直接编辑 |
旧 Sense、Bell 入口仅存在于 explore 快照,不是 main / dev 当前代码地图。三个项目的新入口必须随新骨架工单建立;不得把旧自研基础框架复制回 dev。
两条主要执行路径
独立产品路径
Sense:独立登录 → 添加摄像头 → ONVIF/RTSP 验证 → 实时画面 → 绘制区域
Bell:独立登录 → 接收合成/第三方事件 → 规则匹配 → Alert → ack → close
可选集成路径
Sense/Brain 生成事件
→ Sense 持久 Outbox 或 Brain 可靠投递
→ Bell 版本化事件 API
→ (producer_id, source_event_id) 幂等入站
→ Rule → Alert → Delivery/Escalation → ack/close
集成断开不得阻断任一产品核心能力;恢复后按 Outbox 和幂等收据继续。
数据与安全边界
- Sense 与 Bell 拥有独立账户、会话、RBAC、审计、数据库角色和备份恢复。
- Brain 业务无状态,不持有用户、Alert 或通知真相。
- 产品间不做跨库 SQL,不共享 JWT/Cookie,不发送摄像头凭据或内部文件路径。
contracts/是跨项目字段与语义唯一事实来源;发布契约不可原地破坏。- MediaMTX 是数据面独立进程;GoAdmin/GORM 只承担管理面和普通 CRUD。
不可破坏的边界
- 16 是默认配额,不是数组、数据库、分页或循环硬上限。
- Event 与 Alert 分离;Event 不可变,状态变化与处置结果只追加。
- 模型输出观测,规则作业务判定;模型升级不能暗改事件语义。
- 业务预警与运维告警分开。
- Area/设备/规则在各独立产品内有自己的业务投影,不以共享数据库同步。
- 单项目工单不得顺带修改其他项目;共享契约变更必须由协调工单统筹。
Sense 新代码入口
Sense 已由工单 #61 从冻结 go-admin/go-admin-ui 源码建立:后端入口为 Sense/server/main.go,前端入口为 Sense/ui/src/main.js,来源和完整 commit 记录在 Sense/LICENSES/SOURCES.md。后端保留 Cobra、Gin、GORM、Casbin、JWT 和迁移体系,前端保留 Router、Store、API、Layout、动态菜单与权限指令。初始可见模块仅保留用户、角色、菜单和登录/操作审计;上游作业、代码生成、监控等源码暂留用于升级追溯,但路由及用户入口不启用。仓库不提供默认账号、默认密码或可用 JWT 密钥。
Sense 旧 MVP 对照
旧设备、ONVIF/RTSP、MediaMTX、实时监看和区域配置实现保存在 explore。迁移时只提取已确认业务需求和必要业务适配器;通用认证、权限、菜单、请求封装和管理端外壳必须优先使用 GoAdmin/go-admin-ui。
Bell 旧 MVP 对照
旧 Event → Rule → Alert → ack/close 实现在 explore。迁移时保留业务语义、不可变与幂等约束,但新的通用认证、RBAC、菜单、审计和管理端外壳必须基于冻结 GoAdmin 源码。