> 状态(2026-06-10 立项):**占位提案,未排期** > 优先级:中。依赖 `standardize-client-service-layering` 先 archive 入 R5;本 change 是 R5 对存量钉钉 14 文件的整改。 ## Why R5(命名一致,`Impl` 后缀)落地后,钉钉模块仍有 14 个存量中缀文件违反规则: ``` service/dingtalk/impl/DDImplClient.java → DDClientImpl.java service/dingtalk/impl/DDImplService.java → DDServiceImpl.java service/dingtalk/impl/DDImplClient_Attendance.java → DDClient_AttendanceImpl.java service/dingtalk/impl/DDImplClient_Contacts.java → DDClient_ContactsImpl.java service/dingtalk/impl/DDImplClient_Dedicated.java → DDClient_DedicatedImpl.java service/dingtalk/impl/DDImplClient_Event.java → DDClient_EventImpl.java service/dingtalk/impl/DDImplClient_Extension.java → DDClient_ExtensionImpl.java service/dingtalk/impl/DDImplClient_Group.java → DDClient_GroupImpl.java service/dingtalk/impl/DDImplClient_Notice.java → DDClient_NoticeImpl.java service/dingtalk/impl/DDImplClient_Personnel.java → DDClient_PersonnelImpl.java service/dingtalk/impl/DDImplClient_Report.java → DDClient_ReportImpl.java service/dingtalk/impl/DDImplClient_Schedule.java → DDClient_ScheduleImpl.java service/dingtalk/impl/DDImplClient_Storage.java → DDClient_StorageImpl.java service/dingtalk/impl/DDImplClient_Workflow.java → DDClient_WorkflowImpl.java ``` 新接入子 client 时强行避开(R5 强制后缀)会让钉钉模块产生混搭风格,更难看,必须整改。 但本 change 拆出 `standardize-client-service-layering` 独立处理,原因: - 14 文件改名 + Bean 名变化 + 跨仓 `@Qualifier` / `@Autowired by-name` 字面引用扫,爆炸半径大 - R4 要求改前 grep 报告 + 用户 ACK;本 change 需要分批扫描 - 失败回滚成本:一个文件改坏可能拖累钉钉栈所有调用方 ## What Changes 按 R5 把 14 个中缀文件改为后缀风格。Spring DI by 接口的调用方不受影响(DDClient/DDClient_X 接口名不变);by-name 注入(如 `@Qualifier("dDImplClient_Attendance")`)需逐一找出替换。 执行策略:**分批,每批 3~4 文件**,每批一个独立 commit: 1. 批次 1:3 个 `DDImplClient` + `DDImplService` + `DDImplClient_Attendance`(主流量入口) 2. 批次 2:通讯/通知 — `DDImplClient_Contacts` / `DDImplClient_Group` / `DDImplClient_Notice` 3. 批次 3:考勤/人事 — `DDImplClient_Personnel` / `DDImplClient_Report` / `DDImplClient_Schedule` 4. 批次 4:扩展 — `DDImplClient_Dedicated` / `DDImplClient_Event` / `DDImplClient_Extension` / `DDImplClient_Storage` / `DDImplClient_Workflow` 每批落地前按 R4 流程跨仓 grep + 用户 ACK。 ## Capabilities ### Modified Capabilities - `client-service-layering`:R5 从「新增代码强制」演进为「全仓覆盖」(钉钉存量符合后) ### New Capabilities ## Impact - **重命名**:14 个 .java 文件 - **改 import**:所有引用这 14 个具体 impl 类的代码(预计绝大多数是 interface 引用,少数 by-name) - **Spring Bean 名变化**:默认 Bean 名首字母小写,`dDImplClient_Attendance` → `dDClient_AttendanceImpl`;by-name 调用方需同步改 - **跨仓影响**: - mjava-ai 仓:自扫 - akds 项目:路径待用户确认;R4 grep - 光明独立仓 `/Users/malk/server/cur/mjava-guangming/`:含 mjava-guangming/mjava-shunfeng 模块,可能引用 - 其他客户独立仓:用户在 ACK 时主动补 - **运行时风险**:纯重命名,无逻辑变更;编译期能捕获所有问题 ## Non-Goals - ❌ 不改 `DDClient` / `DDClient_X` 接口名(仅改 Impl) - ❌ 不改方法签名(R4 触发的实质性变更不在本 change 范围) - ❌ 不顺手改其他模块(aliwork/beisen 已经是后缀风格,本 change 只动钉钉) - ❌ 不一次 commit 14 文件(必须分批,每批可独立回滚)