Commit 12489f1d27232bb06627a13820bd1002a4ee63e8

Authored by zichun
1 parent ab4cf6c6

docs: en wiki — final-edition pass: precision + consistency

Cross-verified every load-bearing claim against current src/db. Two
real defects found and fixed; everything else holds.

Fixes:

- tech-stack.md HikariCP row: claim was "8 files reference
  com.zaxxer.hikari (xlyApi=6, xlyInterface=2)". Empirical recount on
  the cleanup branch: only 3 files import HikariDataSource (xlyApi=2:
  MasterDataSourceConfig + SlaveDataSourceConfig; xlyInterface=1:
  MasterDataSourceConfig). Updated the cell to match.
- slices/01-hello-world.md "Open verification items" had two items
  numbered 3 (a copy/paste artefact from the Pass-E live-trace
  edit). Renumbered the second to 4, fixed the cross-ref to point at
  the actual section anchor (#4-user-edits-a-row-clicks-save), and
  rewrote the closing one-liner so it names the items that are still
  open (2 + 3) rather than the original v1 framing.

Re-verified (no change needed):

- All cited line numbers in BusinessBaseController.java (63, 65, 105,
  107, 165, 167) and BusinessBaseServiceImpl.java (162, 165, 181, 196,
  246, 325-327, 1014, 1078, 1250, 1738, 1824) still accurate.
- BusinessGdsconfigformsServiceImpl.java:209 @Cacheable still reads
  the documented value/key pair.
- RequestAddParamUtil line counts: 56 (xlyPersist), 57 (xlyApi).
- DB count claims: 1358 gdsmodule, 124,524 kpimaster, 2986 gdsformconst,
  0 gdsconfigformcustomslave, 311 views, 901 tables, 1687 procs,
  177 functions, 18 customer override dirs, 305 viw_* views, 19 leaky.
- BI/management line counts: CharServiceImpl 2219, KpiServiceImpl 833,
  BusinessModelKpiServiceImpl 901, all 10 Gds*ServiceImpl line counts.
- Cache regions: 17 in CleanRedisServiceImpl matches the wiki.
- xlyPlc: 5 java files + 9 yml profiles. xlyEntity: 22 @Document.
- EntryApplicationBoot.java:22 @EnableCaching, :23-24 SecurityAutoConfig
  exclude — both still where the wiki says.
- act_*/biz_flow/biz_todo_item/gdsmoduleflow all still 0 rows
  (Activiti is wired-but-idle as the activiti.md page says).
- gdsconfigtbmaster drift: 11 of 307 sTbName values unresolved (3.6 %).
- All 6 BACK framework-builder admin pages (系统模块配置, 数据表内容
  配置, 界面显示内容配置, 接口自定义配置, 系统常量配置, 系统权限
  配置, etc.) referenced consistently across wiki.
- Cross-page consistency on all key facts: gdsjurisdiction-as-key vs
  sysjurisdiction-as-table; sTableNameList 4-table tenant-bypass
  exception; Spring RedisCacheManager (NOT JMS) is the cross-node
  cache mechanism; xlyPlc as plugin; xlyFace in-build-out-of-doc-
  scope; the 5-key composite (formData, gdsformconst, gdsjurisdiction,
  billnosetting, report).
- mkdocs --strict green.
- nav matches filesystem (no orphans).
en/docs/reference/maintainer/tech-stack.md
@@ -54,7 +54,7 @@ page records facts only. @@ -54,7 +54,7 @@ page records facts only.
54 | MSSQL JDBC | sqljdbc4 3.0 (Maven) + `mssql-jdbc-6.2.2.jre8.jar` (local jar in `xlyFlow/`, `xlyInterface/`) | `xlyApi/build.gradle`, `xlyInterface/build.gradle`, `xlyFlow/build.gradle` | 5 files: 3 in `xlyFlow/src/`, 2 in `xlyInterface/src/`. | 54 | MSSQL JDBC | sqljdbc4 3.0 (Maven) + `mssql-jdbc-6.2.2.jre8.jar` (local jar in `xlyFlow/`, `xlyInterface/`) | `xlyApi/build.gradle`, `xlyInterface/build.gradle`, `xlyFlow/build.gradle` | 5 files: 3 in `xlyFlow/src/`, 2 in `xlyInterface/src/`. |
55 | Oracle JDBC | `ojdbc6-11.2.0.4.jar` (local jar in `xlyFlow/`) | `xlyFlow/build.gradle` | 2 files in `xlyFlow/src/`. | 55 | Oracle JDBC | `ojdbc6-11.2.0.4.jar` (local jar in `xlyFlow/`) | `xlyFlow/build.gradle` | 2 files in `xlyFlow/src/`. |
56 | Druid | `druid-spring-boot-starter` 1.2.16; `druid` 1.2.16 | `xlyPersist/build.gradle`, `xlyApi/build.gradle` | 6 Java files import `com.alibaba.druid.*` (xlyBusinessService=2, xlyFlow=3, xlyInterface=1). 16 `application-*.yml` files reference Druid configuration (xlyEntry=8 yml profiles, xlyPlc=8 yml profiles). yaml: `xlyEntry/.../application-local.yml:126` sets `spring.datasource.type: com.alibaba.druid.pool.DruidDataSource`; lines 308-313 configure the `/druid/*` stat-view servlet. | 56 | Druid | `druid-spring-boot-starter` 1.2.16; `druid` 1.2.16 | `xlyPersist/build.gradle`, `xlyApi/build.gradle` | 6 Java files import `com.alibaba.druid.*` (xlyBusinessService=2, xlyFlow=3, xlyInterface=1). 16 `application-*.yml` files reference Druid configuration (xlyEntry=8 yml profiles, xlyPlc=8 yml profiles). yaml: `xlyEntry/.../application-local.yml:126` sets `spring.datasource.type: com.alibaba.druid.pool.DruidDataSource`; lines 308-313 configure the `/druid/*` stat-view servlet. |
57 -| HikariCP | 4.0.3 | `xlyApi/build.gradle` | 8 files reference `com.zaxxer.hikari` (xlyApi=6, xlyInterface=2). Java config: `xlyApi/.../api/config/MasterDataSourceConfig.java`, `SlaveDataSourceConfig.java`. yaml: `xlyApi/.../application-{local,dev,linux,win}.yml`. | 57 +| HikariCP | 4.0.3 | `xlyApi/build.gradle` | 3 files import `com.zaxxer.hikari.HikariDataSource` (xlyApi=2: `MasterDataSourceConfig.java` + `SlaveDataSourceConfig.java`; xlyInterface=1: `MasterDataSourceConfig.java`). yaml: `xlyApi/.../application-{local,dev,linux,win}.yml`. |
58 | Flyway | 5.2.1 | `xlyPersist/build.gradle` | No Java imports. Configured via yaml `spring.flyway.*` (e.g., `xlyEntry/.../application-local.yml:316-327`) with `enabled: false`. Migration scripts at `xlyEntry/src/main/resources/flyway/V*__*.sql`. | 58 | Flyway | 5.2.1 | `xlyPersist/build.gradle` | No Java imports. Configured via yaml `spring.flyway.*` (e.g., `xlyEntry/.../application-local.yml:316-327`) with `enabled: false`. Migration scripts at `xlyEntry/src/main/resources/flyway/V*__*.sql`. |
59 | PageHelper | 4.1.1 | `xlyPersist/build.gradle`, `xlyApi/build.gradle`, `xlyFlow/build.gradle` | 19 files import `com.github.pagehelper.*`. yaml `pagehelper.helperDialect: mysql` at `xlyEntry/.../application-local.yml:427`. | 59 | PageHelper | 4.1.1 | `xlyPersist/build.gradle`, `xlyApi/build.gradle`, `xlyFlow/build.gradle` | 19 files import `com.github.pagehelper.*`. yaml `pagehelper.helperDialect: mysql` at `xlyEntry/.../application-local.yml:427`. |
60 | jsqlparser | 3.2 | `xlyPersist/build.gradle` | 1 file: `xlyPersist/src/...` imports `net.sf.jsqlparser`. | 60 | jsqlparser | 3.2 | `xlyPersist/build.gradle` | 1 file: `xlyPersist/src/...` imports `net.sf.jsqlparser`. |
en/docs/slices/01-hello-world.md
@@ -288,12 +288,14 @@ Read flow live-corroborated; save flow still pending. @@ -288,12 +288,14 @@ Read flow live-corroborated; save flow still pending.
288 [internal API](../api-reference/internal.md#the-universal-crud-surface-business). 288 [internal API](../api-reference/internal.md#the-universal-crud-surface-business).
289 3. **The exact SQL emitted by save/delete**, captured from `syslog4j` or a 289 3. **The exact SQL emitted by save/delete**, captured from `syslog4j` or a
290 MyBatis debug log, to close the loop end-to-end. 290 MyBatis debug log, to close the loop end-to-end.
291 -3. ~~**`sTable` validation in `addUpdateDelBusinessData`.**~~ **CLOSED** — 291 +4. ~~**`sTable` validation in `addUpdateDelBusinessData`.**~~ **CLOSED** —
292 the runtime does **not** cross-check the frontend-supplied `sTable` 292 the runtime does **not** cross-check the frontend-supplied `sTable`
293 against the form's authorised backing tables (see the security note in 293 against the form's authorised backing tables (see the security note in
294 - step 4 above). Captured as a maintainer concern; mitigations exist  
295 - (tenant scoping, optional pre/post-save proc validation) but the  
296 - framework itself doesn't enforce.  
297 -  
298 -Items 1 and 2 belong to a Slice-1 v2 pass and require an actual save  
299 -against the dev DB — deferred to avoid mutating shared dev state. 294 + step 4 of [The trace, with observed evidence](#4-user-edits-a-row-clicks-save)
  295 + above). Captured as a maintainer concern; mitigations exist (tenant
  296 + scoping, optional pre/post-save proc validation) but the framework
  297 + itself doesn't enforce.
  298 +
  299 +Items 2 and 3 require an actual save mutation captured at the body /
  300 +SQL level — deferred to avoid mutating shared dev-DB state with
  301 +audit-tag noise.