Files
ops/AGENTS.md
2026-06-21 17:50:24 +08:00

182 lines
8.4 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.
# AGENTS.md
## 基本要求
- 交流使用中文。
- 代码整洁、高效、易读,优先遵循现有目录结构和命名风格。
- 不使用 Linux 指令;需要命令示例时统一使用 Windows PowerShell。
- 修改前先阅读相关文档和现有代码,避免凭空新增不一致的结构。
- 不回滚或覆盖用户已有改动,除非用户明确要求。
## 项目定位
OPS 是“开发运维一体化平台”。首期交付重点是可验证的后端、前端和验收证据,而不是只停留在模板或文档层面。
统一命名:
- 项目名称统一使用 `OPS`
- 旧称 `DOIP` 不再使用;新增文档、代码包名、页面文案、配置示例和注释不要再引入 `DOIP`
- `OPS-001``OPS-033` 是需求编号,必须保留。
优先参考资料:
- `README.md`:项目一句话说明。
- `TODOS.md`:当前交付任务优先级。
- `docs/首期验收矩阵.md`OPS 需求到演示路径、数据准备、通过标准和证据的映射。
- `docs/首期数据模型与状态机.md`:第 1 阶段核心模型、状态机和存储分工。
- `docs/首期UI状态覆盖.md`:第 1 阶段页面状态覆盖要求。
- `docs/P1故障救援策略.md`:采集、解析、通知、派单失败的救援策略。
- `docs/P1测试计划.md`:第 1 阶段后端、前端和端到端测试计划。
- `docs/国产时序数据库选型验证.md`TDengine 开源版选型结论和适配层要求。
当前决策:
- P0 和 P1 文档任务已完成,后续重点应转向可运行的 `server/``web/` 和验收证据。
- 时序数据库采用 TDengine 开源版。正式部署前仍需验证 AGPL 合规、麒麟兼容性、备份恢复和是否需要企业版支持。
- 第 1 阶段优先打通资源纳管、采集、原始事件、告警、通知、工单、报表/大屏和审计闭环。
- H3C/华三为首批网络设备适配重点但具体型号、SNMP 版本、Trap/Syslog 样例和账号权限必须由现场确认,不能凭空编写。
- 3D 机房前端已外包OPS 侧只提供后端接口、样例数据、权限控制和告警状态。
## 目录职责
- `docs/`:项目需求、架构、验收和计划文档。默认可读可改;改动需保持内容严谨,不做无关润色。
- `templates/front_sample/standard`:前端模板,基于 Arco Design Pro Vue 3、Vite、Pinia、TypeScript。默认只读。
- `templates/server_sample/`:后端模板,基于 Go、Gin、GORM、BSM-SDK Core。默认只读。
- `web/`:实际前端工程目录。不存在时,按任务需要从 `templates/front_sample/standard` 初始化后再开发。
- `server/`:实际后端工程目录。不存在时,按任务需要从 `templates/server_sample/` 初始化后再开发。
- `deploy/`:部署、迁移、发布脚本目录。不存在时按 TODO 创建。
## 边界规则
- 未经用户明确要求,绝不直接修改 `templates/front_sample/standard`
- 未经用户明确要求,绝不直接修改 `templates/server_sample/`
- 不把模板目录当作最终交付目录;实际业务代码应落在 `web/``server/``deploy/` 等交付目录。
- 不提交真实密钥、Token、数据库密码、私有仓库凭据或带凭据的 remote URL。
- 配置文件提供 `.example` 示例,真实本地配置不应纳入版本控制。
- 不引入与当前技术栈无关的大型框架或重构,除非任务明确要求。
## 常用 Windows PowerShell 命令
查看目录:
```powershell
Get-ChildItem -Force
```
查看文件:
```powershell
Get-Content -LiteralPath .\README.md -Encoding UTF8
```
复制模板初始化实际工程:
```powershell
Copy-Item -LiteralPath .\templates\server_sample -Destination .\server -Recurse
Copy-Item -LiteralPath .\templates\front_sample\standard -Destination .\web -Recurse
```
后端常用命令:
```powershell
Set-Location .\server
go mod tidy
go test ./...
go vet ./...
gofmt -w .
go run .\cmd\main\main.go
go run .\cmd\cli\main.go migrate
```
前端常用命令:
```powershell
Set-Location .\web
pnpm install
pnpm dev
pnpm type:check
pnpm lint
pnpm build
```
Git 状态检查:
```powershell
git status --short
git diff -- .\AGENTS.md
```
检查旧项目名残留:
```powershell
Select-String -Path .\README.md,.\TODOS.md,.\AGENTS.md,.\docs\*.md,.\deploy\README.md -Encoding UTF8 -Pattern 'DOIP','doip'
```
## 后端规范
- 使用 Go、Gin、GORM延续 `templates/server_sample/` 的分层:`cmd/``internal/config/``internal/impl/``internal/logic/``internal/models/``internal/routers/`
- API 需要统一响应结构、统一错误码和 `traceId`
- 数据库设计优先面向 PostgreSQL不继续扩散 MySQL 风格类型。
- 时序数据进入 TDengine 开源版;业务代码必须通过时序库适配层访问,不直接在业务逻辑中散落 TDengine 专有 SQL。
- 危险操作必须有审计日志、人工确认或可恢复方案。
- 配置通过 `etc/*.example.yaml` 描述结构,不把本地真实配置提交进仓库。
- 业务逻辑应写在 `internal/logic/`,模型和持久化写在 `internal/models/`,路由注册写在 `internal/routers/`
- 首期核心模型优先落地资源、指标定义、采集任务、原始事件、告警、通知、工单、审计。
- 采集失败、Trap/Syslog 解析失败、通知失败、派单失败必须有错误码、重试或降级、用户提示、日志和审计。
- 告警、事件、工单状态机必须在后端集中定义和校验,前端不能自行拼接非法状态。
## 前端规范
- 使用 Vue 3、TypeScript、Pinia、Vue Router、Arco Design Vue延续模板现有风格。
- 页面优先实现真实可用流程,不新增纯展示型占位页。
- API 定义按业务域放入 `src/api/`,页面放入 `src/views/`,复用组件放入 `src/components/`
- 状态需要覆盖 loading、empty、error、success、partial、forbidden、stale、operating、operation_failed。
- 开发期 mock 只能用于前端独立调试;验收和联调必须连接真实后端 API。
- 文案和菜单要按模板 i18n 方式维护,不在组件中散落重复字符串。
- 首页、大屏、报表不能使用静态假数据作为验收依据;暂未接通真实接口时要明确显示空态、错误或数据过期。
- 错误状态必须显示 `traceId`,便于从页面追到后端日志。
## 测试规范
- 禁止 mock 数据库;后端测试必须使用真实 SQLite 内存库或任务指定的真实测试数据库。
- 新增核心业务逻辑时补充对应单元测试或接口测试。
- 状态机、统一响应、错误救援、权限边界和审计记录属于必须测试范围。
- TDengine 适配层至少要覆盖批量写入、时间范围查询、聚合查询、保留策略校验和不可用降级。
- 后端改动至少运行:
```powershell
go test ./...
go vet ./...
```
- 前端改动至少运行:
```powershell
pnpm type:check
pnpm lint
pnpm build
```
- 如果因私有依赖、网络、凭据或环境限制无法运行测试,需要在交付说明中明确写出原因和风险。
## 文档规范
- 文档使用中文,标题层级清晰,避免空泛描述。
- 修改需求、架构或验收相关内容时,同步检查 `TODOS.md``docs/首期验收矩阵.md` 是否需要更新。
- 新增命令示例必须使用 Windows PowerShell不写 Bash、`cp``rm -rf``export` 等 Linux 写法。
- 文档中的路径使用项目相对路径,例如 `server/etc/app.example.yaml`
- 涉及部署 Linux/麒麟时,可以写执行步骤、配置项和检查点,但命令示例仍保持 Windows PowerShell。
- 现场未知信息必须标为“待现场确认”不要伪造设备型号、账号、OID、Trap/Syslog 样例、短信平台参数或生产地址。
- 修改 OPS 命名、时序数据库选型、H3C 接入、验收矩阵相关内容时,要同步检查 README、TODOS、首期验收矩阵和相关 P1 文档。
## 已知坑
- `templates/front_sample/standard``templates/server_sample/` 是模板目录,不是最终交付目录。
- 测试不能用 mock 数据库替代真实数据库行为。
- 当前仓库存在私有 Go 依赖,执行 `go mod tidy``go test` 可能需要私有仓库访问权限。
- 处理中文文档时使用 UTF-8 读取和写入,避免产生乱码。
- TDengine 开源版无时间使用限制,但 AGPL-3.0 合规和麒麟目标版本支持需要正式确认。
- 旧项目名 `DOIP` 已替换为 `OPS`,后续新增内容不要重新引入旧称。