-
en: every file:line citation, table-row count, endpoint, and diagram entity re-verified against xly-src and the live DB. Numerous small precision fixes across all wiki pages. api-reference/internal.md adds a new section enumerating the 52 non-framework controllers so readers can see what xly hardcoded vs. left to metadata. zh: parallel translation sync (38 modified + 3 new maintainer pages).
-
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).
-
User asked "Is there a BI engine?" Investigation found a substantial metadata-driven BI layer that the wiki had no dedicated coverage for. New page reference/maintainer/bi-engine.md: - Charts: gdsconfigcharmaster (3,006 rows) + slave (1,951) + CharServiceImpl (2,219 lines, one of the heaviest in xlyBusinessService). 11 chart types catalogued by sCharType distribution: Div(1558)/sLabel(1143)/Progress(137)/sPie(52)/ commonList(45)/sColumnarGroup(30)/sColumnar(28)/sBrokenLine(5)/ sBar(3)/ColorBlock(3)/sGauge(2). - 20 Sp_chart_* aggregation procs catalogued by domain (homepage cards, today/month sales, financial, equipment/shop-floor). - 6 /indexPage/commonChar dashboard modules listed by sId+name. - KPI subsystem: 6 kpi* tables (kpimaster=124,524 rows live), KpiServiceImpl (833 lines), BusinessModelKpiServiceImpl (901), FlushModleKpiThread, 2 Sp_KPI_* procs + spKPImodule. - Render flow end-to-end (SPA → getModelBysId → CharServiceImpl → generic proc dispatch → ECharts). - Customer-override KPI examples under script/客户/ noted. - Explicit "what this is not": not self-service BI, not real-time analytics, not OLAP-cube-backed. - Added to mkdocs nav under Reference (Maintainer). Tech-stack.md correction: - The OLAP4J row previously claimed "1 file in xlyPersist imports org.olap4j.*". Empirical re-grep returns ZERO Java imports of org.olap4j anywhere in source. The jars are classpath dead weight (the xmlaserver line is even commented out in build.gradle). Updated row to reflect the actual state and link to bi-engine.md.
-
Audit every concrete claim in the 41 hand-written en pages against the three primary sources (DB, source on cleanup branch, source-tree inventory). Fix divergent claims in place; preserve framing where verified. Substantive corrections: - request-lifecycle / runtime / slice 01: the metadata read sources from five tables/families (gdsconfigformmaster + overlays, gdsformconst, sysjurisdiction, sysbillnosettings, sysreport), not four. The map key `gdsjurisdiction` is misleading — the per-user grant read queries `sysjurisdiction`; `gdsjurisdiction` is the builder-side action catalogue. `gdsformconst`, `gdsconfigformmaster`, `gdsconfigformslave` are NOT tenant-scoped; they filter by form-id only. - multi-tenancy: four metadata tables (gdsformconst, gdsmodule, gdsconfigformmaster, gdsconfigformslave) are an explicit exception to the "every table tenant-scoped" promise — `sTableNameList` strips sBrandsId/sSubsidiaryId from writes against them. - sSaveProName / sSaveProNameBefore are pre/post-save HOOKS on top of the always-running base path (BusinessBaseServiceImpl.add/update), not either/or branches. Default add/update path is in BusinessBaseServiceImpl, not AddDelUpdCommonServiceImpl. - cache-invalidation: redis cache is cleared synchronously in BACK via @CacheEvict on CleanRedisServiceImpl during save. The JMS CHANGE_GDS_MODULE queue triggers PRO_ERPMERGEBASEGDSMODULE (base-data merge), NOT cache invalidation despite the name. Cross-node coherence open question (no custom CacheManager bean configured). - messaging: enumerate all 24 P2pQueue destinations grouped by intent; fix CHANGE_GDS_MODULE description; clarify single Consumer.java with 24 @JmsListener methods (not 24 listener classes). - API paths: /checkflow lowercase (mapping value, not class name); /procedureCall/doGenericProcedureCall (not /business/genericProcedureCall*). - tech-stack: Druid 6 java imports + 16 yml mentions (was 25 conflated); fastjson per-module xlyInterface 9 (was 10); commons-lang3 39 (was 41); @Document classes 20 PLAT_* + 2 DIKE_TEST* (was "all PLAT_*"); xlyPersist activiti hit is IdGen.java (was BaseDao.java); add Springfox to declared-but-no-imports table; reconcile module list to 11 framework core + xlyPlc plugin + xlyPlatConstant utility. - index.md: clarify xlyFace as "in build, not documented"; add xlyErpTask / xlyPlatTask scheduler bullet; correct MongoDB framing (caller is in xlyPersist with no consumers, not xlyPlat*); add xlyPlc note; extend backup-table OOS to cover *_copy1 / *_history / *YYYYMMDD[HHMMSS]. - deployment.md: split deployable Boot apps from library modules; enumerate 12 commented-out includes (was 3); remove xlyPlatConstant from out-of-scope Plat* list; split profile permutations by service. - activiti.md: add xlyApi to 5.17 dependency list; replace speculative BPMN path hint with verified state; name actual ActivitiConfig.java; note act_id_* are views projecting xly users into Activiti shapes. - api-reference/external.md: fix bearer-token validation flow (sysapibrand via AES-decrypted corpid, not sysapithirdtoken); /online/* are page renders not API execution; /pro/* mostly returns Thymeleaf views; mark sysapidbtodb as xlyFlow-owned; /token/getToken accepts GET and POST. - api-reference/webhooks.md: add Swagger Docket caveat (UI shell ships but no Docket bean → /v2/api-docs effectively empty); flag /send/sendQw as stub (returns "ok"). - slices/03-report.md: fix dir path xlyEntry/com/xly/report/ → xlyEntry/com/xly/web/report/; reframe PrintReportControllerOld as dead source (file body fully commented out). - concepts/modules-forms-vtables.md: add 22-prefix glossary table (gds/sys/sis/sft/ele/mft/sal/quo/acc/pur/ops/cah/sgd/ept/mit/pit/qly/ kpi/udf/viw_/plat_/ai_/act_/qrtz_) so a maintainer can enumerate business-data domains at a glance. - concepts/master-slave.md: disambiguate document-row pattern from DataSource master/slave (different concept, name overlap). - proc-dispatch.md: add proc-name molds (Sp_*_BeforeSave/AfterSave/ SaveReturn, sp_btn_*, PRO_ERPMERGE*) + function-layer paragraph (Fun_*/Fn_*/get_*; SQL-called, not Java-dispatched). - concepts/index.md: schema label MySQL\nxlyweberp → xlyweberp_*. Pass E (live behavioural traces) deferred — source/DB-side audit was thorough; live traces best done as a follow-up sweep against a running instance.
-
en: - new: api-reference/notifications.md, reference/maintainer/running-locally.md, reference/maintainer/tech-stack.md - concepts/index.md: add Mermaid architecture diagram - index.md: scope-note MongoDB store as plat-tier - concepts/api-surface.md: point "the four-table read" link at the reference/maintainer/runtime.md anchor that actually contains the section - maintainer/index.md, api-reference/index.md, mkdocs.yml: nav + cross-links zh: - mirror translations of the new en pages, plus zh api-reference/* section