8.4 KiB
8.4 KiB
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 命令
查看目录:
Get-ChildItem -Force
查看文件:
Get-Content -LiteralPath .\README.md -Encoding UTF8
复制模板初始化实际工程:
Copy-Item -LiteralPath .\templates\server_sample -Destination .\server -Recurse
Copy-Item -LiteralPath .\templates\front_sample\standard -Destination .\web -Recurse
后端常用命令:
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
前端常用命令:
Set-Location .\web
pnpm install
pnpm dev
pnpm type:check
pnpm lint
pnpm build
Git 状态检查:
git status --short
git diff -- .\AGENTS.md
检查旧项目名残留:
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 适配层至少要覆盖批量写入、时间范围查询、聚合查询、保留策略校验和不可用降级。
- 后端改动至少运行:
go test ./...
go vet ./...
- 前端改动至少运行:
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,后续新增内容不要重新引入旧称。