From 0dc2da99d5ac546023b0acfac34e853f1383e32b Mon Sep 17 00:00:00 2001 From: luoweijian <1329394916@qq.com> Date: Sat, 8 Aug 2026 11:28:19 +0800 Subject: [PATCH] commit --- .scratch/architecture-review-20260808.html | 329 ++++++++++++++++++ .scratch/review_permseed_diff.txt | Bin 0 -> 74434 bytes .scratch/review_permseed_diff2.txt | Bin 0 -> 150836 bytes .../com/crm/auth/config/DataInitializer.class | Bin 10008 -> 1466 bytes 4 files changed, 329 insertions(+) create mode 100644 .scratch/architecture-review-20260808.html create mode 100644 .scratch/review_permseed_diff.txt create mode 100644 .scratch/review_permseed_diff2.txt diff --git a/.scratch/architecture-review-20260808.html b/.scratch/architecture-review-20260808.html new file mode 100644 index 0000000..eae14df --- /dev/null +++ b/.scratch/architecture-review-20260808.html @@ -0,0 +1,329 @@ + + + + + Architecture review — crm-backend-matt + + + + + +
+ +
+
+

Architecture Review

+ crm-backend-matt · 2026-08-08 +
+
+ module + shallow + deep + ⊡ dashed = seam + — red = leakage +
+

Three deepening opportunities across the crm-file, crm-dict, and crm-auth modules. Vocabulary from /codebase-design; domain terms from CONTEXT.md.

+
+ +
+ + +
+
+
+

1. Thumbnail lifecycle split across two modules

+
+ Strong + in-process +
+
+ +
+

Files

+
    +
  • crm-file/service/api/FileApi.java — 11 methods, includes getThumbnail()
  • +
  • crm-file/service/impl/FileApiImpl.java — 551 lines; ~100 lines are thumbnail read/fallback
  • +
  • crm-file/task/ThumbnailGenerationTask.java — generation + lock, but no retrieval
  • +
  • crm-file/service/ThumbnailPlaceholderService.java, ThumbnailRenderer.java
  • +
+
+ +
+
+
Before
+
+
+
FileApiImpl (551 lines)
+
upload · download · preview · multipart · getThumbnail · handlePending · readThumbnail · placeholderOf
+
↑ thumbnail read path leaks here
+
+
⊡⊡ seam (not a real one) ⊡⊡
+
+
ThumbnailGenerationTask
+
assignInitialStatus · generate · tryGenerateSync · generateSync · findRenderer
+
generation only — half the lifecycle
+
+
+

No locality: thumbnail bugs span two modules

+
+ +
+
After
+
+
+
FileApi (8 methods)
+
upload · download · preview · multipart
+
file ops only — interface narrows
+
+
⊡⊡ seam ⊡⊡
+
+
ThumbnailService (deep)
+
interface: getThumbnail · assignInitialStatus · generate
+
implementation: handlePending · poll · readThumbnail · generateSync · findRenderer · placeholderOf
+
+
+

Locality: full lifecycle in one module

+
+
+ +
+

Problem: The thumbnail capability has no single module — generation lives in ThumbnailGenerationTask, retrieval and sync-fallback (handlePending, readThumbnail, placeholderOf) lives in FileApiImpl. Understanding thumbnail behavior requires bouncing between two modules. FileApi's interface is 11 methods wide because it carries thumbnail concerns that belong to a separate concern.

+

Solution: Extract a ThumbnailService module that owns the entire thumbnail lifecycle — generation, retrieval, sync-fallback, placeholder. FileApi narrows to file operations only. FileApiImpl.upload() and completeMultipart() call ThumbnailService.assignInitialStatus() + generate() instead of reaching into ThumbnailGenerationTask directly.

+
+ +
+

Wins

+
    +
  • locality: thumbnail bugs concentrate in one module
  • +
  • leverage: one ThumbnailService interface, FileApi + FileController both call it
  • +
  • interface shrinks: FileApi drops getThumbnail
  • +
  • tests hit one interface for the full lifecycle
  • +
  • FileApiImpl shrinks ~100 lines
  • +
+
+
+
+ + +
+
+
+

2. Permission seeding: shadow entities + logic duplication

+
+ Strong + ports & adapters +
+
+ +
+

Files

+
    +
  • crm-dict/config/DictPermissionInitializer.java — 157 lines, seeds dict:* permission points
  • +
  • crm-dict/domain/entity/SysMenuSeed.java, SysRoleSeed.java, SysRoleMenuSeed.java — shadow entities mirroring auth tables
  • +
  • crm-auth/config/DataInitializer.java — 165 lines, seeds crm:role:* permission points (same pattern)
  • +
+
+ +
+
+
Before
+
+
+
crm-dict / DictPermissionInitializer
+
findMenuByName · insertButtonIfAbsent · bindIfAbsent
+
+
+
SysMenuSeed, SysRoleSeed, SysRoleMenuSeed
+
@TableName("sys_menu") — schema copy
+
+
+
+
crm-auth / DataInitializer
+
findMenu · insertButtonIfAbsent · bindIfAbsent
+
+
+
SysMenu, SysRole, SysRoleMenu
+
@TableName("sys_menu") — real schema
+
+
+

Schema duplicated; logic duplicated; leak across seam

+
+ +
+
After
+
+
+
crm-base / PermissionSeeder (interface)
+
registerPoint(perms, apiUrl, name, parentPath)
+
+
⊡⊡ seam ⊡⊡
+
+
+
crm-dict initializer
+
thin caller
+
+
+
crm-auth initializer
+
thin caller
+
+
+
+
PermissionSeederImpl (crm-auth)
+
owns SysMenu, SysRole, SysRoleMenu schema
+
+
+

Schema knowledge in one module; one interface for seeding

+
+
+ +
+

Problem: Two initializers duplicate the same permission-seeding logic (findMenuByName, insertButtonIfAbsent, bindIfAbsent) with nearly identical structure. crm-dict creates shadow entities (SysMenuSeed, SysRoleSeed, SysRoleMenuSeed) that mirror crm-auth's physical schema. ADR-0015 says "the permission code string is the only contract with the auth system," but the shadow entities leak the entire sys_menu schema (column names, menu types, status values) into crm-dict. Schema changes in crm-auth silently break crm-dict's seeding.

+

Solution: Extract a PermissionSeeder seam — an interface in crm-base that declares registerPoint(perms, apiUrl, name, parentMenuPath) without exposing sys_menu's schema. crm-auth provides the implementation (owns SysMenu, SysRole, SysRoleMenu). Both initializers become thin callers of the same seam. Three shadow entities deleted.

+
+ +
+

+ ADR-0015 alignment: This fulfills the ADR, not contradicts it. The ADR says "crm-dict depends only on crm-base" and "the permission code string is the only contract." A PermissionSeeder interface in crm-base, implemented by crm-auth, preserves both constraints. The current shadow-entity approach actually violates the ADR's intent by leaking physical schema — the contract should be code strings, not @TableName("sys_menu"). +

+
+ +
+

Wins

+
    +
  • locality: sys_menu schema knowledge concentrates in one module
  • +
  • leverage: one PermissionSeeder interface, N seeders call it
  • +
  • delete 3 shadow entities + ~100 lines duplicated logic
  • +
  • future modules (crm-rule, crm-audit) seed permissions through the same seam
  • +
  • schema changes no longer break cross-module seeding
  • +
+
+
+
+ + +
+
+
+

3. DingTalkAuthClient: test-by-subclass instead of adapter

+
+ Worth exploring + mock +
+
+ +
+

Files

+
    +
  • crm-auth/service/client/DingTalkAuthClient.java — 314 lines; 4 protected HTTP stubs (~120 lines)
  • +
  • crm-auth/service/client/ThirdPartyAuthClient.java — 38 lines interface (getType, getUserInfo, isOrgMember)
  • +
  • crm-auth/service/client/ThirdPartyAuthClientFactory.java — 37 lines
  • +
+
+ +
+
+
Before — mixed mass
+
+
+
interface
+
+
3 methods
+
+
+
+
implementation
+
+
HTTP stubs
+
token cache
+
error parse
+
org verify
+
corp token
+
+
314 lines
+
+
+

HTTP plumbing tangled with business logic; tests subclass to stub

+
+ +
+
After — split by concern
+
+
+
client interface
+
+
3 methods
+
+
+
+
DingTalkAuthClient
+
+
token cache
+
error parse
+
org verify
+
+
~150 lines
+
+
+
DingTalkHttpClient
+
+
HTTP plumbing
+
+
~120 lines
+
+
+

Business logic testable through adapter; two adapters = real seam

+
+
+ +
+

Problem: Four protected HTTP methods (requestTokenApi, requestUserInfoApi, requestCorpTokenApi, requestGetByUnionIdApi) exist purely as test hooks — tests subclass and override them to inject canned responses. The business logic (token caching, error-code parsing, org membership verification) is tangled with HTTP plumbing. Tests exercise the protected stubs, not the real business logic through the ThirdPartyAuthClient interface. Bugs in error parsing or token refresh hide in private methods that call the stubs.

+

Solution: Extract a DingTalkHttpClient adapter (interface + real implementation) that owns all HTTP calls. DingTalkAuthClient injects the adapter and becomes pure business logic. Tests inject a stub DingTalkHttpClient through the constructor, testing business logic through the ThirdPartyAuthClient interface.

+
+ +
+

Wins

+
    +
  • locality: HTTP plumbing concentrates in the adapter
  • +
  • tests inject stub adapter, test through interface (no inheritance)
  • +
  • delete 4 protected methods + boilerplate
  • +
  • two adapters (real + test stub) justify the seam
  • +
+
+
+
+ +
+ + +
+

Top recommendation

+

+ #2 — Permission seeding seam +

+

+ Start here. It's the highest-leverage deepening: one new interface in crm-base deletes 3 shadow entities, eliminates ~100 lines of duplicated seeding logic, and future-proofs every new module that needs to seed permission points. It also aligns the codebase with ADR-0015's stated contract ("the permission code string is the only contract with the auth system") — the current shadow-entity approach leaks physical schema across the seam, which the ADR explicitly intended to prevent. The refactor is low-risk: the initializers already run at startup with no runtime callers, so the interface change has no downstream impact. +

+
+ #1 Thumbnail — highest friction but larger blast radius (FileApi is the most-used interface) + #3 DingTalk — testability gain, but only one client exists today +
+
+ +
+ + diff --git a/.scratch/review_permseed_diff.txt b/.scratch/review_permseed_diff.txt new file mode 100644 index 0000000000000000000000000000000000000000..0dfeeeb17e7b00aebc7e439360cce50a73fcc88b GIT binary patch literal 74434 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 literal 0 HcmV?d00001 diff --git a/.scratch/review_permseed_diff2.txt b/.scratch/review_permseed_diff2.txt new file mode 100644 index 0000000000000000000000000000000000000000..3a292f05d0742b36bcb156cdaae7b4577aff1509 GIT binary patch literal 150836 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