Third commit closing high-value gaps the user flagged in the
verification plan.
Cross-node cache coherence — LOCKED EMPIRICALLY:
- Connected to live Redis at 118.178.19.35:16379 db=0.
- 233 of 267 keys use Spring's `<cacheName>::<key>` separator.
- Confirmed key shapes match @Cacheable SpEL specs:
businessGdsconfigformsServiceGetFormconstData::{...} (37 entries)
gdsmoduleById::gdsmoduleById_<sBrandsId>_<sSubsidiaryId>_<sLanguage> (2 entries)
- Conclusion: Spring's RedisCacheManager IS the active CacheManager.
@CacheEvict on any node clears the shared Redis store; cross-node
coherence works without any JMS involvement. Removed the "open
question" hedge in cache-invalidation.md.
New page — Metadata-management services (xlyManage):
- Closes the biggest documentation gap surfaced by Pass C2.
- Catalogs the 8 large Gds*ServiceImpl classes (878+729+555+489+
362+319+243+221 = ~3,800 lines of metadata-CRUD logic) plus
CommonServiceImpl (56) and SysbrandsServiceImpl (125).
- Documents the universal five-method shape every Gds*Service
follows (get/getBysId/add/update/delete) and how it pairs with
the corresponding Gds*Controller in xlyEntry/.../systemweb/.
- Maps each service to its BACK admin screen.
- Notes the cache-invalidation hookpoint (synchronous
BusinessCleanRedisData.delCleanRedisData* on commit).
- Added to mkdocs nav under Reference (Maintainer).
Worked examples:
- Slice 04: gdsconfigformcustomslave is empty in the dev DB
(0 rows). Updated the open verification item to confirm this
rather than leave the framing "depends on the deployment".
- Slice 05: side-by-side diff of 重庆展印's Sp_SalSalesCheck vs
the standard. Quantified differences (1714 vs 723 lines, same
14-param signature, override adds CbxSrcNoCheck branch and
strips temp-table aggregation, 12 sibling procs use the same
CbxSrcNoCheck pattern). Added a copy-pasteable diff command.
Honest scope acknowledgement:
- api-reference/internal.md: explicit "what this catalog
includes vs treats as illustrative" paragraph. ~19 framework-
primitive controllers documented; ~52 business-domain
controllers (workorder/salesorder/productionPlan/etc.) treated
as illustrations of the framework at work, with grep guidance
for maintainers who need to find them.
Auto-catalog regenerated:
- Ran scripts/gen_catalog.py against live DB. No changes
(catalog was already current); 3081 generated pages.
Pass E save trace:
- Tried multiple angles (UI flow, hand-crafted POST with token
in Authorization header, fetch interception). Edit-mode UI
didn't yield a save fire under our setup (Ant Design grid +
Vue SPA edit-mode peculiarity). Read trace remains
fully verified end-to-end. Save body shape is documented in
the Javadoc on BusinessBaseController.java:161-163 and
reflected in the wiki; live save corroboration deferred again.