本会话三部分交付,均经 JDK21 真实构建验证(非退出码,读 BUILD SUCCESS + Tests run):
1) Agent 开发基建(机械门禁优先)
- 入口与中枢:AGENTS.md、.agents/{knowledge,rules,skills,workflows}、CLAUDE.md 订正
- 订正 .gitignore:移除对 .agent/.agents 的忽略——它们是版本化 agent 基建,须入库(此前被忽略致克隆即缺)
- 机械门禁:CI 真跑测试(maven.yml JDK21、去 -Dmaven.test.skip)、覆盖台账去硬编码、
BC 边界 ArchUnit 门(BcBoundaryArchTest)、契约先行门(ContractFirstGateTest:Flyway 卫生 + OpenAPI 结构)
- 单一进度源 docs/mvp/进度总账.md + 7 个 BC per-module .agent + mise.toml(锁 JDK21)
- P1 增量:AiSuggestionMergeProjectionFacade(Gap A)、ContentSourceServiceImpl 事务化 outbox 回流(Gap B)
2) 过期历史文档清理(97 份 churn,git 可恢复)
- 删 docs/memorys(34)、agent-specs 审阅/执行版+迁移review(34)、superpowers/plans+specs(25)、
design-docs/临时+memorys(4);保留 superpowers/reports/coverage(门禁依赖)
- 唯一干货蒸馏入 .agents/knowledge/external-deps-and-gotchas.md;订正大纲/映射表/基线悬空引用
3) P1 harness 验证:消除已登记 BC 违例 ContentMuseWorkOwnerFacade
- content-api 新增只读端口 MuseContentWorkOwnerApi + content-server 实现(读自有 DAL);
AI 适配器改消费该端口、移除全部 content.dal 依赖,AI 业务规则与 4 消费者不变
- 删除 ArchUnit 豁免 → 门禁收紧(反向红 31 例 / 正向绿;适配器单测 13/0F、端口实现 7/0F)
注:muse-studio/src(SSE 相关 4 文件)与 muse-module-ai/pom.xml(移除孤儿 contract-server)
为本会话之前已存在的未提交改动,非本次工作,未纳入本提交。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2.6 KiB
2.6 KiB
skill:新增 muse-module 业务模块(BC)
类型:操作手册(skills) · 关联门禁:
../rules/bc-boundaries.md、../rules/contract-first.md何时用:新增一个业务域 BC(逻辑 owner)。先确认确属新 BC(逻辑 owner 优先,勿与既有 7 BC 重叠,见../knowledge/project-and-architecture.md);复杂域先走评审版 spec。
标准步骤(参照既有 muse-module-meta 布局)
- 建两子模块
muse-cloud/muse-module-<x>/:muse-module-<x>-api:对外契约(DTO / ErrorCode / facade-api 接口),供他域只读消费。muse-module-<x>-server:实现。父 pom 聚合两者(参照muse-module-meta/pom.xml)。
- server 包结构对齐既有(
cn/iocoder/muse/module/<x>/下):controller(admin/app)、application(service + facade 实现)、dal(dataobject + mysql Mapper)、domain、convert、enums。 - DB 迁移:新增
muse-cloud/sql/muse/V<下一版本>__<描述>.sql;切勿编辑历史迁移。ContractFirstGateTest会校验版本唯一 / 连续 / 命名V<版本>__<描述>.sql。 - API 契约(契约先行):建
docs/api-contracts/<x>/openapi.yaml(OAS3,含openapi/info/paths),并把"<x>"加入ContractFirstGateTest.REQUIRED_API_DOMAINS(机械要求该域契约长存)。 - 注册依赖:在
muse-server/pom.xml加muse-module-<x>-server(参照既有 dependency 块)。 - 守 BC 边界:不得 import 他域
.dal;跨 BC 只走对外 API / facade-api。BcBoundaryArchTest机械兜底(新违例=红)。明确本域只产 Shadow 还是可写 Canonical,遵守双轨主权与 owner 写入边界。 - 测试:Mockito 单测(
BaseMockitoUnitTest)覆盖业务分支;真库 / 真外部场景加*IT.java(见golden-journey-vertical-slice.md)。 - 本地验证(JDK21):
mise exec -- mvn -B -pl muse-server -am test(单构建,勿并发——并发写同一target会致NoSuchFileException假错);随 CI 阻断。
收尾沉淀
- 更新
../knowledge/project-and-architecture.md的 BC 表(新增一行)。 - 维护该模块
.agent(目标 / 边界 / out-of-scope / 现状 / TODO;机制建设中)。 - 如该域需保持 completed 台账纪律,纳入
P1rApiCoverageReportTest口径。