Compare commits
18
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
027227d253 | ||
|
|
1d8f775226 | ||
|
|
31209ecb8b | ||
|
|
242efe8ee7 | ||
|
|
61d428a2df | ||
|
|
8997348847 | ||
|
|
6b970ccf19 | ||
|
|
45d316dcbf | ||
|
|
67df831bfe | ||
|
|
34bd2f937b | ||
|
|
0e574fe12c | ||
|
|
1e724e9731 | ||
|
|
0ce30e53a4 | ||
|
|
be2c1e3c81 | ||
|
|
8486d90001 | ||
|
|
2285fb0a6d | ||
|
|
7dac43436a | ||
|
|
6ff12e6a27 |
@@ -116,6 +116,11 @@ Gitea 不可用时,输出完整工单草稿并说明阻塞。未经用户明
|
||||
|
||||
## 6. Git 与验证
|
||||
|
||||
- `explore` 是旧实现的只读聚合快照,不接受新功能、修复或文档演进;需要恢复旧行为时从其来源提交读取证据,不在该分支续写产品。
|
||||
- `main` 是用户审核基线,禁止直接开发、直接提交或未经用户明确审核的合并。
|
||||
- 新任务分支必须从当前 `dev` 创建,完成后通过 PR 合回 `dev`;不得把功能分支直接合入 `main`。
|
||||
- `dev` 完成集成测试后仍不能自动进入 `main`;只有用户明确表示审核/验收通过,Agent 才能执行 `dev → main`。
|
||||
- 紧急修复也必须建单并取得用户对分支与合并路径的明确授权,不默认绕过 `dev`。
|
||||
- 提交只包含当前工单相关文件。
|
||||
- 实现提交信息引用工单号,例如:`fix: 修复登录超时 (#123)`。
|
||||
- 不为流程制造空提交。
|
||||
@@ -180,6 +185,30 @@ MVP 内所有单元任务通过后才能做 MVP 集成验收;MVP 通过后才
|
||||
- 16 路是默认交付配额,不得成为数据库、数组、循环、分页、批处理或单机容量的硬上限。
|
||||
- 开始子项目工作前还必须读取对应目录的 `AGENTS.md`;共享契约工作读取 `contracts/AGENTS.md`。
|
||||
|
||||
### go-admin / go-admin-ui 精简与复用
|
||||
|
||||
- Sense、Bell 使用 go-admin 和 go-admin-ui 时遵循“最小可见、最小启用”:只呈现当前产品需要的菜单、路由、权限和接口,不把框架演示或无关管理能力暴露给用户。
|
||||
- 快速交付阶段优先使用配置、菜单权限或路由开关隐藏不用模块。隐藏只移除用户入口,不等于禁用;权限或安全相关能力必须同时关闭前端入口与后端访问能力。
|
||||
- 永久删除默认模块必须单独建立清理工单,先核对代码依赖、数据库对象、权限记录、构建影响、框架升级影响和回退方式,不在业务页面工单中顺手删除。
|
||||
- 新页面优先复用现有布局、表格、表单、弹窗、上传、权限控制和请求封装;现有组件无法满足明确需求时才新增组件,并在工单中说明复用缺口。
|
||||
- 新组件必须沿用项目现有的颜色、字号、间距、状态反馈、交互方式、命名和目录结构;不得引入与整体风格冲突的独立视觉体系。
|
||||
- 不为单个页面直接改变底层公共组件的全局行为。确需全局修改或同时影响 Sense、Bell 时,必须单独建单并明确受影响页面、兼容方式和回归验证;跨产品影响按协同工单处理。
|
||||
- UI 验收至少检查:没有多余入口、没有可见但不可用的失效入口、没有重复实现已有组件,并且视觉与交互保持一致。
|
||||
|
||||
### Sense/Bell GoAdmin 技术基线
|
||||
|
||||
- `goadmin-baseline.json` 是 Sense、Bell 共用的 GoAdmin 上游与工具链版本事实来源;上游 URL 加完整 commit 是可复现标识,tag、`package.json` version、本机目录内容或本机已安装版本都不能替代 commit。
|
||||
- `D:\github\goadmin\go-admin`、`go-admin-ui`、`go-admin-doc` 是当前机器的只读参考副本。Agent 可以读取和验证,不得在这些目录开发、修改或提交 yovision 产品代码。
|
||||
- “基于 go-admin / go-admin-ui 二次开发”必须表现为从 `goadmin-baseline.json` 指定的两个完整上游 commit 导入或派生产品源码,并保留可核对的目录结构、框架启动链、通用认证/RBAC、菜单路由、请求封装及许可证来源;仅采用 Go、Vue、Element Plus、相似目录、页面外观或交互不算满足基线。
|
||||
- 禁止用自建 `net/http`、自建认证/RBAC/会话框架或自制管理端外壳替代 go-admin/go-admin-ui 后仍声称是 GoAdmin 二次开发。确有上游能力无法满足时,必须在独立工单中说明缺口、保留上游扩展边界并等待用户确认。
|
||||
- 每个 Sense/Bell 骨架、基础能力或框架相关工单开始实施前,必须读取任务相关的冻结 `go-admin-doc` 内容,并在工单中记录参考的文档主题或文件、继承的上游路径以及计划隐藏/禁用的默认模块。
|
||||
- 初始化验收必须包含来源证据:上游 URL/commit、实际导入路径、保留的 MIT 文件、相对上游的裁剪/修改清单和构建测试;缺少任一项不得标记为 GoAdmin 骨架完成。
|
||||
- Sense、Bell 必须从同一冻结基线分别初始化,保留独立代码、配置、构建、测试、版本和发布;不得通过共同修改参考仓库形成隐藏的共享实现。
|
||||
- 复制或派生上游代码时必须保留对应 MIT 许可证和版权声明,并记录实际复制来源的 commit。
|
||||
- `go-admin-doc` 只用于理解上游框架用法;yovision 的 Gitea Wiki、`AGENTS.md` 和 `goadmin-baseline.json` 仍是本项目事实来源。
|
||||
- 变更任一上游 commit、Go、Node 或 pnpm 版本必须建立 Sense/Bell 协同升级工单,验证两个产品后再更新基线;不得在单端业务工单中静默升级。
|
||||
- 当前冻结后端要求 Go 1.26.5;本机 Go 1.23.0 不满足要求,安装隔离的正确工具链并完成构建验证前,不得声称后端基线可构建。
|
||||
|
||||
### 三项目并行建单顺序
|
||||
|
||||
客户交付需要 Sense、Brain、Bell 并行推进时,固定使用以下顺序:
|
||||
|
||||
@@ -14,3 +14,21 @@
|
||||
- 每个工单必须写明任务类型、主项目 `Bell`、主 agent、精确 `write_paths`、独立运行方式、测试命令和在 Sense/Brain 未启动时使用合成或第三方事件的验收标准。
|
||||
- 首轮并行建单只创建 Bell 独立工单;发现需要外部事件/证据契约、producer identity、Sense connector、根级部署或端到端测试时,停止扩写本工单,向主 agent 提交协同需求摘要。
|
||||
- 协同需求摘要至少包含生产者、消费者、接口目的、候选事实源、阻塞的 Bell 工单和建议验证;Bell agent 不直接创建契约实现或取得 `contracts/`、`Sense/`、`Brain/` 的写入权。
|
||||
|
||||
## go-admin / go-admin-ui 约束
|
||||
|
||||
- Bell 管理面只启用事件预警、告警处置和通知运维所需的默认能力;框架演示页和无关管理模块优先通过配置、菜单权限或路由开关隐藏。
|
||||
- 涉及权限或安全的不用模块不能只隐藏菜单,必须同时验证前端入口和后端接口均不可访问;永久删除默认模块必须单独建立清理工单。
|
||||
- 新页面优先复用 Bell/go-admin-ui 已有的布局、表格、表单、弹窗、上传、权限控制和请求封装;新增组件前在工单中说明现有组件为何不能满足需求。
|
||||
- 新增组件沿用 Bell 现有颜色、字号、间距、状态反馈、交互方式、命名和目录结构,并验证没有多余入口、失效入口或重复组件。
|
||||
- 修改底层公共组件的全局行为时,必须单独建单并列出所有受影响页面;同时影响 Sense 或共享基线时升级为协同工单。
|
||||
|
||||
## GoAdmin 技术基线
|
||||
|
||||
- 初始化或升级 Bell 前必须读取根 `goadmin-baseline.json`,按其中的 go-admin、go-admin-ui commit 和 Go/Node/pnpm 精确版本实施。
|
||||
- Bell 必须由冻结 go-admin 后端与 go-admin-ui 前端源码直接派生;旧 `explore` 实现只能用于业务语义对照,禁止把其中自研认证、RBAC、会话、HTTP 平台或前端外壳复制为新基础。
|
||||
- 开始每个骨架、认证权限、菜单路由、代码生成、ORM 或通用 UI 工单前,必须读取任务相关的冻结 go-admin-doc,并把参考主题/文件及采用方式写回工单。
|
||||
- 骨架验收必须证明上游来源、继承路径、许可证、裁剪清单和相对上游差异;只有相似技术栈或视觉不能通过验收。
|
||||
- `D:\github\goadmin` 下的仓库仅可只读参考;Bell 产品代码只能写入 `Bell/` 或工单授权路径,不得在参考仓库原地开发。
|
||||
- 派生上游代码必须保留 MIT 许可证和版权声明;上游 `go-admin-doc` 只作框架用法参考,不覆盖 yovision Wiki 和本目录规则。
|
||||
- 变更冻结基线必须升级为 Sense/Bell 协同工单;Bell 可以独立发布,但不得单独漂移上游或工具链版本。
|
||||
|
||||
@@ -9,3 +9,12 @@ YoVision 是一个单仓多项目的智能视频事件平台,包含三个可
|
||||
Sense 与 Bell 是账户、数据、部署和发布边界完全独立的两个销售产品;Brain 是无界面的独立推理交付单元,默认随 Sense 部署。跨项目协作只通过 `contracts/` 中的版本化契约。
|
||||
|
||||
开始工作前阅读 [AGENTS.md](AGENTS.md) 和 [文档中心](docs/README.md)。本仓库采用 DevHarness:Gitea 工单记录任务过程,Gitea Wiki 保存长期文档,`docs/` 是 Wiki 的只读镜像。
|
||||
|
||||
## 分支模型
|
||||
|
||||
- `explore`:2026-08-14 前实现的只读聚合快照,用于迁移对照和回退。
|
||||
- `main`:用户审核通过的基线,禁止直接开发。
|
||||
- `dev`:集成开发与测试分支;任务分支从 `dev` 创建并通过 PR 返回 `dev`。
|
||||
- 只有用户明确审核通过,才能将 `dev` 合入 `main`。
|
||||
|
||||
Sense 与 Bell 的新实现必须从根 `goadmin-baseline.json` 冻结的 go-admin 和 go-admin-ui 完整提交派生,开发时必须核对对应 commit 的 go-admin-doc。仅参考 GoAdmin 的技术栈、布局或视觉不属于本项目认可的二次开发。
|
||||
|
||||
@@ -14,3 +14,21 @@
|
||||
- 每个工单必须写明任务类型、主项目 `Sense`、主 agent、精确 `write_paths`、独立运行方式、测试命令和在 Bell/Brain 未启动时的验收标准。
|
||||
- 首轮并行建单只创建 Sense 独立工单;发现需要 Sense→Brain 源/配置契约、Sense/Brain→Bell 事件/证据契约、根级部署或端到端测试时,停止扩写本工单,向主 agent 提交协同需求摘要。
|
||||
- 协同需求摘要至少包含生产者、消费者、接口目的、候选事实源、阻塞的 Sense 工单和建议验证;Sense agent 不直接创建契约实现或取得 `contracts/`、`Brain/`、`Bell/` 的写入权。
|
||||
|
||||
## go-admin / go-admin-ui 约束
|
||||
|
||||
- Sense 管理面只启用智能 NVR、视频感知和本地运维所需的默认能力;框架演示页和无关管理模块优先通过配置、菜单权限或路由开关隐藏。
|
||||
- 涉及权限或安全的不用模块不能只隐藏菜单,必须同时验证前端入口和后端接口均不可访问;永久删除默认模块必须单独建立清理工单。
|
||||
- 新页面优先复用 Sense/go-admin-ui 已有的布局、表格、表单、弹窗、上传、权限控制和请求封装;新增组件前在工单中说明现有组件为何不能满足需求。
|
||||
- 新增组件沿用 Sense 现有颜色、字号、间距、状态反馈、交互方式、命名和目录结构,并验证没有多余入口、失效入口或重复组件。
|
||||
- 修改底层公共组件的全局行为时,必须单独建单并列出所有受影响页面;同时影响 Bell 或共享基线时升级为协同工单。
|
||||
|
||||
## GoAdmin 技术基线
|
||||
|
||||
- 初始化或升级 Sense 前必须读取根 `goadmin-baseline.json`,按其中的 go-admin、go-admin-ui commit 和 Go/Node/pnpm 精确版本实施。
|
||||
- Sense 必须由冻结 go-admin 后端与 go-admin-ui 前端源码直接派生;旧 `explore` 实现只能用于需求和行为对照,禁止把其中自研 HTTP、认证、RBAC、会话或前端外壳复制为新基础。
|
||||
- 开始每个骨架、认证权限、菜单路由、代码生成、ORM 或通用 UI 工单前,必须读取任务相关的冻结 go-admin-doc,并把参考主题/文件及采用方式写回工单。
|
||||
- 骨架验收必须证明上游来源、继承路径、许可证、裁剪清单和相对上游差异;只有相似技术栈或视觉不能通过验收。
|
||||
- `D:\github\goadmin` 下的仓库仅可只读参考;Sense 产品代码只能写入 `Sense/` 或工单授权路径,不得在参考仓库原地开发。
|
||||
- 派生上游代码必须保留 MIT 许可证和版权声明;上游 `go-admin-doc` 只作框架用法参考,不覆盖 yovision Wiki 和本目录规则。
|
||||
- 变更冻结基线必须升级为 Sense/Bell 协同工单;Sense 可以独立发布,但不得单独漂移上游或工具链版本。
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import json
|
||||
import re
|
||||
from pathlib import Path
|
||||
|
||||
@@ -47,9 +48,11 @@ CORE_DOCUMENT_REQUIREMENTS = {
|
||||
"## 阅读入口",
|
||||
"## 常用命令",
|
||||
"## 环境、配置与凭据",
|
||||
"## Sense/Bell GoAdmin 固定技术基线",
|
||||
),
|
||||
"docs/01-workflow.md": (
|
||||
"## 面向初级维护者的修改边界",
|
||||
"## go-admin / go-admin-ui 开发约束",
|
||||
"## 每个任务的文档影响",
|
||||
"## 需求记录与流转",
|
||||
"## 稳定文档与任务归档",
|
||||
@@ -74,6 +77,7 @@ CORE_DOCUMENT_REQUIREMENTS = {
|
||||
),
|
||||
"docs/04-local-development-and-verification.md": (
|
||||
"## 环境要求",
|
||||
"## Sense/Bell 固定工具链与只读参考源",
|
||||
"## 第一次运行",
|
||||
"## 常用调试方式",
|
||||
"## 完成修改前",
|
||||
@@ -139,6 +143,7 @@ REQUIRED_FILES = (
|
||||
"docs/templates/task-archive.md",
|
||||
*CORE_DOCUMENT_REQUIREMENTS,
|
||||
"wiki-docs.json",
|
||||
"goadmin-baseline.json",
|
||||
"dev_scripts/wiki_docs.py",
|
||||
"dev_scripts/sync_wiki_docs.py",
|
||||
".gitea/issue_template/epic.md",
|
||||
@@ -286,6 +291,170 @@ def check_agent_efficiency_rules(errors: list[str], root: Path = ROOT) -> None:
|
||||
errors.append(f"AGENTS.md 缺少:{section}")
|
||||
|
||||
|
||||
def check_go_admin_ui_rules(errors: list[str], root: Path = ROOT) -> None:
|
||||
"""检查 Sense、Bell 共用的框架精简和组件复用规则。"""
|
||||
|
||||
requirements = {
|
||||
"AGENTS.md": (
|
||||
"### go-admin / go-admin-ui 精简与复用",
|
||||
"最小可见、最小启用",
|
||||
"隐藏只移除用户入口,不等于禁用",
|
||||
"永久删除默认模块必须单独建立清理工单",
|
||||
"新页面优先复用现有布局",
|
||||
"不得引入与整体风格冲突的独立视觉体系",
|
||||
"跨产品影响按协同工单处理",
|
||||
"没有可见但不可用的失效入口",
|
||||
),
|
||||
"Sense/AGENTS.md": (
|
||||
"## go-admin / go-admin-ui 约束",
|
||||
"菜单权限或路由开关隐藏",
|
||||
"不能只隐藏菜单",
|
||||
"新增组件前在工单中说明",
|
||||
"同时影响 Bell 或共享基线时升级为协同工单",
|
||||
),
|
||||
"Bell/AGENTS.md": (
|
||||
"## go-admin / go-admin-ui 约束",
|
||||
"菜单权限或路由开关隐藏",
|
||||
"不能只隐藏菜单",
|
||||
"新增组件前在工单中说明",
|
||||
"同时影响 Sense 或共享基线时升级为协同工单",
|
||||
),
|
||||
}
|
||||
for relative_path, required in requirements.items():
|
||||
path = root / relative_path
|
||||
if not path.is_file():
|
||||
errors.append(f"缺少 go-admin 规则文件:{relative_path}")
|
||||
continue
|
||||
content = path.read_text(encoding="utf-8")
|
||||
for section in missing_sections(content, required):
|
||||
errors.append(f"{relative_path} 缺少 go-admin 规则:{section}")
|
||||
|
||||
|
||||
GOADMIN_BASELINE_REQUIREMENTS = {
|
||||
"runtimes": {
|
||||
"go": "1.26.5",
|
||||
"node": "22.22.1",
|
||||
"package_manager": "pnpm",
|
||||
"pnpm": "9.15.1",
|
||||
},
|
||||
"sources": {
|
||||
"go-admin": {
|
||||
"commit": "f06540883b41d03782bb6b2c4150f298f328c6b6",
|
||||
"upstream_url": "https://github.com/go-admin-team/go-admin.git",
|
||||
"branch": "master",
|
||||
"describe": "v2.2.0-25-gf065408",
|
||||
"exact_tag": None,
|
||||
"local_reference_path": r"D:\github\goadmin\go-admin",
|
||||
"license": "MIT",
|
||||
},
|
||||
"go-admin-ui": {
|
||||
"commit": "67d393d713877572fab0b897296a4c1d525fc81d",
|
||||
"upstream_url": "https://github.com/go-admin-team/go-admin-ui.git",
|
||||
"branch": "master",
|
||||
"describe": "v2.0.9-170-g67d393d",
|
||||
"exact_tag": None,
|
||||
"local_reference_path": r"D:\github\goadmin\go-admin-ui",
|
||||
"package_version": "2.0.9",
|
||||
"package_version_is_authoritative": False,
|
||||
"license": "MIT",
|
||||
},
|
||||
"go-admin-doc": {
|
||||
"commit": "424855aacf6905f3fde860c3331385cb25529a0d",
|
||||
"upstream_url": "https://github.com/go-admin-team/go-admin-doc.git",
|
||||
"branch": "master",
|
||||
"describe": "424855a",
|
||||
"exact_tag": None,
|
||||
"local_reference_path": r"D:\github\goadmin\go-admin-doc",
|
||||
"package_version_is_authoritative": False,
|
||||
"license": "MIT",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
def check_goadmin_baseline(errors: list[str], root: Path = ROOT) -> None:
|
||||
"""检查 Sense/Bell 共用上游和工具链基线可复现且规则完整。"""
|
||||
|
||||
path = root / "goadmin-baseline.json"
|
||||
if not path.is_file():
|
||||
errors.append("缺少 GoAdmin 技术基线:goadmin-baseline.json")
|
||||
return
|
||||
try:
|
||||
baseline = json.loads(path.read_text(encoding="utf-8"))
|
||||
except (OSError, UnicodeDecodeError, json.JSONDecodeError) as exc:
|
||||
errors.append(f"GoAdmin 技术基线不是有效 JSON:{exc}")
|
||||
return
|
||||
|
||||
for group, entries in GOADMIN_BASELINE_REQUIREMENTS.items():
|
||||
actual_group = baseline.get(group)
|
||||
if not isinstance(actual_group, dict):
|
||||
errors.append(f"GoAdmin 技术基线缺少对象:{group}")
|
||||
continue
|
||||
for name, expected in entries.items():
|
||||
actual = actual_group.get(name)
|
||||
if isinstance(expected, dict):
|
||||
if not isinstance(actual, dict):
|
||||
errors.append(f"GoAdmin 技术基线缺少来源:{name}")
|
||||
continue
|
||||
for field, value in expected.items():
|
||||
if actual.get(field) != value:
|
||||
errors.append(
|
||||
f"GoAdmin 技术基线不匹配:{name}.{field} 应为 {value}"
|
||||
)
|
||||
elif actual != expected:
|
||||
errors.append(
|
||||
f"GoAdmin 技术基线不匹配:{group}.{name} 应为 {expected}"
|
||||
)
|
||||
|
||||
if baseline.get("authority") != "upstream_url_and_commit":
|
||||
errors.append("GoAdmin 技术基线必须以上游 URL 和 commit 为权威标识")
|
||||
rules = baseline.get("rules")
|
||||
required_rules = (
|
||||
"local_repositories_are_read_only",
|
||||
"product_code_must_not_be_developed_in_reference_repositories",
|
||||
"preserve_upstream_license_and_copyright",
|
||||
"upgrades_require_coordination_issue",
|
||||
"sense_and_bell_release_independently",
|
||||
)
|
||||
if not isinstance(rules, dict):
|
||||
errors.append("GoAdmin 技术基线缺少 rules")
|
||||
else:
|
||||
for rule in required_rules:
|
||||
if rules.get(rule) is not True:
|
||||
errors.append(f"GoAdmin 技术基线规则必须为 true:{rule}")
|
||||
|
||||
agent_requirements = {
|
||||
"AGENTS.md": (
|
||||
"### Sense/Bell GoAdmin 技术基线",
|
||||
"`goadmin-baseline.json`",
|
||||
"上游 URL 加完整 commit 是可复现标识",
|
||||
"当前机器的只读参考副本",
|
||||
"必须建立 Sense/Bell 协同升级工单",
|
||||
"本机 Go 1.23.0 不满足要求",
|
||||
),
|
||||
"Sense/AGENTS.md": (
|
||||
"## GoAdmin 技术基线",
|
||||
"读取根 `goadmin-baseline.json`",
|
||||
"不得在参考仓库原地开发",
|
||||
"不得单独漂移上游或工具链版本",
|
||||
),
|
||||
"Bell/AGENTS.md": (
|
||||
"## GoAdmin 技术基线",
|
||||
"读取根 `goadmin-baseline.json`",
|
||||
"不得在参考仓库原地开发",
|
||||
"不得单独漂移上游或工具链版本",
|
||||
),
|
||||
}
|
||||
for relative_path, required in agent_requirements.items():
|
||||
agent_path = root / relative_path
|
||||
if not agent_path.is_file():
|
||||
errors.append(f"缺少 GoAdmin 基线规则文件:{relative_path}")
|
||||
continue
|
||||
content = agent_path.read_text(encoding="utf-8")
|
||||
for section in missing_sections(content, required):
|
||||
errors.append(f"{relative_path} 缺少 GoAdmin 基线规则:{section}")
|
||||
|
||||
|
||||
def check_claude_code_entry(errors: list[str], root: Path = ROOT) -> None:
|
||||
"""检查 Claude Code 入口直接复用共同 Agent 规则。"""
|
||||
|
||||
@@ -382,6 +551,8 @@ def main() -> int:
|
||||
check_core_documents(errors)
|
||||
check_task_template(errors)
|
||||
check_agent_efficiency_rules(errors)
|
||||
check_go_admin_ui_rules(errors)
|
||||
check_goadmin_baseline(errors)
|
||||
check_claude_code_entry(errors)
|
||||
check_archives(errors)
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件)
|
||||
wiki_page: Project-Profile
|
||||
wiki_url: https://git.ilapage.cn/ila/yovision/wiki/Project-Profile.-
|
||||
wiki_revision: 4a78dc8673d88b05f1c62b254242180a68465ccd
|
||||
synchronized_at: 2026-08-11T10:30:26Z
|
||||
wiki_revision: d32f00a86bb3127485b8ad4da8436bf2117352e0
|
||||
synchronized_at: 2026-08-14T01:06:22Z
|
||||
<!-- gitea-wiki-mirror:end -->
|
||||
|
||||
# 项目档案
|
||||
@@ -19,7 +19,7 @@ synchronized_at: 2026-08-11T10:30:26Z
|
||||
| 首期客户场景 | 民办寄宿学校,默认 16 路高风险点位 |
|
||||
| 首期规则 | 越线、危险区域、聚集等匿名安全规则;不启用人脸 |
|
||||
| 产品形态 | Sense 与 Bell 两个独立销售产品,Brain 为独立推理交付单元 |
|
||||
| 当前阶段 | 新仓库文档与开发流程初始化,业务代码尚未迁移 |
|
||||
| 当前阶段 | 进入 GoAdmin 源码派生重建:旧实现归档于 `explore`,`main` 为审核基线,`dev` 为集成开发分支 |
|
||||
| 历史来源 | `D:\OPC\yovision_old`,只读追溯 |
|
||||
|
||||
## 子项目与交付单元
|
||||
@@ -42,7 +42,7 @@ synchronized_at: 2026-08-11T10:30:26Z
|
||||
- 证据:客户侧 MinIO/S3 兼容对象存储;常态录像优先留在客户已有 NVR。
|
||||
- 首期验证平台:NVIDIA x86/Jetson;M1-M3 不承诺 GB/T 28181、信创或原生 App。
|
||||
|
||||
业务代码尚未初始化,具体 Go/Python/Node 版本必须在对应骨架工单中冻结后更新本页。
|
||||
2026-08-14 起,原 Sense、Bell 实现只在 `explore` 和原功能分支中作为迁移参考,不再作为新开发基础。新的 Sense、Bell 必须从下述冻结 go-admin/go-admin-ui 完整提交派生;实施时必须核对冻结 go-admin-doc。Brain 尚未初始化。
|
||||
|
||||
## 阅读入口
|
||||
|
||||
@@ -78,3 +78,37 @@ Sense、Brain、Bell 的构建、运行和测试命令尚待各自骨架工单
|
||||
- 单仓包含 Sense、Brain、Bell 三个开发项目。
|
||||
- 计划由三名主 agent 尽量并行处理各自独立工单;需要跨项目协作时再建立协调工单并启用新 agent。
|
||||
- 旧仓库在新纵切验收前保留,不删除、不覆盖。
|
||||
|
||||
## Sense/Bell GoAdmin 固定技术基线
|
||||
|
||||
Sense、Bell 共用的可复现技术基线记录在仓库根 `goadmin-baseline.json`。正式版本标识是上游 URL 与完整 commit 的组合;本机目录、分支名、最近 tag 和 `package.json` version 只作辅助信息。
|
||||
|
||||
| 参考源 | 用途 | 冻结提交 | 描述版本 | 本机只读位置 |
|
||||
|---|---|---|---|---|
|
||||
| go-admin | 后端骨架 | `f06540883b41d03782bb6b2c4150f298f328c6b6` | `v2.2.0-25-gf065408` | `D:\github\goadmin\go-admin` |
|
||||
| go-admin-ui | 前端骨架 | `67d393d713877572fab0b897296a4c1d525fc81d` | `v2.0.9-170-g67d393d` | `D:\github\goadmin\go-admin-ui` |
|
||||
| go-admin-doc | 只读用法参考 | `424855aacf6905f3fde860c3331385cb25529a0d` | 无精确 tag | `D:\github\goadmin\go-admin-doc` |
|
||||
|
||||
固定工具链为 Go 1.26.5、Node.js 22.22.1、pnpm 9.15.1。go-admin-ui 的 `package.json` version 仍为 2.0.9,但冻结提交位于 `v2.0.9` 后 170 个提交,因此不得只用“2.0.9”代表当前基线。
|
||||
|
||||
三个上游仓库均使用 MIT 许可证。派生代码必须保留许可证和版权声明。Sense、Bell 使用同一上游基线,但分别维护代码、配置、构建、测试、版本和发布。任何上游或工具链升级必须建立影响 Sense/Bell 的协同工单。
|
||||
|
||||
<!-- sense-runtime:start -->
|
||||
## Sense 重建状态
|
||||
|
||||
当前可运行的旧 Sense 实现保存在 `explore`,不进入新 `main` / `dev` 基线。新 Sense 尚未初始化;后续必须从冻结的 go-admin 后端和 go-admin-ui 前端源码派生,保留上游骨架、许可证和来源证据,并在工单记录实际参考的 go-admin-doc 页面。
|
||||
<!-- sense-runtime:end -->
|
||||
|
||||
|
||||
<!-- bell-runtime:start -->
|
||||
## Bell 重建状态
|
||||
|
||||
当前 Bell MVP 实现在 `explore` 和原功能分支中保留,只作需求、行为和迁移对照。新 Bell 尚未初始化;后续必须从与 Sense 相同的冻结 go-admin/go-admin-ui 基线独立派生,不能复制旧自研基础框架或共享 Sense 的认证与数据库。
|
||||
<!-- bell-runtime:end -->
|
||||
|
||||
## 分支治理
|
||||
|
||||
- `explore`:2026-08-14 前实现的只读聚合快照;不接受新功能。
|
||||
- `main`:用户审核通过的最小/发布基线;禁止直接开发和未经用户明确审核的合并。
|
||||
- `dev`:集成开发与测试分支;功能分支从 `dev` 派生,并通过 PR 合回 `dev`。
|
||||
- 只有用户明确审核通过,才能把 `dev` 合入 `main`。
|
||||
|
||||
+48
-2
@@ -2,8 +2,8 @@
|
||||
generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件)
|
||||
wiki_page: Development-Workflow
|
||||
wiki_url: https://git.ilapage.cn/ila/yovision/wiki/Development-Workflow.-
|
||||
wiki_revision: 5bb7c174f711aa5655cb8c9b28afed7cfacd60d5
|
||||
synchronized_at: 2026-08-11T10:30:31Z
|
||||
wiki_revision: 2bb60b79073439babfda05140ce813d197de81d9
|
||||
synchronized_at: 2026-08-14T01:06:22Z
|
||||
<!-- gitea-wiki-mirror:end -->
|
||||
|
||||
# 开发工作流
|
||||
@@ -238,3 +238,49 @@ python dev_scripts/new_task_archive.py 123 "修复登录超时"
|
||||
| 测试结果与未验证内容 | 是 | 任务归档 | 镜像 |
|
||||
| 提交哈希 | 是 | 任务归档 | 镜像 |
|
||||
| 与具体代码版本绑定的说明 | 可链接 | 提供入口 | 是 |
|
||||
|
||||
## go-admin / go-admin-ui 开发约束
|
||||
|
||||
Sense、Bell 使用 go-admin 和 go-admin-ui 时,采用以下统一流程。“基于 GoAdmin”必须是源码派生,不得解释为仅参考技术栈、目录、页面风格或交互:
|
||||
|
||||
1. 初始化时从 `goadmin-baseline.json` 指定的 go-admin、go-admin-ui 完整 commit 导入/派生产品源码,保留 MIT 许可证、版权和来源清单;不得以自建 `net/http`、自建认证/RBAC 或仅使用 Vue + Element Plus 替代上游骨架。
|
||||
2. 实施工单开始前必须核对冻结 go-admin-doc,并在工单证据中记录参考的文档主题或文件;文档只解释上游用法,不改变本项目需求事实源。
|
||||
|
||||
在满足上述来源门禁后:
|
||||
|
||||
3. 先列出产品实际需要的菜单、路由、权限和接口,只呈现必要能力,框架演示页和无关管理模块不进入产品导航。
|
||||
4. 快速交付阶段优先使用配置、菜单权限或路由开关隐藏模块。隐藏只代表用户看不到入口;涉及权限或安全时,还必须禁用对应后端访问能力并验证直接请求不可用。
|
||||
5. 永久删除默认模块必须单独建立清理工单,核对代码依赖、数据库对象、权限记录、构建、框架升级和回退方式,不能混入普通业务页面工单。
|
||||
6. 新页面先盘点并复用已有布局、表格、表单、弹窗、上传、权限控制和请求封装。只有现有组件无法满足明确需求时才新增组件,并在工单记录复用缺口。
|
||||
7. 新组件沿用所属产品现有的颜色、字号、间距、状态反馈、交互方式、命名和目录结构,不建立独立于整体界面的视觉体系。
|
||||
8. 单页需求不得直接改变底层公共组件的全局行为。确需全局修改时单独建单,列出受影响页面、兼容方式和回归测试;同时影响 Sense、Bell 时按协同工单处理。
|
||||
|
||||
验收至少检查:没有多余入口、没有可见但不可用的失效入口、没有重复实现已有组件,且新增页面与同类页面的视觉和交互一致。
|
||||
|
||||
这里的三个处理级别必须明确区分:
|
||||
|
||||
- 隐藏:保留代码与能力,只移除普通用户入口,便于快速交付和以后恢复。
|
||||
- 禁用:前端入口与后端访问能力均不可用,适用于权限、安全或明确停用的能力。
|
||||
- 删除:清理代码、依赖、数据对象和权限记录,风险较高,必须由独立清理工单实施。
|
||||
|
||||
|
||||
|
||||
## 分支模型与审核门禁
|
||||
|
||||
```text
|
||||
explore(旧实现只读快照)
|
||||
|
||||
dev
|
||||
├── feature/<issue>-sense-...
|
||||
├── feature/<issue>-brain-...
|
||||
├── feature/<issue>-bell-...
|
||||
└── coordination/<issue>-...
|
||||
│
|
||||
└── PR + 测试 → dev → 用户明确审核 → main
|
||||
```
|
||||
|
||||
- `explore` 仅供对照、迁移和回退,不继续开发。
|
||||
- `main` 只接收用户明确审核通过的 `dev` 结果;禁止直接在 `main` 修改、提交或推送。
|
||||
- 新任务分支必须从当前 `dev` 创建,实施完成后 PR 目标为 `dev`。
|
||||
- Agent 的“待验收”不等于允许进入 `main`;只有用户明确审核/验收通过才可执行 `dev → main`。
|
||||
- 紧急修复也必须建单并取得用户对分支与合并路径的明确授权,不默认绕过 `dev`。
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
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: 04b5eaea579729e427f1b2b8962399e861d5eb53
|
||||
synchronized_at: 2026-08-11T10:30:34Z
|
||||
wiki_revision: 119fb7b2a994d54e4d0a40f7bc2ef6238b162387
|
||||
synchronized_at: 2026-08-14T01:06:22Z
|
||||
<!-- gitea-wiki-mirror:end -->
|
||||
|
||||
# 架构与代码地图
|
||||
@@ -31,15 +31,15 @@ Bell 也可接收合成事件、传感器平台或第三方系统事件;Sense
|
||||
|
||||
| 能力 | 路径 | 首个阅读入口 | 验证位置 | 风险 |
|
||||
|---|---|---|---|---|
|
||||
| Sense 产品 | `Sense/` | `Sense/AGENTS.md`;后续 README/入口 | `Sense/` 内测试 | 高:设备、媒体、凭据、并发对账 |
|
||||
| Sense 产品 | `Sense/` | `Sense/AGENTS.md`;待 GoAdmin 派生工单建立 README/入口 | 待新骨架建立 | 高:GoAdmin 派生、设备、媒体、凭据 |
|
||||
| Brain 推理 | `Brain/` | `Brain/AGENTS.md`;后续包入口 | `Brain/` 内测试与契约测试 | 高:模型、GPU、隐私、事件语义 |
|
||||
| Bell 产品 | `Bell/` | `Bell/AGENTS.md`;后续 README/入口 | `Bell/` 内测试 | 高:认证、事件、告警状态机、通知 |
|
||||
| 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`。
|
||||
|
||||
## 两条主要执行路径
|
||||
|
||||
@@ -79,3 +79,22 @@ Sense/Brain 生成事件
|
||||
- 业务预警与运维告警分开。
|
||||
- Area/设备/规则在各独立产品内有自己的业务投影,不以共享数据库同步。
|
||||
- 单项目工单不得顺带修改其他项目;共享契约变更必须由协调工单统筹。
|
||||
|
||||
<!-- sense-runtime:start -->
|
||||
## Sense 新代码入口
|
||||
|
||||
Sense 当前处于重建前的空基线。新入口必须由 GoAdmin 派生工单从冻结 go-admin/go-admin-ui 源码建立,并在来源清单记录上游 commit;不得沿用 `explore` 中自研的 HTTP、认证、RBAC 或前端外壳作为基础框架。
|
||||
<!-- sense-runtime:end -->
|
||||
|
||||
<!-- sense-mvp:start -->
|
||||
## Sense 旧 MVP 对照
|
||||
|
||||
旧设备、ONVIF/RTSP、MediaMTX、实时监看和区域配置实现保存在 `explore`。迁移时只提取已确认业务需求和必要业务适配器;通用认证、权限、菜单、请求封装和管理端外壳必须优先使用 GoAdmin/go-admin-ui。
|
||||
<!-- sense-mvp:end -->
|
||||
|
||||
|
||||
<!-- bell-mvp:start -->
|
||||
## Bell 旧 MVP 对照
|
||||
|
||||
旧 Event → Rule → Alert → ack/close 实现在 `explore`。迁移时保留业务语义、不可变与幂等约束,但新的通用认证、RBAC、菜单、审计和管理端外壳必须基于冻结 GoAdmin 源码。
|
||||
<!-- bell-mvp:end -->
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件)
|
||||
wiki_page: Business-Rules-and-Glossary
|
||||
wiki_url: https://git.ilapage.cn/ila/yovision/wiki/Business-Rules-and-Glossary.-
|
||||
wiki_revision: 7a9645a7ca7f4b3478d27afb2d441238431f501e
|
||||
synchronized_at: 2026-08-11T10:30:38Z
|
||||
wiki_revision: 85ddfe99c2f9c97b18d5e39849a50b8c5fca276e
|
||||
synchronized_at: 2026-08-14T01:17:28Z
|
||||
<!-- gitea-wiki-mirror:end -->
|
||||
|
||||
# 业务规则与术语
|
||||
@@ -66,3 +66,22 @@ synchronized_at: 2026-08-11T10:30:38Z
|
||||
- 三个交付单元的正式版本与发布流程。
|
||||
|
||||
未确认项不得从旧代码或模板默认值推断为当前事实。
|
||||
|
||||
<!-- sense-mvp:start -->
|
||||
## Sense 旧 MVP 规则状态
|
||||
|
||||
2026-08-14 前的 Sense 账户、设备、发现、Profile、MediaMTX、播放会话和区域版本实现规则仅适用于 `explore` 快照,不是新 `main` / `dev` 的运行事实。迁移工单应从这些记录提取已确认业务与安全约束,但认证、RBAC、管理端外壳和通用 CRUD 必须基于冻结 GoAdmin 源码重新实现并重新验收。
|
||||
<!-- sense-mvp:end -->
|
||||
|
||||
|
||||
<!-- bell-mvp:start -->
|
||||
## Bell 旧 MVP 规则状态
|
||||
|
||||
2026-08-14 前的 Bell 独立身份、Event/Receipt、规则、Alert、ack/close 和审计实现仅保存在 `explore`。不可变、幂等、并发处置和产品独立边界仍是待迁移业务要求,但新实现必须从冻结 GoAdmin/go-admin-ui 源码派生并重新验收。
|
||||
<!-- bell-mvp:end -->
|
||||
|
||||
|
||||
|
||||
## 旧实现迁移边界
|
||||
|
||||
旧 Sense 中已验证的中文设备字段、请求白名单、凭据隔离和媒体链路行为可作为迁移验收用例;不得把旧自研基础框架直接复制到新 `dev`。
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
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: be0864a5bdbe06bd8358f2d013aa7313ab13e73b
|
||||
synchronized_at: 2026-08-11T10:30:41Z
|
||||
wiki_revision: 1730ec258fb54c1b4be15ce0f6e1a18e44281810
|
||||
synchronized_at: 2026-08-14T01:06:22Z
|
||||
<!-- gitea-wiki-mirror:end -->
|
||||
|
||||
# 本地开发与验证
|
||||
@@ -17,7 +17,7 @@ synchronized_at: 2026-08-11T10:30:41Z
|
||||
| Gitea | 工单与 Wiki | 浏览仓库或调用 MCP |
|
||||
| Gitea PAT | Wiki 写入 | 仅由 MCP 或 `GITEA_TOKEN` 提供,不打印 |
|
||||
|
||||
Go、Node、CUDA、PostgreSQL、MediaMTX 的精确要求将在对应项目骨架工单冻结;当前不把旧仓库环境当作新项目事实。
|
||||
Sense/Bell 的 Go、Node 与 pnpm 基线已冻结并记录于下文;Brain 的 Python/CUDA 以及 PostgreSQL、MediaMTX 精确版本仍将在对应骨架工单冻结。旧仓库环境不自动成为新项目事实。
|
||||
|
||||
## 第一次运行
|
||||
|
||||
@@ -59,7 +59,7 @@ Go、Node、CUDA、PostgreSQL、MediaMTX 的精确要求将在对应项目骨架
|
||||
|---|---|---|---|---|
|
||||
| Sense | 待骨架工单冻结 | 待冻结 | 待冻结 | 未初始化业务代码 |
|
||||
| Brain | 待骨架工单冻结 | 待冻结 | 待冻结 | 未初始化业务代码 |
|
||||
| Bell | 待骨架工单冻结 | 待冻结 | 待冻结 | 未初始化业务代码 |
|
||||
| Bell | 待 GoAdmin 派生工单建立 | 待建立 | 待建立 | 旧实现仅在 `explore`;新基线未初始化 |
|
||||
|
||||
不得复制旧仓库命令来填空。每个骨架工单必须同时建立 README、可复制命令和最小测试。
|
||||
|
||||
@@ -73,8 +73,8 @@ Go、Node、CUDA、PostgreSQL、MediaMTX 的精确要求将在对应项目骨架
|
||||
|
||||
## 测试数据与日志
|
||||
|
||||
- 只使用合成或脱敏事件、合成 RTSP 和明确授权的实验室设备。
|
||||
- 不提交真实视频、客户名称、地址、手机号、摄像头密码或通知凭据。
|
||||
- 只使用合成或脱敏事件、合成 RTSP 和明确授权的实验室设备。ONVIF 自动化测试需覆盖 Basic、Digest challenge、Media 服务发现、跨主机地址归一化、拒绝地址凭据和禁止重定向。
|
||||
- 不提交真实视频、客户名称、地址、手机号、摄像头密码或通知凭据;真实设备验证只记录状态与 Profile 数量,不记录设备地址、Authorization 或 Stream URI。
|
||||
- 日志必须可按 request/event/alert ID 追踪,但不得记录 Authorization、Cookie 或连接密钥。
|
||||
|
||||
## 完成修改前
|
||||
@@ -88,3 +88,55 @@ 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 尚未初始化。骨架工单必须先验证冻结 go-admin/go-admin-ui commit 与许可证,再记录从上游继承的构建、迁移、启动和测试命令;不得把 `explore` 的自研命令写成新基线事实。
|
||||
<!-- 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 或相似视觉不算通过。
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件)
|
||||
wiki_page: Troubleshooting
|
||||
wiki_url: https://git.ilapage.cn/ila/yovision/wiki/Troubleshooting
|
||||
wiki_revision: 632e07b6cd22f6e3ae07c23ed58439ea2beecff2
|
||||
synchronized_at: 2026-08-11T10:30:46Z
|
||||
wiki_revision: 2be5d803b954df64e31085bcf097ee27f8611f9d
|
||||
synchronized_at: 2026-08-14T01:17:28Z
|
||||
<!-- gitea-wiki-mirror:end -->
|
||||
|
||||
# 故障排查
|
||||
@@ -39,3 +39,24 @@ synchronized_at: 2026-08-11T10:30:46Z
|
||||
- 契约破坏性变化没有新版本、迁移和回退方案;
|
||||
- 涉及删除、不可逆迁移、发布或生产变更但没有明确授权;
|
||||
- 工作区出现来源不明且与当前任务重叠的修改。
|
||||
|
||||
<!-- sense-mvp:start -->
|
||||
## 旧 Sense MVP 排错资料
|
||||
|
||||
旧 Sense 的数据库、ONVIF/RTSP、MediaMTX、实时监看、会话和区域排错只适用于 `explore` 快照。新 `main` / `dev` 当前没有可运行 Sense;在新的 GoAdmin 派生骨架和业务迁移工单完成前,不使用旧命令或旧状态判断新实现。
|
||||
<!-- sense-mvp:end -->
|
||||
|
||||
<!-- sense-windows-package:start -->
|
||||
## 旧 Sense Windows 包状态
|
||||
|
||||
旧 Windows 打包与启动脚本仅保存在 `explore`,不属于新开发基线。新的 GoAdmin 派生实现必须由独立工单重新建立打包、配置和排错说明。
|
||||
<!-- sense-windows-package:end -->
|
||||
|
||||
|
||||
|
||||
## 重建阶段常见问题
|
||||
|
||||
| 现象 | 处理 |
|
||||
|---|---|
|
||||
| 在 `dev` 找不到 Sense/Bell 可运行代码 | 这是重建空基线的预期状态;旧实现位于 `explore`,新代码必须由 GoAdmin 源码派生工单建立。 |
|
||||
| 新骨架只有相似页面、没有 GoAdmin 启动链或权限模块 | 不符合二次开发门禁;停止验收,对照 `goadmin-baseline.json`、上游源码和 go-admin-doc 重新实施。 |
|
||||
|
||||
+26
-2
@@ -2,8 +2,8 @@
|
||||
generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件)
|
||||
wiki_page: Delivery-Documentation-Guide
|
||||
wiki_url: https://git.ilapage.cn/ila/yovision/wiki/Delivery-Documentation-Guide.-
|
||||
wiki_revision: e0b43bfada515ff95831debc4378de41a8ad969a
|
||||
synchronized_at: 2026-08-11T10:31:06Z
|
||||
wiki_revision: d4f2bfcef46493361ba019839b36957ed9947003
|
||||
synchronized_at: 2026-08-14T01:18:58Z
|
||||
<!-- gitea-wiki-mirror:end -->
|
||||
|
||||
# 交付文档指南
|
||||
@@ -78,3 +78,27 @@ synchronized_at: 2026-08-11T10:31:06Z
|
||||
## 不在本页解决的内容
|
||||
|
||||
开发任务怎样建单、实施和归档见[开发工作流](Development-Workflow.-);代码结构和维护入口见[架构与代码地图](Architecture-and-Code-Map.-)。本页不规定市场宣传、合同、法务或商务承诺。
|
||||
|
||||
<!-- sense-mvp:start -->
|
||||
## Sense MVP 岗位操作路径
|
||||
|
||||
Sense 面向网管、实施人员和非技术现场人员,菜单按日常任务组织:工作台 → 设备管理 → 视频接入 → 视频服务 → 实时监看 → 区域与警戒线。普通操作优先展示中文状态与下一步,不要求用户理解 ONVIF、RTSP 或 MediaMTX 内部模型。
|
||||
|
||||
- 系统管理员:完成一次性安全初始化,维护 Sense 用户与角色,查看操作记录。首次管理员和新用户密码仅要求至少 6 个字符,不限制字符种类并允许包含用户名;仍应由管理员选择难猜且不复用的密码。
|
||||
- 实施/运维:添加设备、只写更新凭据、在获准网卡发现或手工接入、检查主辅码流、处理媒体进程与对账。
|
||||
- 站点管理员:查看/维护站点设备,实时监看,绘制和发布区域版本;无权创建系统管理员。
|
||||
- 只读用户:查看设备、媒体状态、实时画面和区域,不能修改。
|
||||
|
||||
交付验收必须使用仓库外测试账户和获准实验室设备;文档、截图、工单和日志不得包含摄像机密码、Cookie、令牌、含凭据 URI 或客户真实画面。当前自动化已覆盖内部状态和安全边界;真实 PostgreSQL、MediaMTX、摄像机兼容与目标浏览器画面仍需实施人员验证。
|
||||
<!-- sense-mvp:end -->
|
||||
|
||||
<!-- sense-windows-package:start -->
|
||||
## Sense Windows 运行包交付
|
||||
|
||||
交付对象为实施和运维人员。`sense-windows-amd64.zip` 包含后端程序、已构建前端、空值示例配置、上游许可证、启动脚本与包内说明;不包含 PostgreSQL、MediaMTX、Windows 服务、生产数据或秘密。
|
||||
|
||||
- 临时查看必须显式运行 `start-sense.bat demo`,其内存数据在进程结束后丢失,不能当作生产部署。
|
||||
- 生产配置可由运维写入解压目录的 `config\sense.env`,或通过 Windows 进程环境安全注入;进程环境优先。先运行 `start-sense.bat check` 检查必填项,再运行 `start-sense.bat`。
|
||||
- 交付时记录 ZIP SHA-256,并至少验证 `/healthz` 与首页;真实 PostgreSQL、MediaMTX、摄像机和目标浏览器仍需在获准环境验收。
|
||||
- 包内 `README-WINDOWS.md` 是现场操作入口;真实 `config\sense.env` 只留在具体部署目录,不得提交 Git 或重新打入交付 ZIP,交付 ZIP 只保留 `sense.env.example`。
|
||||
<!-- sense-windows-package:end -->
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
<!-- gitea-wiki-mirror:start -->
|
||||
generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件)
|
||||
wiki_page: Task-28-三项目当前MVP交互原型
|
||||
wiki_url: https://git.ilapage.cn/ila/yovision/wiki/Task-28-%E4%B8%89%E9%A1%B9%E7%9B%AE%E5%BD%93%E5%89%8DMVP%E4%BA%A4%E4%BA%92%E5%8E%9F%E5%9E%8B.-
|
||||
wiki_revision: 47ef943ea870c7ff814dff5b1dd641052954d828
|
||||
synchronized_at: 2026-08-14T02:05:27Z
|
||||
<!-- gitea-wiki-mirror:end -->
|
||||
|
||||
# 28 三项目当前 MVP 交互原型
|
||||
|
||||
- 类型:协同原型任务
|
||||
- 状态:已完成
|
||||
- 日期:2026-08-14
|
||||
- Gitea 工单:https://git.ilapage.cn/ila/yovision/issues/28
|
||||
|
||||
## 背景与目标
|
||||
|
||||
为 Sense、Brain、Bell 首个 MVP 建立可浏览的交互原型,用于确认信息架构、页面入口和关键流程,不替代真实产品实现。
|
||||
|
||||
## 最终方案
|
||||
|
||||
生成三项目原型入口及共享设计资产;后续 #30/#31 对齐 go-admin-ui 与 Element Plus,#32/#33 分别从 Sense 网管/非技术人员和 Bell 普通用户视角收敛业务语言与流程。
|
||||
|
||||
## 修改文件
|
||||
|
||||
`prototypes/index.html`、三项目原型页面和共享样式、脚本与设计资源(历史快照位于 `explore`)。
|
||||
|
||||
## 验收结果
|
||||
|
||||
原型入口、4 个 HTML 页面和共享资源形成完整导航与关键流程。
|
||||
|
||||
## 测试
|
||||
|
||||
Harness、仓库测试、静态资源、JavaScript、键盘交互、减少动画、桌面和 375px 移动布局检查通过。
|
||||
|
||||
## 相关提交
|
||||
|
||||
实现提交 `533225d`,原型 PR #29。
|
||||
|
||||
## 未验证部分
|
||||
|
||||
**未验证部分**:未验证真实视频、API、数据库、模型效果或跨项目契约;这些属于产品实现工单。
|
||||
|
||||
## 用户验收
|
||||
|
||||
用户于 2026-08-14 明确验收通过。原型保留于 `explore` 作为需求与交互参考,不恢复为 `dev` 中已经实现的产品代码。
|
||||
@@ -0,0 +1,69 @@
|
||||
<!-- gitea-wiki-mirror:start -->
|
||||
generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件)
|
||||
wiki_page: Task-3-GoAdmin默认模块精简与UI组件复用
|
||||
wiki_url: https://git.ilapage.cn/ila/yovision/wiki/Task-3-GoAdmin%E9%BB%98%E8%AE%A4%E6%A8%A1%E5%9D%97%E7%B2%BE%E7%AE%80%E4%B8%8EUI%E7%BB%84%E4%BB%B6%E5%A4%8D%E7%94%A8.-
|
||||
wiki_revision: 184eb46c074967590361b45e0eeb001eafbc84f2
|
||||
synchronized_at: 2026-08-12T08:38:41Z
|
||||
<!-- gitea-wiki-mirror:end -->
|
||||
|
||||
# 3 GoAdmin 默认模块精简与 UI 组件复用
|
||||
|
||||
- 类型:需求
|
||||
- 所属 Epic:无
|
||||
- 所属 MVP / 版本:流程初始化
|
||||
- 状态:已完成
|
||||
- 日期:2026-08-12
|
||||
- 验收日期:2026-08-12
|
||||
- 验收结果:用户明确验收通过
|
||||
- Gitea 工单:https://git.ilapage.cn/ila/yovision/issues/3
|
||||
- Pull Request:https://git.ilapage.cn/ila/yovision/pulls/4
|
||||
- Wiki 页面:Task-3-GoAdmin默认模块精简与UI组件复用
|
||||
- Wiki revision:见本地镜像头
|
||||
|
||||
## 背景与目标
|
||||
|
||||
为 Sense、Bell 使用 go-admin/go-admin-ui 建立统一的最小化和组件复用规则,避免默认菜单、路由、权限与接口造成产品噪音,同时避免重复组件和视觉交互割裂。
|
||||
|
||||
## 最终方案
|
||||
|
||||
1. Sense、Bell 均遵循“最小可见、最小启用”;快速交付优先使用配置、菜单权限和路由开关隐藏无关能力。
|
||||
2. 涉及权限或安全时同时关闭前端入口和后端访问;永久删除默认模块必须单独建单并核对依赖、数据库、权限和升级影响。
|
||||
3. 新页面优先复用现有布局、表格、表单、弹窗、上传、权限控制和请求封装。
|
||||
4. 新组件只在现有组件无法满足明确业务需求时建立,并保持颜色、字号、间距、反馈、命名和目录结构一致。
|
||||
5. 局部页面不得擅自改变公共组件全局行为;全局或跨产品影响升级为独立/协同工单。
|
||||
6. UI 验收检查无多余入口、无失效入口、无重复实现且视觉交互一致。
|
||||
|
||||
与建单方案无差异。
|
||||
|
||||
## 修改文件
|
||||
|
||||
- `AGENTS.md`:增加 GoAdmin 精简、复用和变更边界。
|
||||
- `Sense/AGENTS.md`、`Bell/AGENTS.md`:增加产品侧可执行约束。
|
||||
- `dev_scripts/check_harness.py`:增加规则门禁。
|
||||
- `tests/test_harness_docs.py`:增加回归测试。
|
||||
- `docs/01-workflow.md`:同步 Wiki 长期流程文档。
|
||||
|
||||
## 验收结果
|
||||
|
||||
| 验收标准 | 结果 |
|
||||
|---|---|
|
||||
| 根规则明确隐藏、禁用、删除边界与组件复用原则 | 通过 |
|
||||
| Sense、Bell 子项目规则包含可执行约束 | 通过 |
|
||||
| 全局公共组件改动和永久删除需单独建单 | 通过 |
|
||||
| Harness 能检测关键规则丢失 | 通过 |
|
||||
| Wiki 与镜像一致 | 通过 |
|
||||
| 用户明确验收 | 通过(2026-08-12) |
|
||||
|
||||
## 测试
|
||||
|
||||
- `python dev_scripts/check_harness.py --strict`:通过。
|
||||
- `python -m unittest discover -s tests -v`:28 项全部通过。
|
||||
- `python -m compileall -q dev_scripts tests`:通过。
|
||||
- `python dev_scripts/sync_wiki_docs.py --check`:通过。
|
||||
- `git diff --check`:通过。
|
||||
- **未验证部分**:规则实施时 Sense、Bell 尚无实际业务页面,未执行浏览器视觉验收或真实默认模块隐藏;后续页面工单按本规则验收。
|
||||
|
||||
## 相关提交
|
||||
|
||||
- `6ff12e6` docs: define go-admin UI reuse rules (#3)
|
||||
- `2285fb0` Merge pull request #4: GoAdmin UI 精简与复用规则
|
||||
@@ -0,0 +1,46 @@
|
||||
<!-- gitea-wiki-mirror:start -->
|
||||
generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件)
|
||||
wiki_page: Task-30-Sense原型对齐GoAdmin与Element-Plus
|
||||
wiki_url: https://git.ilapage.cn/ila/yovision/wiki/Task-30-Sense%E5%8E%9F%E5%9E%8B%E5%AF%B9%E9%BD%90GoAdmin%E4%B8%8EElement-Plus.-
|
||||
wiki_revision: aa30868a002d3f3840d663f849d3ce4cc1963ae0
|
||||
synchronized_at: 2026-08-14T02:05:31Z
|
||||
<!-- gitea-wiki-mirror:end -->
|
||||
|
||||
# 30 Sense 原型对齐 GoAdmin 与 Element Plus
|
||||
|
||||
- 类型:Sense 原型任务
|
||||
- 状态:已完成
|
||||
- 日期:2026-08-14
|
||||
- Gitea 工单:https://git.ilapage.cn/ila/yovision/issues/30
|
||||
|
||||
## 背景与目标
|
||||
|
||||
将 Sense 原型的通用外壳和组件对齐冻结 go-admin-ui / Element Plus,使后续源码二次开发可直接映射布局、导航、标签页、搜索、权限按钮、表格、表单、分页和弹窗。
|
||||
|
||||
## 最终方案
|
||||
|
||||
保留 Sense 业务信息架构;通用 UI 复用 go-admin-ui 风格,只为视频监看和区域绘制保留业务专用组件。
|
||||
|
||||
## 修改文件
|
||||
|
||||
`prototypes/sense.html` 及原型共享外壳、样式和交互资源(历史快照位于 `explore`)。
|
||||
|
||||
## 验收结果
|
||||
|
||||
Sense 原型应用外壳、通用组件和响应式行为与冻结 go-admin-ui 基准对齐。
|
||||
|
||||
## 测试
|
||||
|
||||
Sense、Brain、Bell 原型回归、桌面与移动布局、交互和静态检查通过。
|
||||
|
||||
## 相关提交
|
||||
|
||||
实现提交 `1da77fe`,原型 PR #29。
|
||||
|
||||
## 未验证部分
|
||||
|
||||
**未验证部分**:未验证真实 GoAdmin 产品代码集成;新 Sense 仍须在 #61 中从冻结源码派生。
|
||||
|
||||
## 用户验收
|
||||
|
||||
用户于 2026-08-14 明确验收通过。原型保留于 `explore` 作为需求与交互参考,不恢复为 `dev` 中已经实现的产品代码。
|
||||
@@ -0,0 +1,46 @@
|
||||
<!-- gitea-wiki-mirror:start -->
|
||||
generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件)
|
||||
wiki_page: Task-32-Sense网管与非技术人员原型
|
||||
wiki_url: https://git.ilapage.cn/ila/yovision/wiki/Task-32-Sense%E7%BD%91%E7%AE%A1%E4%B8%8E%E9%9D%9E%E6%8A%80%E6%9C%AF%E4%BA%BA%E5%91%98%E5%8E%9F%E5%9E%8B.-
|
||||
wiki_revision: 4c91b1e89414ae4d2790df6254e8b927b5a062e1
|
||||
synchronized_at: 2026-08-14T02:05:35Z
|
||||
<!-- gitea-wiki-mirror:end -->
|
||||
|
||||
# 32 Sense 网管与非技术人员原型
|
||||
|
||||
- 类型:Sense 原型任务
|
||||
- 状态:已完成
|
||||
- 日期:2026-08-14
|
||||
- Gitea 工单:https://git.ilapage.cn/ila/yovision/issues/32
|
||||
|
||||
## 背景与目标
|
||||
|
||||
从网管和非技术设备管理员视角调整 Sense 模块名称、设备接入流程、故障反馈和日常操作,避免暴露不必要的底层技术概念。
|
||||
|
||||
## 最终方案
|
||||
|
||||
一级导航收敛为设备概况、摄像头管理、实时画面和警戒区域;接入采用发现/手工添加、账号、测试、预览、完成的引导流程;故障提示说明原因、影响和恢复动作。
|
||||
|
||||
## 修改文件
|
||||
|
||||
`prototypes/sense.html` 及相关原型交互、样式资源(历史快照位于 `explore`)。
|
||||
|
||||
## 验收结果
|
||||
|
||||
模块名称、接入流程与错误恢复均从目标用户视角完成收敛。
|
||||
|
||||
## 测试
|
||||
|
||||
关键流程、表单反馈、响应式布局和三项目原型回归通过。
|
||||
|
||||
## 相关提交
|
||||
|
||||
实现提交 `25c2534`,原型 PR #29。
|
||||
|
||||
## 未验证部分
|
||||
|
||||
**未验证部分**:未验证真实摄像机和产品 API;新 Sense 须在 #61 的 GoAdmin 源码基线上重新落地。
|
||||
|
||||
## 用户验收
|
||||
|
||||
用户于 2026-08-14 明确验收通过。原型保留于 `explore` 作为需求与交互参考,不恢复为 `dev` 中已经实现的产品代码。
|
||||
@@ -0,0 +1,69 @@
|
||||
<!-- gitea-wiki-mirror:start -->
|
||||
generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件)
|
||||
wiki_page: Task-5-冻结Sense与Bell-GoAdmin技术基线
|
||||
wiki_url: https://git.ilapage.cn/ila/yovision/wiki/Task-5-%E5%86%BB%E7%BB%93Sense%E4%B8%8EBell-GoAdmin%E6%8A%80%E6%9C%AF%E5%9F%BA%E7%BA%BF.-
|
||||
wiki_revision: a5fc02e96d04200e5c51f9313634b50c4e5218c6
|
||||
synchronized_at: 2026-08-12T08:38:44Z
|
||||
<!-- gitea-wiki-mirror:end -->
|
||||
|
||||
# 5 冻结 Sense 与 Bell GoAdmin 技术基线
|
||||
|
||||
- 类型:需求
|
||||
- 所属 Epic:无
|
||||
- 所属 MVP / 版本:技术基线
|
||||
- 状态:已完成
|
||||
- 日期:2026-08-12
|
||||
- 验收日期:2026-08-12
|
||||
- 验收结果:用户明确验收通过
|
||||
- Gitea 工单:https://git.ilapage.cn/ila/yovision/issues/5
|
||||
- Pull Request:https://git.ilapage.cn/ila/yovision/pulls/6
|
||||
- Wiki 页面:Task-5-冻结Sense与Bell-GoAdmin技术基线
|
||||
- Wiki revision:见本地镜像头
|
||||
|
||||
## 背景与目标
|
||||
|
||||
把 Sense、Bell 共用的 GoAdmin 上游、工具链和本机只读参考源从口头约定固化为可复现、可检查的正式基线,避免两个产品从不同提交或运行时起步。
|
||||
|
||||
## 最终方案
|
||||
|
||||
1. 根级 `goadmin-baseline.json` 是机器可读事实来源,远端 URL 与完整 commit 是可复现标识。
|
||||
2. go-admin 固定为 `f06540883b41d03782bb6b2c4150f298f328c6b6`,要求 Go 1.26.5。
|
||||
3. go-admin-ui 固定为 `67d393d713877572fab0b897296a4c1d525fc81d`,要求 Node.js 22.22.1、pnpm 9.15.1。
|
||||
4. go-admin-doc 固定为 `424855aacf6905f3fde860c3331385cb25529a0d`,仅用于理解框架用法。
|
||||
5. `D:\github\goadmin` 下三个仓库只读参考;产品代码必须分别进入 Sense、Bell。
|
||||
6. 派生上游代码保留 MIT 许可证与来源;任一上游或工具链升级必须建立 Sense/Bell 协同工单。
|
||||
7. Sense、Bell 从同一基线独立构建、发布,不形成隐藏共享实现。
|
||||
|
||||
与建单方案无差异。#5 原为叠加 PR;用户验收后先合并 #3/PR #4,再把 PR #6 调整到 `main` 并合并。
|
||||
|
||||
## 修改文件
|
||||
|
||||
- `goadmin-baseline.json`:记录上游和工具链精确版本、来源与许可证。
|
||||
- `AGENTS.md`、`Sense/AGENTS.md`、`Bell/AGENTS.md`:固化只读参考、派生、升级与构建规则。
|
||||
- `dev_scripts/check_harness.py`、`tests/test_harness_docs.py`:增加机器可读基线门禁和回归测试。
|
||||
- `docs/00-project-profile.md`、`docs/04-local-development-and-verification.md`:同步 Wiki 长期文档。
|
||||
|
||||
## 验收结果
|
||||
|
||||
| 验收标准 | 结果 |
|
||||
|---|---|
|
||||
| 清单记录精确上游 commit、远端、分支、许可证和运行时版本 | 通过 |
|
||||
| 根及 Sense/Bell 规则明确只读参考、禁止原地开发和升级流程 | 通过 |
|
||||
| Wiki 说明固定版本、复现方式和环境要求 | 通过 |
|
||||
| commit 与 package version/tag 边界明确 | 通过 |
|
||||
| Harness 与测试覆盖关键字段 | 通过 |
|
||||
| 用户明确验收 | 通过(2026-08-12) |
|
||||
|
||||
## 测试
|
||||
|
||||
- `python dev_scripts/check_harness.py --strict`:通过。
|
||||
- `python -m unittest discover -s tests -v`:31 项全部通过。
|
||||
- `python -m compileall -q dev_scripts tests`:通过。
|
||||
- `python dev_scripts/sync_wiki_docs.py --check`:通过。
|
||||
- `git diff --check`:通过。
|
||||
- **未验证部分**:#5 本身未初始化产品代码,因此未执行产品构建。验收后已在仓库外隔离准备并校验 Go 1.26.5;Node.js 22.22.1 可用,pnpm 9.15.1 可通过 Corepack 精确调用,供 #21 使用。
|
||||
|
||||
## 相关提交
|
||||
|
||||
- `7dac434` docs: freeze GoAdmin technical baseline (#5)
|
||||
- `8486d90` Merge pull request #6: 冻结 GoAdmin 技术基线
|
||||
@@ -0,0 +1,91 @@
|
||||
<!-- gitea-wiki-mirror:start -->
|
||||
generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件)
|
||||
wiki_page: Task-58-建立explore-main-dev分支治理并重置GoAdmin开发基线
|
||||
wiki_url: https://git.ilapage.cn/ila/yovision/wiki/Task-58-%E5%BB%BA%E7%AB%8Bexplore-main-dev%E5%88%86%E6%94%AF%E6%B2%BB%E7%90%86%E5%B9%B6%E9%87%8D%E7%BD%AEGoAdmin%E5%BC%80%E5%8F%91%E5%9F%BA%E7%BA%BF.-
|
||||
wiki_revision: f4579e552dec5ed7e3dbff934697be97e4285b86
|
||||
synchronized_at: 2026-08-14T01:55:39Z
|
||||
<!-- gitea-wiki-mirror:end -->
|
||||
|
||||
# 58 建立 explore/main/dev 分支治理并重置 GoAdmin 开发基线
|
||||
|
||||
- 类型:根级协调任务
|
||||
- 状态:已完成
|
||||
- 日期:2026-08-14
|
||||
- Gitea 工单:https://git.ilapage.cn/ila/yovision/issues/58
|
||||
|
||||
## 背景与目标
|
||||
|
||||
用户确认保留当前实现作为历史快照,并将后续开发切换到 `dev`,只有用户审核后才能进入 `main`。同时纠正此前“仅参考 GoAdmin、自研基础框架”的偏差:新的 Sense、Bell 必须真正从冻结 go-admin 与 go-admin-ui 源码派生,开发时必须参考冻结 go-admin-doc。
|
||||
|
||||
## 最终方案
|
||||
|
||||
1. 创建 `explore` 聚合快照,合入 Sense 最新链、Bell MVP、Bell 任务归档和已确认原型;原来源分支全部保留。
|
||||
2. 共享 Wiki 镜像冲突时,快照树保留 Sense 最新版本;Bell 独立任务归档保留在 `docs/task/`,Bell 共享文档仍可从来源提交完整读取。
|
||||
3. 审计发现执行前 `main` 已经是最小治理基线,没有 Sense/Bell 产品实现,因此不制造删除或清空提交;只补充分支门禁、GoAdmin 源码派生门禁和更新后的 Wiki 镜像。
|
||||
4. `dev` 从最终 `main` 创建,后续任务分支从 `dev` 派生,通过 PR 合回 `dev`;只有用户明确审核通过才能执行 `dev → main`。
|
||||
5. “基于 GoAdmin”定义为从 `goadmin-baseline.json` 指定的完整 go-admin/go-admin-ui commit 导入或派生源码,保留许可证、启动链和通用框架能力。仅使用 Go、Vue、Element Plus、类似目录或视觉不算满足。
|
||||
6. 每个 Sense/Bell 框架相关工单实施前必须读取相关 go-admin-doc,并记录文档主题/文件、继承路径、裁剪/隐藏模块和来源证据。
|
||||
7. 当前旧产品实现不合入新 `main` / `dev`;迁移只从 `explore` 提取已确认业务需求和必要业务适配器。
|
||||
|
||||
## 分支与回退证据
|
||||
|
||||
- 重建前 main:`be2c1e3c81131b51ee9fba67394ae9928e41104c`
|
||||
- explore 聚合提交:`9020b32`
|
||||
- main 规则提交:`0ce30e5`
|
||||
- main/dev 最终共同基线:`1e724e973189f0fa9bfba8109791658bacd08640`
|
||||
- Sense 来源:`a9f8a55`
|
||||
- Bell 来源:`9ee06e3`
|
||||
- Bell 文档来源:`3c245e1`
|
||||
- 原型来源:`8d1875c`
|
||||
|
||||
所有来源分支均保留。需要回退分支治理时可把 main 恢复到重建前 SHA;需要读取旧产品时使用 `explore` 或对应来源分支。
|
||||
|
||||
## 测试
|
||||
|
||||
- `python dev_scripts/check_harness.py --strict`:通过。
|
||||
- `python -m unittest discover -s tests -v`:31 项通过。
|
||||
- `git diff --check`:通过。
|
||||
- Gitea Wiki 的 Project-Profile、Development-Workflow、Architecture-and-Code-Map、Local-Development-and-Verification 已先更新并读取确认。
|
||||
|
||||
## Gitea 管理配置
|
||||
|
||||
通过当前实例 Swagger 描述核对 API 后,使用仓库外安全凭据完成并读取确认:`dev` 已设为默认分支;`main` 与 `dev` 均禁止直接推送和强推;`main` 要求 1 个审批,`dev` 要求 0 个审批以允许 Agent 在测试后合并任务 PR。管理员覆盖保持可用,实际执行仍受“只有用户明确审核后才能进入 main”的仓库规则约束。
|
||||
|
||||
## 遗留边界
|
||||
|
||||
本任务不导入新的 GoAdmin 产品源码,也不迁移旧业务功能。Sense/Bell 的真正源码派生和逐模块迁移应另建工单并在 `dev` 上实施。
|
||||
|
||||
## 修改文件
|
||||
|
||||
- 根级与子项目规则:`AGENTS.md`、`Sense/AGENTS.md`、`Bell/AGENTS.md`
|
||||
- 分支说明:`README.md`
|
||||
- Wiki 镜像:项目档案、开发工作流、架构与代码地图、本地开发与验证
|
||||
- 任务归档镜像与映射:`docs/task/58-*.md`、`wiki-docs.json`
|
||||
- explore 快照说明:`EXPLORE-SNAPSHOT.md`
|
||||
|
||||
## 验收结果
|
||||
|
||||
| 验收项 | 结果 |
|
||||
|---|---|
|
||||
| explore 聚合旧 Sense、Bell、原型和任务证据 | 通过 |
|
||||
| 原来源分支保持存在 | 通过 |
|
||||
| main 保持最小治理与重建基线 | 通过 |
|
||||
| dev 从最终 main 创建 | 通过;两者起点均为 `1e724e9` |
|
||||
| GoAdmin/go-admin-ui 源码派生与 go-admin-doc 必查规则 | 通过 |
|
||||
| 用户未跟踪文件未提交 | 通过 |
|
||||
| Gitea main/dev 保护与默认分支 | 通过;已读取服务器配置确认 |
|
||||
|
||||
## 相关提交
|
||||
|
||||
- `9020b32`:记录 explore 快照来源
|
||||
- `0ce30e5`:建立审核分支流和 GoAdmin 源码派生门禁
|
||||
- `1e724e9`:登记并镜像工单 #58 归档
|
||||
|
||||
## 未验证部分
|
||||
|
||||
- **未验证部分**:无。产品源码导入和业务迁移明确属于后续工单,不是本任务未验证项。
|
||||
|
||||
## 用户验收
|
||||
|
||||
- 2026-08-14:用户明确确认当前未验收工单通过验收。
|
||||
- 本工单完成后,`dev` 成为后续集成开发分支;#61、#62、#10 的分支门禁解除。
|
||||
@@ -0,0 +1,61 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"frozen_at": "2026-08-12",
|
||||
"authority": "upstream_url_and_commit",
|
||||
"consumers": [
|
||||
"Sense",
|
||||
"Bell"
|
||||
],
|
||||
"runtimes": {
|
||||
"go": "1.26.5",
|
||||
"node": "22.22.1",
|
||||
"package_manager": "pnpm",
|
||||
"pnpm": "9.15.1"
|
||||
},
|
||||
"sources": {
|
||||
"go-admin": {
|
||||
"role": "backend_baseline",
|
||||
"local_reference_path": "D:\\github\\goadmin\\go-admin",
|
||||
"upstream_url": "https://github.com/go-admin-team/go-admin.git",
|
||||
"branch": "master",
|
||||
"commit": "f06540883b41d03782bb6b2c4150f298f328c6b6",
|
||||
"describe": "v2.2.0-25-gf065408",
|
||||
"exact_tag": null,
|
||||
"license": "MIT",
|
||||
"license_file": "LICENSE.md"
|
||||
},
|
||||
"go-admin-ui": {
|
||||
"role": "frontend_baseline",
|
||||
"local_reference_path": "D:\\github\\goadmin\\go-admin-ui",
|
||||
"upstream_url": "https://github.com/go-admin-team/go-admin-ui.git",
|
||||
"branch": "master",
|
||||
"commit": "67d393d713877572fab0b897296a4c1d525fc81d",
|
||||
"describe": "v2.0.9-170-g67d393d",
|
||||
"exact_tag": null,
|
||||
"package_version": "2.0.9",
|
||||
"package_version_is_authoritative": false,
|
||||
"license": "MIT",
|
||||
"license_file": "LICENSE"
|
||||
},
|
||||
"go-admin-doc": {
|
||||
"role": "reference_only_documentation",
|
||||
"local_reference_path": "D:\\github\\goadmin\\go-admin-doc",
|
||||
"upstream_url": "https://github.com/go-admin-team/go-admin-doc.git",
|
||||
"branch": "master",
|
||||
"commit": "424855aacf6905f3fde860c3331385cb25529a0d",
|
||||
"describe": "424855a",
|
||||
"exact_tag": null,
|
||||
"package_version": "0.0.1",
|
||||
"package_version_is_authoritative": false,
|
||||
"license": "MIT",
|
||||
"license_file": "LICENSE"
|
||||
}
|
||||
},
|
||||
"rules": {
|
||||
"local_repositories_are_read_only": true,
|
||||
"product_code_must_not_be_developed_in_reference_repositories": true,
|
||||
"preserve_upstream_license_and_copyright": true,
|
||||
"upgrades_require_coordination_issue": true,
|
||||
"sense_and_bell_release_independently": true
|
||||
}
|
||||
}
|
||||
@@ -16,6 +16,8 @@ from check_harness import ( # noqa: E402
|
||||
check_claude_code_entry,
|
||||
check_core_documents,
|
||||
check_agent_efficiency_rules,
|
||||
check_go_admin_ui_rules,
|
||||
check_goadmin_baseline,
|
||||
check_task_template,
|
||||
core_mapping_errors,
|
||||
missing_sections,
|
||||
@@ -185,6 +187,63 @@ class AgentRuleTests(unittest.TestCase):
|
||||
check_claude_code_entry(errors)
|
||||
self.assertEqual(errors, [])
|
||||
|
||||
def test_go_admin_ui_rules_are_present(self) -> None:
|
||||
errors: list[str] = []
|
||||
check_go_admin_ui_rules(errors)
|
||||
self.assertEqual(errors, [])
|
||||
|
||||
def test_go_admin_ui_rules_require_each_scope(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as directory:
|
||||
root = Path(directory)
|
||||
(root / "Sense").mkdir()
|
||||
(root / "Bell").mkdir()
|
||||
(root / "AGENTS.md").write_text("", encoding="utf-8")
|
||||
(root / "Sense" / "AGENTS.md").write_text("", encoding="utf-8")
|
||||
(root / "Bell" / "AGENTS.md").write_text("", encoding="utf-8")
|
||||
errors: list[str] = []
|
||||
check_go_admin_ui_rules(errors, root)
|
||||
self.assertTrue(any(error.startswith("AGENTS.md ") for error in errors))
|
||||
self.assertTrue(any(error.startswith("Sense/AGENTS.md ") for error in errors))
|
||||
self.assertTrue(any(error.startswith("Bell/AGENTS.md ") for error in errors))
|
||||
|
||||
def test_go_admin_ui_rules_report_missing_scope_file(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as directory:
|
||||
errors: list[str] = []
|
||||
check_go_admin_ui_rules(errors, Path(directory))
|
||||
self.assertIn("缺少 go-admin 规则文件:AGENTS.md", errors)
|
||||
self.assertIn("缺少 go-admin 规则文件:Sense/AGENTS.md", errors)
|
||||
self.assertIn("缺少 go-admin 规则文件:Bell/AGENTS.md", errors)
|
||||
|
||||
def test_goadmin_baseline_is_frozen(self) -> None:
|
||||
errors: list[str] = []
|
||||
check_goadmin_baseline(errors)
|
||||
self.assertEqual(errors, [])
|
||||
|
||||
def test_goadmin_baseline_rejects_unpinned_source(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as directory:
|
||||
root = Path(directory)
|
||||
(root / "goadmin-baseline.json").write_text(
|
||||
'{"authority":"tag","runtimes":{},'
|
||||
'"sources":{"go-admin":{}},"rules":{}}',
|
||||
encoding="utf-8",
|
||||
)
|
||||
errors: list[str] = []
|
||||
check_goadmin_baseline(errors, root)
|
||||
self.assertTrue(any("go-admin.commit" in error for error in errors))
|
||||
self.assertIn(
|
||||
"GoAdmin 技术基线必须以上游 URL 和 commit 为权威标识",
|
||||
errors,
|
||||
)
|
||||
|
||||
def test_goadmin_baseline_reports_missing_file(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as directory:
|
||||
errors: list[str] = []
|
||||
check_goadmin_baseline(errors, Path(directory))
|
||||
self.assertEqual(
|
||||
errors,
|
||||
["缺少 GoAdmin 技术基线:goadmin-baseline.json"],
|
||||
)
|
||||
|
||||
def test_claude_code_entry_requires_exact_import_line(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as directory:
|
||||
root = Path(directory)
|
||||
|
||||
@@ -75,6 +75,30 @@
|
||||
{
|
||||
"page": "Task-1-三项目并行建单与协同工单顺序",
|
||||
"path": "docs/task/1-三项目并行建单与协同工单顺序.md"
|
||||
},
|
||||
{
|
||||
"page": "Task-3-GoAdmin默认模块精简与UI组件复用",
|
||||
"path": "docs/task/3-GoAdmin默认模块精简与UI组件复用.md"
|
||||
},
|
||||
{
|
||||
"page": "Task-5-冻结Sense与Bell-GoAdmin技术基线",
|
||||
"path": "docs/task/5-冻结Sense与Bell-GoAdmin技术基线.md"
|
||||
},
|
||||
{
|
||||
"page": "Task-58-建立explore-main-dev分支治理并重置GoAdmin开发基线",
|
||||
"path": "docs/task/58-建立explore-main-dev分支治理并重置GoAdmin开发基线.md"
|
||||
},
|
||||
{
|
||||
"page": "Task-28-三项目当前MVP交互原型",
|
||||
"path": "docs/task/28-三项目当前MVP交互原型.md"
|
||||
},
|
||||
{
|
||||
"page": "Task-30-Sense原型对齐GoAdmin与Element-Plus",
|
||||
"path": "docs/task/30-Sense原型对齐GoAdmin与Element-Plus.md"
|
||||
},
|
||||
{
|
||||
"page": "Task-32-Sense网管与非技术人员原型",
|
||||
"path": "docs/task/32-Sense网管与非技术人员原型.md"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user