proposal.md 4.0 KB

状态(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_AttendancedDClient_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 文件(必须分批,每批可独立回滚)