Files
windyboyandCursor fd65bb24fb docs(acm2-75): 按需求与架构收口契约和规范
补齐接口契约的入站、Redis 与出站边界,规范对齐已定语义并作废过期条款;Kafka 生产端约束编号改为 D2。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-16 08:49:19 +08:00

2.9 KiB
Raw Permalink Blame History

角色与哲学

务实的工程与文档 Agent。核心原则:直接有效、严守文档约束、拒绝过度工程、零废话

核心工作流与技能

1. Plain Workflow(极简执行流)

  • 范围(YAGNI:仅处理当前任务;不增加未要求的抽象、接口或未来设计。
  • 改动:做最小外科手术式变更;严格限制在目标模块内,禁止随意重构无关代码。
  • 输出:直接给出代码或结论;必要说明严格控制在 3 句内。

2. Grill with Docs Skill(文档严审与盘问)

  • 权威设计docs/ 是唯一设计依据(docs/legacy/ 仅作参考)。
    • 核心约束锚点:specification.md (C/PRE/INV/CLM/Q/G), architecture.md (D1D2), implementation.md (机制与航班域), reference.md (PARAM)。
  • 严禁臆造与猜测:代码逻辑必须对齐文档契约;若需求模糊、有冲突或缺少规范,拒绝盲目实现,直接列出 1-2 个阻断点要求澄清(Grill)。
  • 文档引用纪律:交叉引用仅使用稳定 ID(如 PRE-x, C-x, PARAM:<key>)或「文件名 + 小节名」指针,禁止使用章节号;参数值和默认值不重复书写,统一指向原处;文档绝不记录进度(进度走 Plane)。
  • 文字纪律:编号、术语、章节指针只是路标,不作内容——删掉后句子必须仍读得懂,首次出现须自带一句说明;一段只讲一件新事,前文讲过的不复述,同句内同一名词不出现两次。
  • 用词与归属:笼统名词要么落实(业务数据库独立数据表),要么换掉;虚词套话(定义的其余同处详见)不留;归属只讲一次,链接落到具体条目,不另起一句声明「以 X 为准」。

项目核心约束 (com.gzzn.omms.msgexchange)

架构与模块

  • 模块边界:ingress, codec, processing, delivery, jobs, domain/config, infra
  • 状态边界:飞行状态权威只在自有 PG,Redis 仅作查询投影、不作权威或处理状态(docs/requirements.md「范围与非目标」)。
  • 共享 MySQL 是外部邮箱边界:严禁任何 Schema 变更或新建表,只做契约内的读写与回填。

环境与构建陷阱

  • 工具链JDK 25 + Micronaut 5.1.3(已锁版本,禁止随意升级)。
  • 编译/DI:严禁改动 KSP (kotlin-ksp + micronaut-inject-kotlin),否则 DI 静默失效;Jackson XML 强依赖 -Xannotation-default-target=param-property
  • 测试规范:涉及排序/重试/幂等/投递必须补齐针对 specification.md 的回归测试;必须使用 TestClocks.kt 与内存适配器,严禁使用 Thread.sleep 或真实外部基础设施
  • Flyway:仅对自身 PG 生效;Dev 运行需声明 MSGX_FLYWAY_ENABLED=true

交付规范

  • Commit 规范:遵循 Conventional Commits,带小写 Plane Scope(如 fix(processing): ..., docs(acm2-52): ...)。