• 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).
    zichun authored
     
    Browse File »
  • 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).
    zichun authored
     
    Browse Code »
  • 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.
    zichun authored
     
    Browse Code »

  • 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.
    zichun authored
     
    Browse Code »

  • 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
    zichun authored
     
    Browse File »