Files
yovision/docs/04-local-development-and-verification.md
T

158 lines
6.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!-- gitea-wiki-mirror:start -->
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: e97ea48e8028118b2dcdf4e5fb0199d2ad7e824e
synchronized_at: 2026-08-14T03:14:04Z
<!-- gitea-wiki-mirror:end -->
# 本地开发与验证
## 环境要求
| 工具 | 当前用途 | 检查命令 |
|---|---|---|
| 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 | `cd Sense/server; go build ./...`、`cd Sense/ui; corepack pnpm@9.15.1 build:prod` | `go test ./...`、`go vet ./...`、前端 lint/单测 | `sense server -c <仓库外配置>` | GoAdmin 源码骨架已建立;业务模块待后续工单 |
| 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-runtime:start -->
## Sense 本地构建与验证
Sense 后端与前端已由工单 #61 从冻结源码建立。先确认 Go 1.26.5、Node 22.22.1 和 pnpm 9.15.1,再执行:
```powershell
cd Sense/server
go test ./...
go vet ./...
go build ./...
cd ../ui
corepack pnpm@9.15.1 install --frozen-lockfile
corepack pnpm@9.15.1 lint
corepack pnpm@9.15.1 test:unit
corepack pnpm@9.15.1 build:prod
```
数据库固定为 PostgreSQL。复制 `Sense/server/config/settings.yml` 到仓库外,填写连接串和至少 32 个字符的随机 JWT 密钥;仓库模板本身不可直接启动生产服务,也不包含默认管理员。迁移和启动命令分别为 `sense migrate -c <配置路径>` 与 `sense server -c <配置路径>`。详细来源与安全约束见 `Sense/LICENSES/SOURCES.md` 和 `Sense/README.md`.
<!-- sense-runtime:end -->
<!-- bell-runtime:start -->
## Bell 本地构建与验证
新 Bell 尚未初始化。骨架工单必须从冻结 GoAdmin 源码建立并验证独立构建、数据库、认证和前端流程;旧 Bell 命令只在 `explore` 对应提交中适用。
<!-- bell-runtime:end -->
<!-- sense-windows-package:start -->
## Sense Windows 打包状态
旧 Sense Windows 包脚本只属于 `explore` 快照。新的打包命令必须在 GoAdmin 派生骨架和业务迁移完成后由独立工单重新建立、验证和记录。
<!-- sense-windows-package:end -->
## 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 或相似视觉不算通过。