状态(2026-06-10 立项):提案阶段,规则文档 + O3/O4/O6 待 apply,O2 待 ACK 优先级:中。固化 7 条分层规则,配套 4 个轻量优化(O2/O3/O4/O6);O1(钉钉 impl 改名)拆到独立 change
rename-dingtalk-impl-suffix。
mjava 基座现有 11 个产品接入板块(dingtalk / aliwork / beisen / aliyun / ekuaibao / fxiaoke / h3yun / integration / teambition / vika / xbongbong),整体已按产品分目录,但有 4 个不一致:
Impl 命名风格分裂:钉钉用中缀 DDImplClient_X,宜搭/北森用后缀 XxxImpl — 新人困惑util/ 与 utils/ 并行:2026-04-18 的 crypto 抽取留下中间态,util/crypto/RSACrypt.java 单独平行于 utils/ 复数目录server/aliyun/ 缺 ALYConf:ALYInvoiceImpl 内 4 个 URL 硬编码 — 与其他产品 server/ 结构不对齐更核心的痛点:已有 Client/Service 接口签名改动时,跨仓库(mjava-ai / akds / 光明独立仓 / 其他客户仓)引用关系不可见,改了下游一片报错。需要把"改前先扫引用 + 等用户 ACK"沉淀为强制规则。
新增 1 个 capability spec client-service-layering,固化 7 条规则:
server/{product}/ 放产品方数据契约(POJO/Conf/枚举),service/{product}/{Prod}Client*.java 1:1 对应产品官方接口,{Prod}Service.java 做通用业务编排{Prod}Client_{Module}.javaservice/{product}/;没有 → 按 R1/R2 新增;禁子项目自建 HTTP 直调*Client*.java 或 *Service*.java 的接口签名前,必须 grep 全仓引用清单 → 报告 → 等用户 ACK;仅扩展(新方法/新子 client)不需要确认XxxImpl 后缀风格(统一全仓,钉钉现有 12 个 DDImplClient_X 中缀产物拆到独立 change rename-dingtalk-impl-suffix 推进)server/ 层定位:只放数据契约(POJO/Conf/枚举/常量),禁 @Service / @Component,禁注入,禁调 HTTPXxxService;单客户编排留在客户子项目同步做 4 个轻量优化:
mjava/server/aliyun/ALYConf.java,抽 ALYInvoiceImpl 内 4 个硬编码 URL 为常量(纯新增 + 一次性 import 替换,仅本仓引用,影响小)INTPClient 主入口与 INTPService(不做空壳预建 — 服从 R7)/Users/malk/Desktop/Tech/claude/后端/mjava-baseline.md;仓库内 openspec/specs/project-baseline.md 加锚点util/crypto/RSACrypt.java 迁到 utils/crypto/RSACrypt.java,删 util/ 目录 — 按 R4 流程:本 change 仅做 grep 报告,等用户 ACK 后再独立动client-service-layering:mjava 仓 server/ + service/ 两层组织规则与变更流程openspec/specs/client-service-layering/(archive 后)mjava/src/main/java/com/malk/server/aliyun/ALYConf.java(一个常量类,~20 行)mjava/src/main/java/com/malk/service/aliyun/impl/ALYInvoiceImpl.java 4 处 URL 字面量改为 ALYConf.URL_* 引用 — 触发 R4 但作者即审核(本仓 + 本 change 范围内),grep 确认无下游 import URL 字面量后落地/Users/malk/Desktop/Tech/claude/后端/mjava-baseline.md 新章节"client/Service 分层规则"openspec/specs/project-baseline.md 加锚点;README.md 子项目速览表更新(如需)DDImplClient_X(拆到独立 change rename-dingtalk-impl-suffix,R5 仅约束新增代码)util/crypto/RSACrypt.java(O2 本 change 只 grep 报告,等 ACK 单独执行)