Files
ops/AGENTS.md

182 lines
8.4 KiB
Markdown
Raw Permalink Normal View History

2026-06-21 17:50:24 +08:00
# 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`,后续新增内容不要重新引入旧称。