generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件) wiki_page: Local-Development-and-Verification wiki_url: https://git.ilapage.cn/ila/yovision/wiki/Local-Development-and-Verification.- wiki_revision: 1730ec258fb54c1b4be15ce0f6e1a18e44281810 synchronized_at: 2026-08-14T01:06:22Z # 本地开发与验证 ## 环境要求 | 工具 | 当前用途 | 检查命令 | |---|---|---| | Git | 版本和工作区保护 | `git --version` | | Python 3 | Harness 脚本和测试 | `python --version` | | Gitea | 工单与 Wiki | 浏览仓库或调用 MCP | | Gitea PAT | Wiki 写入 | 仅由 MCP 或 `GITEA_TOKEN` 提供,不打印 | Sense/Bell 的 Go、Node 与 pnpm 基线已冻结并记录于下文;Brain 的 Python/CUDA 以及 PostgreSQL、MediaMTX 精确版本仍将在对应骨架工单冻结。旧仓库环境不自动成为新项目事实。 ## 第一次运行 1. 检查工作区: ```powershell git status --short --branch ``` 预期:显示 `main` 和本任务创建的引导文件,没有来源不明改动。 2. 检查 Harness: ```powershell python dev_scripts/check_harness.py --strict ``` 预期:输出“DevHarness 检查通过”。 3. 运行 Harness 测试: ```powershell python -m unittest discover -s tests -v ``` 预期:全部测试为 `ok`。 4. 对照 Wiki: ```powershell python dev_scripts/sync_wiki_docs.py --check ``` 预期:全部映射一致。 ## 子项目命令状态 | 项目 | 构建 | 测试 | 运行 | 当前状态 | |---|---|---|---|---| | Sense | 待骨架工单冻结 | 待冻结 | 待冻结 | 未初始化业务代码 | | Brain | 待骨架工单冻结 | 待冻结 | 待冻结 | 未初始化业务代码 | | Bell | 待 GoAdmin 派生工单建立 | 待建立 | 待建立 | 旧实现仅在 `explore`;新基线未初始化 | 不得复制旧仓库命令来填空。每个骨架工单必须同时建立 README、可复制命令和最小测试。 ## 常用调试方式 - Harness 语法:`python -m compileall -q dev_scripts tests`。 - 单测:`python -m unittest tests.test_harness_docs -v`。 - 查看差异:`git diff --check`、`git diff`。 - 查看 Wiki 配置:只查看 `wiki-docs.json`,不得打印 token。 - 跨项目问题先验证契约,再分别验证生产者和消费者,不直接修改两端猜测修复。 ## 测试数据与日志 - 只使用合成或脱敏事件、合成 RTSP 和明确授权的实验室设备。ONVIF 自动化测试需覆盖 Basic、Digest challenge、Media 服务发现、跨主机地址归一化、拒绝地址凭据和禁止重定向。 - 不提交真实视频、客户名称、地址、手机号、摄像头密码或通知凭据;真实设备验证只记录状态与 Profile 数量,不记录设备地址、Authorization 或 Stream URI。 - 日志必须可按 request/event/alert ID 追踪,但不得记录 Authorization、Cookie 或连接密钥。 ## 完成修改前 ```powershell python -m unittest discover -s tests -v python dev_scripts/check_harness.py --strict python dev_scripts/sync_wiki_docs.py --check git diff --check git status --short ``` 业务工单还必须运行其声明的子项目测试;跨契约工单必须运行所有受影响项目的契约测试。未执行部分写入工单。 ## Sense/Bell 固定工具链与只读参考源 根 `goadmin-baseline.json` 是机器可读基线。开始 Sense/Bell 骨架或升级工作前,先核对: ```powershell Get-Content .\goadmin-baseline.json git -C D:\github\goadmin\go-admin rev-parse HEAD git -C D:\github\goadmin\go-admin-ui rev-parse HEAD git -C D:\github\goadmin\go-admin-doc rev-parse HEAD go version node --version pnpm --version ``` `D:\github\goadmin` 下三个仓库只允许读取和核对,不允许在其中开发或提交 yovision 产品代码。本机路径不是跨机器事实;缺少该路径时,应从清单中的上游 URL 检出相同 commit 到仓库外目录。 截至 2026-08-12,系统 Go 1.23.0 仍不满足基线;开发机已在仓库外安装并校验隔离 Go 1.26.5,并通过 Corepack 使用 pnpm 9.15.1。Sense、Bell 的后端测试/构建与前端 lint/build 已在该隔离工具链完成。隔离目录是开发机临时事实,不得写入部署配置;其他机器应从官方来源安装相同精确版本。 `go-admin-doc` 只用于理解上游框架;项目自己的架构、开发规则和版本事实仍以 yovision Wiki、Agent 规则与 `goadmin-baseline.json` 为准。 ## Sense 本地构建与验证 新 Sense 尚未初始化。骨架工单必须先验证冻结 go-admin/go-admin-ui commit 与许可证,再记录从上游继承的构建、迁移、启动和测试命令;不得把 `explore` 的自研命令写成新基线事实。 ## Bell 本地构建与验证 新 Bell 尚未初始化。骨架工单必须从冻结 GoAdmin 源码建立并验证独立构建、数据库、认证和前端流程;旧 Bell 命令只在 `explore` 对应提交中适用。 ## Sense Windows 打包状态 旧 Sense Windows 包脚本只属于 `explore` 快照。新的打包命令必须在 GoAdmin 派生骨架和业务迁移完成后由独立工单重新建立、验证和记录。 ## GoAdmin 派生前置检查 每个 Sense/Bell 骨架或基础能力工单在修改前必须: 1. 核对 `goadmin-baseline.json` 中三个完整 commit。 2. 核对本机只读副本或重新检出的上游仓库 HEAD。 3. 阅读任务相关的 go-admin-doc 主题/文件,并把参考项记录到工单。 4. 记录计划继承的 go-admin/go-admin-ui 路径、计划隐藏/禁用的模块和许可证处理。 5. 验证最终产品树确实包含上游派生结构;只使用 Go、Vue、Element Plus 或相似视觉不算通过。