cabloy 5.1.61 → 5.1.63

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (230) hide show
  1. package/.claude/skills/cabloy-backend-scaffold/SKILL.md +2 -0
  2. package/.claude/skills/cabloy-backend-scaffold/references/follow-up-checklist.md +1 -1
  3. package/.claude/skills/cabloy-domain-planning/SKILL.md +212 -0
  4. package/.claude/skills/cabloy-frontend-scaffold/SKILL.md +2 -0
  5. package/CHANGELOG.md +55 -0
  6. package/CLAUDE.md +1 -0
  7. package/cabloy-docs/.vitepress/config.mjs +158 -12
  8. package/cabloy-docs/ai/docs-skills-rules-mapping.md +8 -0
  9. package/cabloy-docs/ai/future-skill-roadmap.md +2 -0
  10. package/cabloy-docs/ai/skills.md +1 -0
  11. package/cabloy-docs/backend/backend-contract-emission-output-inspection.md +189 -0
  12. package/cabloy-docs/backend/backend-contract-emission-source-reading-map.md +160 -0
  13. package/cabloy-docs/backend/backend-contract-emission-specimen.md +170 -0
  14. package/cabloy-docs/backend/backend-resource-module-contract-chain.md +323 -0
  15. package/cabloy-docs/backend/backend-source-reading-debug-checklist.md +173 -0
  16. package/cabloy-docs/backend/backend-source-reading-roadmap.md +129 -0
  17. package/cabloy-docs/backend/backend-source-reading-verify-playbook.md +166 -0
  18. package/cabloy-docs/backend/bean-scene-authoring.md +4 -4
  19. package/cabloy-docs/backend/broadcast-guide.md +3 -3
  20. package/cabloy-docs/backend/cli.md +20 -11
  21. package/cabloy-docs/backend/config-guide.md +4 -4
  22. package/cabloy-docs/backend/controller-aop-guide.md +10 -10
  23. package/cabloy-docs/backend/controller-guide.md +12 -2
  24. package/cabloy-docs/backend/crud-workflow.md +7 -3
  25. package/cabloy-docs/backend/dto-guide.md +12 -2
  26. package/cabloy-docs/backend/dto-infer-generation.md +201 -25
  27. package/cabloy-docs/backend/election-guide.md +2 -2
  28. package/cabloy-docs/backend/entity-guide.md +12 -3
  29. package/cabloy-docs/backend/error-guide.md +3 -3
  30. package/cabloy-docs/backend/event-guide.md +4 -4
  31. package/cabloy-docs/backend/external-aop-guide.md +2 -2
  32. package/cabloy-docs/backend/field-indexes.md +9 -3
  33. package/cabloy-docs/backend/foundation.md +8 -8
  34. package/cabloy-docs/backend/i18n-guide.md +6 -6
  35. package/cabloy-docs/backend/internal-aop-guide.md +2 -2
  36. package/cabloy-docs/backend/introduction.md +13 -0
  37. package/cabloy-docs/backend/migration-and-changes.md +3 -3
  38. package/cabloy-docs/backend/model-guide.md +16 -6
  39. package/cabloy-docs/backend/openapi-guide.md +3 -0
  40. package/cabloy-docs/backend/queue-guide.md +3 -3
  41. package/cabloy-docs/backend/redlock-guide.md +2 -2
  42. package/cabloy-docs/backend/schedule-guide.md +2 -2
  43. package/cabloy-docs/backend/scripts.md +8 -0
  44. package/cabloy-docs/backend/serialization-guide.md +2 -2
  45. package/cabloy-docs/backend/service-guide.md +18 -9
  46. package/cabloy-docs/backend/startup-guide.md +5 -5
  47. package/cabloy-docs/backend/status-guide.md +7 -7
  48. package/cabloy-docs/backend/unit-testing.md +3 -3
  49. package/cabloy-docs/backend/vona-source-reading-map.md +157 -0
  50. package/cabloy-docs/backend/websocket-protocol-guide.md +5 -5
  51. package/cabloy-docs/backend/websocket-usage-guide.md +15 -8
  52. package/cabloy-docs/frontend/a-model-under-the-hood.md +281 -0
  53. package/cabloy-docs/frontend/a-openapi-under-the-hood.md +248 -0
  54. package/cabloy-docs/frontend/a-router-guide.md +307 -0
  55. package/cabloy-docs/frontend/api-guide.md +4 -4
  56. package/cabloy-docs/frontend/api-schema-guide.md +1 -0
  57. package/cabloy-docs/frontend/app-startup-guide.md +7 -4
  58. package/cabloy-docs/frontend/bean-scene-authoring.md +1 -1
  59. package/cabloy-docs/frontend/behavior-guide.md +16 -16
  60. package/cabloy-docs/frontend/cli.md +5 -5
  61. package/cabloy-docs/frontend/command-scene-authoring.md +17 -8
  62. package/cabloy-docs/frontend/component-guide.md +5 -5
  63. package/cabloy-docs/frontend/component-props-guide.md +1 -1
  64. package/cabloy-docs/frontend/component-v-model-guide.md +2 -2
  65. package/cabloy-docs/frontend/filter-query-select-data-flow-guide.md +260 -0
  66. package/cabloy-docs/frontend/form-guide.md +27 -30
  67. package/cabloy-docs/frontend/form-scene-to-page-meta-guide.md +303 -0
  68. package/cabloy-docs/frontend/foundation.md +10 -6
  69. package/cabloy-docs/frontend/frontend-source-reading-roadmap.md +249 -0
  70. package/cabloy-docs/frontend/generated-contract-consumption-debug-checklist.md +190 -0
  71. package/cabloy-docs/frontend/generated-contract-consumption-entry-branch.md +205 -0
  72. package/cabloy-docs/frontend/generated-contract-consumption-list-branch.md +157 -0
  73. package/cabloy-docs/frontend/generated-contract-consumption-specimen.md +203 -0
  74. package/cabloy-docs/frontend/generated-contract-consumption-verify-playbook.md +189 -0
  75. package/cabloy-docs/frontend/generic-component-guide.md +1 -1
  76. package/cabloy-docs/frontend/introduction.md +29 -7
  77. package/cabloy-docs/frontend/model-architecture.md +38 -2
  78. package/cabloy-docs/frontend/model-resource-cookbook.md +11 -8
  79. package/cabloy-docs/frontend/model-resource-internals-deep-dive.md +238 -0
  80. package/cabloy-docs/frontend/model-resource-owner-pattern.md +22 -2
  81. package/cabloy-docs/frontend/model-resource-usage-guide.md +22 -6
  82. package/cabloy-docs/frontend/model-state-guide.md +12 -9
  83. package/cabloy-docs/frontend/module-scope.md +8 -8
  84. package/cabloy-docs/frontend/modules-and-suites.md +2 -1
  85. package/cabloy-docs/frontend/navigation-guards-guide.md +7 -0
  86. package/cabloy-docs/frontend/openapi-sdk-guide.md +12 -4
  87. package/cabloy-docs/frontend/page-guide.md +9 -9
  88. package/cabloy-docs/frontend/page-meta-guide.md +466 -0
  89. package/cabloy-docs/frontend/page-params-guide.md +3 -3
  90. package/cabloy-docs/frontend/page-query-guide.md +2 -2
  91. package/cabloy-docs/frontend/page-route-guide.md +6 -0
  92. package/cabloy-docs/frontend/permission-formscene-action-visibility-guide.md +263 -0
  93. package/cabloy-docs/frontend/quickstart.md +14 -2
  94. package/cabloy-docs/frontend/resource-entry-page-deep-dive.md +271 -0
  95. package/cabloy-docs/frontend/resource-list-page-deep-dive.md +279 -0
  96. package/cabloy-docs/frontend/rest-resource-source-reading-map.md +522 -0
  97. package/cabloy-docs/frontend/rest-resource-under-the-hood.md +622 -0
  98. package/cabloy-docs/frontend/root-behaviors-guide.md +282 -0
  99. package/cabloy-docs/frontend/route-alias-guide.md +6 -0
  100. package/cabloy-docs/frontend/router-stack-guide.md +229 -0
  101. package/cabloy-docs/frontend/router-tabs-introduction.md +26 -3
  102. package/cabloy-docs/frontend/router-tabs-layout-integration.md +367 -0
  103. package/cabloy-docs/frontend/router-tabs-mechanism.md +6 -0
  104. package/cabloy-docs/frontend/router-tabs-route-meta-cookbook.md +7 -0
  105. package/cabloy-docs/frontend/router-tabs-vs-stack.md +167 -0
  106. package/cabloy-docs/frontend/router-view-hosts-guide.md +450 -0
  107. package/cabloy-docs/frontend/server-data.md +2 -1
  108. package/cabloy-docs/frontend/system-startup-guide.md +2 -2
  109. package/cabloy-docs/frontend/table-action-visibility-permission-flow-guide.md +263 -0
  110. package/cabloy-docs/frontend/table-cell-cookbook.md +571 -0
  111. package/cabloy-docs/frontend/table-guide.md +373 -0
  112. package/cabloy-docs/frontend/table-resource-crud-cookbook.md +496 -0
  113. package/cabloy-docs/frontend/zova-app-guide.md +251 -0
  114. package/cabloy-docs/frontend/zova-form-source-reading-map.md +7 -9
  115. package/cabloy-docs/frontend/zova-form-under-the-hood.md +5 -0
  116. package/cabloy-docs/frontend/zova-router-under-the-hood.md +561 -0
  117. package/cabloy-docs/frontend/zova-source-reading-map.md +101 -7
  118. package/cabloy-docs/frontend/zova-table-controller-render-supplement.md +225 -0
  119. package/cabloy-docs/frontend/zova-table-source-reading-map.md +317 -0
  120. package/cabloy-docs/frontend/zova-table-under-the-hood.md +532 -0
  121. package/cabloy-docs/fullstack/backend-metadata-to-frontend-table-actions-debug-checklist.md +245 -0
  122. package/cabloy-docs/fullstack/backend-metadata-to-frontend-table-actions-source-reading-map.md +139 -0
  123. package/cabloy-docs/fullstack/backend-metadata-to-frontend-table-actions-verify-playbook.md +248 -0
  124. package/cabloy-docs/fullstack/backend-metadata-to-frontend-table-actions.md +511 -0
  125. package/cabloy-docs/fullstack/contract-loop-playbook.md +8 -2
  126. package/cabloy-docs/fullstack/edition-collaboration-differences.md +6 -0
  127. package/cabloy-docs/fullstack/frontend-metadata-to-backend.md +181 -48
  128. package/cabloy-docs/fullstack/introduction.md +3 -0
  129. package/cabloy-docs/fullstack/openapi-to-sdk.md +116 -2
  130. package/cabloy-docs/fullstack/suites-and-modules.md +333 -0
  131. package/cabloy-docs/fullstack/tutorial-1-first-module.md +3 -0
  132. package/cabloy-docs/fullstack/tutorial-2-first-crud.md +4 -0
  133. package/cabloy-docs/fullstack/tutorial-3-frontend-metadata-sharing.md +4 -0
  134. package/cabloy-docs/fullstack/tutorial-4-custom-level-renderers.md +31 -19
  135. package/cabloy-docs/fullstack/tutorial-5-backend-contract-sharing.md +5 -0
  136. package/cabloy-docs/fullstack/tutorial-6-one-contract-four-uses.md +4 -0
  137. package/cabloy-docs/fullstack/tutorials-overview.md +1 -1
  138. package/cabloy-docs/reference/bean-scene-boilerplates.md +13 -13
  139. package/cabloy-docs/reference/package-map.md +4 -3
  140. package/package.json +1 -1
  141. package/vona/pnpm-lock.yaml +22 -258
  142. package/vona/src/suite/a-training/modules/training-student/package.json +53 -0
  143. package/vona/src/suite/a-training/modules/training-student/src/.metadata/index.ts +400 -0
  144. package/vona/src/suite/a-training/modules/training-student/src/.metadata/locales.ts +18 -0
  145. package/vona/src/suite/a-training/modules/training-student/src/.metadata/this.ts +2 -0
  146. package/vona/src/suite/a-training/modules/training-student/src/bean/meta.index.ts +12 -0
  147. package/vona/src/suite/a-training/modules/training-student/src/bean/meta.version.ts +21 -0
  148. package/vona/src/suite/a-training/modules/training-student/src/bean/ssrMenu.student.ts +29 -0
  149. package/vona/src/suite/a-training/modules/training-student/src/config/locale/en-us.ts +15 -0
  150. package/vona/src/suite/a-training/modules/training-student/src/config/locale/zh-cn.ts +15 -0
  151. package/vona/src/suite/a-training/modules/training-student/src/controller/student.ts +74 -0
  152. package/vona/src/suite/a-training/modules/training-student/src/dto/studentCreate.tsx +28 -0
  153. package/vona/src/suite/a-training/modules/training-student/src/dto/studentSelectReq.tsx +44 -0
  154. package/vona/src/suite/a-training/modules/training-student/src/dto/studentSelectRes.tsx +11 -0
  155. package/vona/src/suite/a-training/modules/training-student/src/dto/studentSelectResItem.tsx +45 -0
  156. package/vona/src/suite/a-training/modules/training-student/src/dto/studentSummary.tsx +42 -0
  157. package/vona/src/suite/a-training/modules/training-student/src/dto/studentUpdate.tsx +28 -0
  158. package/vona/src/suite/a-training/modules/training-student/src/dto/studentView.tsx +25 -0
  159. package/vona/src/suite/a-training/modules/training-student/src/entity/student.tsx +84 -0
  160. package/vona/src/suite/a-training/modules/training-student/src/index.ts +2 -0
  161. package/vona/src/suite/a-training/modules/training-student/src/model/student.ts +10 -0
  162. package/vona/src/suite/a-training/modules/training-student/src/service/student.ts +57 -0
  163. package/vona/src/suite/a-training/modules/training-student/test/student.test.ts +173 -0
  164. package/vona/src/suite/a-training/modules/training-student/tsconfig.build.json +11 -0
  165. package/vona/src/suite/a-training/modules/training-student/tsconfig.json +7 -0
  166. package/vona/src/suite/a-training/package.json +12 -0
  167. package/vona/src/suite/a-training/tsconfig.base.json +4 -0
  168. package/vona/src/suite/a-training/tsconfig.json +10 -0
  169. package/zova/packages-zova/zova/package.json +2 -2
  170. package/zova/pnpm-lock.yaml +423 -682
  171. package/zova/src/suite/a-demo/modules/demo-basic/src/page/toolOne/render.tsx +5 -3
  172. package/zova/src/suite/a-home/modules/home-login/src/page/login/render.tsx +5 -3
  173. package/zova/src/suite/a-training/modules/training-student/cli/openapi.config.ts +9 -0
  174. package/zova/src/suite/a-training/modules/training-student/package.json +57 -0
  175. package/zova/src/suite/a-training/modules/training-student/src/.metadata/component/formFieldLevel.ts +31 -0
  176. package/zova/src/suite/a-training/modules/training-student/src/.metadata/index.ts +258 -0
  177. package/zova/src/suite/a-training/modules/training-student/src/.metadata/locales.ts +7 -0
  178. package/zova/src/suite/a-training/modules/training-student/src/.metadata/this.ts +2 -0
  179. package/zova/src/suite/a-training/modules/training-student/src/api/openapi/baseURL.ts +5 -0
  180. package/zova/src/suite/a-training/modules/training-student/src/api/openapi/index.ts +3 -0
  181. package/zova/src/suite/a-training/modules/training-student/src/api/openapi/schemas.ts +196 -0
  182. package/zova/src/suite/a-training/modules/training-student/src/api/openapi/types.ts +4146 -0
  183. package/zova/src/suite/a-training/modules/training-student/src/api/trainingStudent.ts +151 -0
  184. package/zova/src/suite/a-training/modules/training-student/src/apiSchema/trainingStudent.ts +43 -0
  185. package/zova/src/suite/a-training/modules/training-student/src/bean/tableCell.actionDeleteForce.tsx +53 -0
  186. package/zova/src/suite/a-training/modules/training-student/src/bean/tableCell.actionSummary.tsx +56 -0
  187. package/zova/src/suite/a-training/modules/training-student/src/bean/tableCell.level.tsx +63 -0
  188. package/zova/src/suite/a-training/modules/training-student/src/component/formFieldLevel/controller.tsx +117 -0
  189. package/zova/src/suite/a-training/modules/training-student/src/config/locale/en-us.ts +9 -0
  190. package/zova/src/suite/a-training/modules/training-student/src/config/locale/zh-cn.ts +9 -0
  191. package/zova/src/suite/a-training/modules/training-student/src/index.ts +2 -0
  192. package/zova/src/suite/a-training/modules/training-student/src/model/student.ts +42 -0
  193. package/zova/src/suite/a-training/modules/training-student/tsconfig.build.json +13 -0
  194. package/zova/src/suite/a-training/modules/training-student/tsconfig.json +5 -0
  195. package/zova/src/suite/a-training/package.json +12 -0
  196. package/zova/src/suite/a-training/tsconfig.base.json +4 -0
  197. package/zova/src/suite/a-training/tsconfig.json +4 -0
  198. package/zova/src/suite/cabloy-basic/modules/basic-app/package.json +60 -0
  199. package/zova/src/suite/cabloy-basic/modules/basic-app/src/.metadata/index.ts +137 -0
  200. package/zova/src/suite/cabloy-basic/modules/basic-app/src/.metadata/locales.ts +7 -0
  201. package/zova/src/suite/cabloy-basic/modules/basic-app/src/.metadata/this.ts +2 -0
  202. package/zova/src/suite/cabloy-basic/modules/basic-app/src/bean/behavior.appModal.tsx +260 -0
  203. package/zova/src/suite/cabloy-basic/modules/basic-app/src/config/config.ts +39 -0
  204. package/zova/src/suite/cabloy-basic/modules/basic-app/src/config/locale/en-us.ts +7 -0
  205. package/zova/src/suite/cabloy-basic/modules/basic-app/src/config/locale/zh-cn.ts +7 -0
  206. package/zova/src/suite/cabloy-basic/modules/basic-app/src/index.ts +4 -0
  207. package/zova/src/suite/cabloy-basic/modules/basic-app/src/lib/appModalItem.ts +16 -0
  208. package/zova/src/suite/cabloy-basic/modules/basic-app/src/lib/index.ts +1 -0
  209. package/zova/src/suite/cabloy-basic/modules/basic-app/src/monkey.ts +38 -0
  210. package/zova/src/suite/cabloy-basic/modules/basic-app/src/monkeySys.ts +14 -0
  211. package/zova/src/suite/cabloy-basic/modules/basic-app/src/service/appModal.ts +89 -0
  212. package/zova/src/suite/cabloy-basic/modules/basic-app/src/types/appModal.ts +52 -0
  213. package/zova/src/suite/cabloy-basic/modules/basic-app/src/types/index.ts +1 -0
  214. package/zova/src/suite/cabloy-basic/modules/basic-app/tsconfig.build.json +13 -0
  215. package/zova/src/suite/cabloy-basic/modules/basic-app/tsconfig.json +5 -0
  216. package/zova/src/suite/cabloy-basic/modules/basic-commands/package.json +6 -1
  217. package/zova/src/suite/cabloy-basic/modules/basic-commands/src/.metadata/index.ts +16 -0
  218. package/zova/src/suite/cabloy-basic/modules/basic-commands/src/bean/command.alert.tsx +8 -14
  219. package/zova/src/suite/cabloy-basic/modules/basic-commands/src/bean/command.confirm.tsx +10 -7
  220. package/zova/src/suite/cabloy-basic/modules/basic-commands/src/bean/command.prompt.tsx +30 -0
  221. package/zova/src/suite/cabloy-basic/modules/basic-pageentry/src/component/blockForm/controller.tsx +5 -3
  222. package/zova/src/suite/cabloy-basic/modules/basic-select/src/component/formFieldSelect/controller.tsx +29 -7
  223. package/zova/src/suite/cabloy-basic/modules/basic-select/src/component/select/controller.tsx +34 -11
  224. package/zova/src/suite/cabloy-basic/modules/basic-table/package.json +6 -1
  225. package/zova/src/suite/cabloy-basic/modules/basic-table/src/bean/tableCell.actionDelete.tsx +4 -2
  226. package/zova/src/suite/cabloy-basic/package.json +1 -0
  227. package/zova/src/suite-vendor/a-zova/modules/a-table/package.json +1 -1
  228. package/zova/src/suite-vendor/a-zova/modules/a-table/src/component/table/controller.tsx +3 -3
  229. package/zova/src/suite-vendor/a-zova/modules/a-table/src/lib/tableCell.ts +1 -1
  230. package/zova/src/suite-vendor/a-zova/package.json +2 -2
@@ -0,0 +1,189 @@
1
+ # Backend Contract Emission Output Inspection
2
+
3
+ This page is a practical inspection companion for one narrow backend question:
4
+
5
+ > after I understand the controller/DTO/entity inputs, how do I inspect the emitted Swagger/OpenAPI output for one backend contract slice?
6
+
7
+ It uses one concrete emitted thread as the specimen:
8
+
9
+ - `GET /training/student/summary/:id`
10
+
11
+ Use this page together with:
12
+
13
+ - [OpenAPI Guide](/backend/openapi-guide)
14
+ - [Backend Contract Emission Specimen](/backend/backend-contract-emission-specimen)
15
+ - [Backend Contract Emission Source Reading Map](/backend/backend-contract-emission-source-reading-map)
16
+ - [Backend OpenAPI to Frontend SDK](/fullstack/openapi-to-sdk)
17
+
18
+ > [!TIP]
19
+ > **Backend emission inspection path**
20
+ >
21
+ > 1. **[OpenAPI Guide](/backend/openapi-guide)** — understand backend emission conceptually
22
+ > 2. **[Backend Contract Emission Specimen](/backend/backend-contract-emission-specimen)** — inspect one concrete emitted action thread
23
+ > 3. **[Backend Contract Emission Source Reading Map](/backend/backend-contract-emission-source-reading-map)** — trace the broader input-side file order
24
+ > 4. **[Backend Contract Emission Output Inspection](/backend/backend-contract-emission-output-inspection)** — inspect the emitted output surfaces themselves
25
+ >
26
+ > **You are here:** step 4.
27
+ > **Previous recommended pages:** [OpenAPI Guide](/backend/openapi-guide), [Backend Contract Emission Specimen](/backend/backend-contract-emission-specimen), and [Backend Contract Emission Source Reading Map](/backend/backend-contract-emission-source-reading-map).
28
+
29
+ ## Why this page exists
30
+
31
+ The current backend docs already explain three useful layers of the emission story:
32
+
33
+ - why OpenAPI matters
34
+ - how one concrete emitted action thread is authored
35
+ - which files to read in source order for the broader emission branch
36
+
37
+ What was still missing was one page that starts from the **emitted output surfaces themselves**.
38
+
39
+ This page fills that gap.
40
+
41
+ It is not another broad OpenAPI concept page and not another source-reading map. It is the companion page for inspecting the emitted artifact directly.
42
+
43
+ ## The shortest accurate mental model
44
+
45
+ For this specimen, there are three things you should compare:
46
+
47
+ 1. the authored controller/DTO inputs
48
+ 2. the generated module-level metadata records
49
+ 3. the emitted OpenAPI output surfaces
50
+
51
+ If those three surfaces agree, the emitted backend contract slice is usually correct enough to hand off into the forward-chain frontend generation step.
52
+
53
+ ## Which emitted surfaces to inspect
54
+
55
+ The current backend docs already name the main inspection surfaces:
56
+
57
+ - Swagger UI
58
+ - OpenAPI JSON output
59
+ - versioned OpenAPI JSON output
60
+ - RapiDoc
61
+
62
+ For local emitted JSON inspection, the current public repo docs already use this example endpoint:
63
+
64
+ - `http://localhost:7102/swagger/json?version=V31`
65
+
66
+ That is the most practical raw inspection surface when you want to confirm the emitted machine-readable contract itself.
67
+
68
+ ## The specimen to keep in mind
69
+
70
+ Keep one small emitted path in mind while inspecting output:
71
+
72
+ - `GET /training/student/summary/:id`
73
+
74
+ The authored/backend anchors for that path are:
75
+
76
+ - `vona/src/suite/a-training/modules/training-student/src/controller/student.ts`
77
+ - `vona/src/suite/a-training/modules/training-student/src/dto/studentSummary.tsx`
78
+ - `vona/src/suite/a-training/modules/training-student/src/.metadata/index.ts`
79
+
80
+ This page is not re-walking those files in depth. It uses them as the comparison baseline for the emitted output.
81
+
82
+ ## What to confirm in emitted output
83
+
84
+ ### 1. Confirm the route path exists
85
+
86
+ Start by confirming that the emitted OpenAPI output includes the expected route path for the specimen.
87
+
88
+ For this page, the check is simple:
89
+
90
+ - the emitted output should expose the summary action path for the Student resource
91
+
92
+ Compare that against:
93
+
94
+ - `@Web.get('summary/:id')` in `controller/student.ts`
95
+ - the generated path registration in `.metadata/index.ts`
96
+
97
+ A practical reading takeaway is:
98
+
99
+ > the controller action and the emitted path should agree before you think about frontend SDK generation.
100
+
101
+ ### 2. Confirm the emitted response shape matches the DTO contract
102
+
103
+ Next, inspect the response schema for the summary action.
104
+
105
+ The source truth for the named response shape is:
106
+
107
+ - `DtoStudentSummary`
108
+
109
+ Representative fields in that DTO include:
110
+
111
+ - `id`
112
+ - `name`
113
+ - `mobile`
114
+ - `level`
115
+ - `levelTitle`
116
+ - `description`
117
+ - `descriptionLength`
118
+ - `summaryText`
119
+
120
+ When you inspect the emitted OpenAPI output, the important question is:
121
+
122
+ - does the response schema still reflect the intended named DTO shape?
123
+
124
+ A practical reading takeaway is:
125
+
126
+ > for this specimen, `DtoStudentSummary` is the response-shape baseline that the emitted output should mirror.
127
+
128
+ ### 3. Confirm the generated registry agrees with the emitted slice
129
+
130
+ The generated module surface in:
131
+
132
+ - `vona/src/suite/a-training/modules/training-student/src/.metadata/index.ts`
133
+
134
+ should still agree with what you see in emitted output.
135
+
136
+ The two most useful checks are:
137
+
138
+ - the DTO registry includes `training-student:studentSummary`
139
+ - the generated API path records include the summary route
140
+
141
+ That gives you a compact consistency triangle:
142
+
143
+ - controller action
144
+ - DTO registration
145
+ - emitted OpenAPI path/schema output
146
+
147
+ ## A practical inspection order
148
+
149
+ When checking one emitted backend contract slice, use this order:
150
+
151
+ 1. confirm the authored controller action is still the intended source truth
152
+ 2. confirm the named DTO is still the intended response-shape truth
153
+ 3. confirm `.metadata/index.ts` still exposes the expected path and DTO registration
154
+ 4. inspect versioned OpenAPI JSON output
155
+ 5. only then hand off to frontend generation or bridge diagnostics
156
+
157
+ That order keeps the inspection process narrow and avoids drifting too early into downstream layers.
158
+
159
+ ## What this page does not re-explain
160
+
161
+ This page deliberately does **not** re-teach:
162
+
163
+ - broad OpenAPI concepts -> see [OpenAPI Guide](/backend/openapi-guide)
164
+ - the full emitted action specimen narrative -> see [Backend Contract Emission Specimen](/backend/backend-contract-emission-specimen)
165
+ - the file-order path into controller/DTO/entity inputs -> see [Backend Contract Emission Source Reading Map](/backend/backend-contract-emission-source-reading-map)
166
+ - how emitted backend contract becomes generated frontend consumers -> see [Backend OpenAPI to Frontend SDK](/fullstack/openapi-to-sdk)
167
+
168
+ Its job is only to help you inspect the emitted backend output itself.
169
+
170
+ ## Where to read next
171
+
172
+ - If you need the broader conceptual emission page, continue with [OpenAPI Guide](/backend/openapi-guide).
173
+ - If you want a backend-side proof or diagnosis companion after checking emitted output, continue with [Backend Source Reading Verify Playbook](/backend/backend-source-reading-verify-playbook) and [Backend Source Reading Debug Checklist](/backend/backend-source-reading-debug-checklist).
174
+ - If you need the concrete authored action thread again, continue with [Backend Contract Emission Specimen](/backend/backend-contract-emission-specimen).
175
+ - If you need the broader input-side file-order path, continue with [Backend Contract Emission Source Reading Map](/backend/backend-contract-emission-source-reading-map).
176
+ - If the emitted backend output now looks correct and you want the next bridge step, continue with [Backend OpenAPI to Frontend SDK](/fullstack/openapi-to-sdk).
177
+
178
+ ## Final takeaway
179
+
180
+ The cleanest way to inspect one emitted backend contract slice is not to stay only in conceptual OpenAPI docs and not to jump immediately into frontend generation.
181
+
182
+ For the `summary/:id` specimen, compare:
183
+
184
+ - the controller action
185
+ - the named DTO shape
186
+ - the generated module registry
187
+ - the emitted OpenAPI output surface
188
+
189
+ If those surfaces agree, the backend contract slice is usually ready for the forward-chain handoff.
@@ -0,0 +1,160 @@
1
+ # Backend Contract Emission Source Reading Map
2
+
3
+ This page is a practical source-reading companion for one narrow backend question:
4
+
5
+ > if my question is no longer “how one module is wired” but “how controller, entity, and DTO metadata become emitted OpenAPI contract,” which files should I read first, and in what order?
6
+
7
+ Use this page together with:
8
+
9
+ - [OpenAPI Guide](/backend/openapi-guide)
10
+ - [DTO Infer and Generation](/backend/dto-infer-generation)
11
+ - [Backend Resource/Module Contract Chain](/backend/backend-resource-module-contract-chain)
12
+ - [Backend OpenAPI to Frontend SDK](/fullstack/openapi-to-sdk)
13
+
14
+ > [!TIP]
15
+ > **Backend emission reading path**
16
+ >
17
+ > 1. **[Backend Resource/Module Contract Chain](/backend/backend-resource-module-contract-chain)** — understand how one real module is wired
18
+ > 2. **[DTO Infer and Generation](/backend/dto-infer-generation)** — understand how DTO shapes are chosen and wrapped
19
+ > 3. **[Backend Contract Emission Source Reading Map](/backend/backend-contract-emission-source-reading-map)** — trace how those surfaces become emitted OpenAPI contract
20
+ >
21
+ > **You are here:** step 3.
22
+ > **Previous recommended pages:** [Backend Resource/Module Contract Chain](/backend/backend-resource-module-contract-chain) and [DTO Infer and Generation](/backend/dto-infer-generation).
23
+
24
+ ## Why this page exists
25
+
26
+ The current backend docs already explain:
27
+
28
+ - how one backend module is wired
29
+ - how DTO helpers and generated metadata work
30
+ - why OpenAPI matters as a backend contract bridge
31
+
32
+ What was still missing was one source-order page that isolates the emission branch itself.
33
+
34
+ This page fills that gap.
35
+
36
+ It is a file-order map for contract emission, not another broad OpenAPI concept page.
37
+
38
+ ## How to use this page
39
+
40
+ Use this rule of thumb:
41
+
42
+ 1. start with the conceptual pages first
43
+ 2. read the first source file to identify the contract input surface
44
+ 3. follow the emission path only until you understand where the emitted backend contract comes from
45
+ 4. stop and hand off to the fullstack forward bridge once the question becomes frontend generation or consumption
46
+
47
+ ## The shortest accurate mental model
48
+
49
+ A practical backend emission path looks like this:
50
+
51
+ 1. controllers define route/action request and response contracts
52
+ 2. DTOs and entities define named and shared field/metadata surfaces
53
+ 3. validation and `v` helpers refine the emitted shape
54
+ 4. OpenAPI generation reads those combined surfaces into machine-readable contract output
55
+ 5. that emitted contract then hands off to the forward-chain fullstack bridge
56
+
57
+ That means the emission branch is not the same as the module wiring branch.
58
+
59
+ It starts from the authored contract surfaces, then stops when the emitted backend contract is ready for downstream consumers.
60
+
61
+ ## Source-confirmed reading path
62
+
63
+ Use this order:
64
+
65
+ 1. `vona/src/suite/a-training/modules/training-student/src/controller/student.ts`
66
+ 2. `vona/src/suite/a-training/modules/training-student/src/dto/studentCreate.tsx`
67
+ 3. `vona/src/suite/a-training/modules/training-student/src/dto/studentUpdate.tsx`
68
+ 4. `vona/src/suite/a-training/modules/training-student/src/dto/studentView.tsx`
69
+ 5. `vona/src/suite/a-training/modules/training-student/src/dto/studentSelectReq.tsx`
70
+ 6. `vona/src/suite/a-training/modules/training-student/src/dto/studentSelectRes.tsx`
71
+ 7. `vona/src/suite/a-training/modules/training-student/src/dto/studentSelectResItem.tsx`
72
+ 8. `vona/src/suite/a-training/modules/training-student/src/entity/student.tsx`
73
+ 9. `vona/src/suite/a-training/modules/training-student/src/.metadata/index.ts`
74
+ 10. then return to the conceptual emission surface in [OpenAPI Guide](/backend/openapi-guide)
75
+
76
+ That order starts from the route/action contract surface, descends through the DTO and entity metadata that shape the emitted contract, and then returns to the OpenAPI-specific conceptual layer once the inputs are clear.
77
+
78
+ ## What each source surface clarifies
79
+
80
+ ### `controller/student.ts`
81
+
82
+ This file shows the route/action contract entry layer:
83
+
84
+ - `@Web.*` action declarations
85
+ - `@Arg.*` request extraction
86
+ - `@Api.body(...)` response contract surfaces
87
+ - action-level request/response DTO references
88
+
89
+ Read this file first when the question is:
90
+
91
+ - which action contracts are even supposed to emit into OpenAPI?
92
+
93
+ ### `dto/*.tsx`
94
+
95
+ These files show the named request/response contract artifacts that OpenAPI can emit.
96
+
97
+ Representative distinctions to keep in mind:
98
+
99
+ - create/update/view DTOs are operation-facing named artifacts
100
+ - select request DTOs may also carry filter-specific shaping and transform logic
101
+ - list/count DTOs may wrap row-item DTOs into emitted list contracts
102
+
103
+ Read these files when the question is:
104
+
105
+ - which DTO shape is part of the emitted backend contract?
106
+
107
+ ### `entity/student.tsx`
108
+
109
+ This file shows the shared field contract surface:
110
+
111
+ - `@Api.field(...)`
112
+ - validation-oriented field rules
113
+ - OpenAPI-facing titles and metadata
114
+ - field-level render metadata that still belongs to the broader contract story
115
+
116
+ Read this file when the question is:
117
+
118
+ - which parts of the emitted contract are shared field truth rather than DTO-local additions?
119
+
120
+ ### `.metadata/index.ts`
121
+
122
+ This file is not the main emission engine, but it still matters as a generated registry surface.
123
+
124
+ Read it when the question is:
125
+
126
+ - how do the DTO/controller/entity contract artifacts become visible as a coherent module-level generated surface?
127
+
128
+ Its value here is limited and specific:
129
+
130
+ - it confirms the DTO/controller/entity registrations exist together
131
+ - it shows those artifacts are not isolated local files only
132
+
133
+ Then stop and move back to the OpenAPI emission docs instead of re-reading the whole module chain.
134
+
135
+ ## What this page does not re-explain
136
+
137
+ This page deliberately does **not** re-teach:
138
+
139
+ - full module wiring and generated registration inventory -> see [Backend Resource/Module Contract Chain](/backend/backend-resource-module-contract-chain)
140
+ - explicit vs inferred DTO strategy -> see [DTO Infer and Generation](/backend/dto-infer-generation)
141
+ - frontend SDK generation and consumption -> see [Backend OpenAPI to Frontend SDK](/fullstack/openapi-to-sdk)
142
+ - general OpenAPI concepts -> see [OpenAPI Guide](/backend/openapi-guide)
143
+
144
+ Its job is only to show the shortest file-order path through the backend contract-emission inputs.
145
+
146
+ ## Where to read next
147
+
148
+ - If you need the broader conceptual emission page, continue with [OpenAPI Guide](/backend/openapi-guide).
149
+ - If you want one concrete emitted action thread before widening back out, continue with [Backend Contract Emission Specimen](/backend/backend-contract-emission-specimen).
150
+ - If you want a backend-side proof or diagnosis companion for the source-reading path itself, continue with [Backend Source Reading Verify Playbook](/backend/backend-source-reading-verify-playbook) and [Backend Source Reading Debug Checklist](/backend/backend-source-reading-debug-checklist).
151
+ - If you want to inspect the emitted output surfaces themselves after the source-order path, continue with [Backend Contract Emission Output Inspection](/backend/backend-contract-emission-output-inspection).
152
+ - If your next question is still about DTO helper and wrapping mechanics, return to [DTO Infer and Generation](/backend/dto-infer-generation).
153
+ - If your next question is about how one real module is wired before emission, return to [Backend Resource/Module Contract Chain](/backend/backend-resource-module-contract-chain).
154
+ - If your next question is about how the emitted backend contract becomes generated frontend consumers, continue with [Backend OpenAPI to Frontend SDK](/fullstack/openapi-to-sdk).
155
+
156
+ ## Final takeaway
157
+
158
+ The cleanest way to read backend contract emission is not to stay only in conceptual OpenAPI docs and not to reread the whole module chain every time.
159
+
160
+ Start from controller + DTO + entity contract inputs, confirm how those surfaces shape the emitted contract, then hand off to the forward-chain bridge once the emitted backend truth is clear.
@@ -0,0 +1,170 @@
1
+ # Backend Contract Emission Specimen
2
+
3
+ This page is a concrete backend specimen for one narrow question:
4
+
5
+ > how does one real controller action become one emitted backend contract slice?
6
+
7
+ It uses one emitted path only:
8
+
9
+ - `GET /training/student/summary/:id`
10
+
11
+ Use this page together with:
12
+
13
+ - [OpenAPI Guide](/backend/openapi-guide)
14
+ - [Backend Contract Emission Source Reading Map](/backend/backend-contract-emission-source-reading-map)
15
+ - [Backend Resource/Module Contract Chain](/backend/backend-resource-module-contract-chain)
16
+ - [DTO Infer and Generation](/backend/dto-infer-generation)
17
+ - [Backend OpenAPI to Frontend SDK](/fullstack/openapi-to-sdk)
18
+
19
+ > [!TIP]
20
+ > **Backend emission reading path**
21
+ >
22
+ > 1. **[OpenAPI Guide](/backend/openapi-guide)** — understand backend contract emission conceptually
23
+ > 2. **[Backend Contract Emission Specimen](/backend/backend-contract-emission-specimen)** — inspect one real emitted controller-action thread
24
+ > 3. **[Backend Contract Emission Source Reading Map](/backend/backend-contract-emission-source-reading-map)** — widen back out to the broader file-order emission path
25
+ >
26
+ > **You are here:** step 2.
27
+ > **Previous recommended page:** [OpenAPI Guide](/backend/openapi-guide).
28
+
29
+ ## Why this specimen exists
30
+
31
+ The current backend docs already explain several adjacent parts of the story:
32
+
33
+ - `OpenAPI Guide` explains why OpenAPI matters conceptually
34
+ - `Backend Resource/Module Contract Chain` explains how one module is wired
35
+ - `DTO Infer and Generation` explains how DTO shapes are chosen and wrapped
36
+ - `Backend Contract Emission Source Reading Map` explains the broader file-order path for emission inputs
37
+
38
+ What was still missing was one compact specimen that stays on a single emitted thread.
39
+
40
+ This page fills that gap.
41
+
42
+ It is not another broad OpenAPI guide and not another full module walkthrough. It is a specimen page for one emitted backend contract slice.
43
+
44
+ ## The shortest accurate mental model
45
+
46
+ For this specimen, the emitted backend contract comes from three main authored surfaces:
47
+
48
+ 1. the controller action declares the route and response contract entry
49
+ 2. the DTO class declares the named response body shape
50
+ 3. the module’s generated metadata surface exposes the registered route and DTO presence together
51
+
52
+ That is enough to answer the practical question:
53
+
54
+ - which action is being emitted?
55
+ - which DTO shape is part of that emitted contract?
56
+ - where can I confirm the route path and DTO registration in the generated module surface?
57
+
58
+ ## Source-confirmed reading path
59
+
60
+ Use this order:
61
+
62
+ 1. `vona/src/suite/a-training/modules/training-student/src/controller/student.ts`
63
+ 2. `vona/src/suite/a-training/modules/training-student/src/dto/studentSummary.tsx`
64
+ 3. `vona/src/suite/a-training/modules/training-student/src/.metadata/index.ts`
65
+
66
+ That order is intentionally small.
67
+
68
+ It starts at the emitted action contract entry, moves into the DTO response shape, then ends at the generated module-level registration surface.
69
+
70
+ ## 1. Controller action: the emitted route and response entry
71
+
72
+ The first source to read is:
73
+
74
+ - `vona/src/suite/a-training/modules/training-student/src/controller/student.ts`
75
+
76
+ Representative source facts:
77
+
78
+ - `@Web.get('summary/:id')`
79
+ - `@Api.body(v.optional(), v.object(DtoStudentSummary))`
80
+ - action method `summary(...)`
81
+
82
+ This file answers the first emission question:
83
+
84
+ - which route/action contract is supposed to be emitted?
85
+
86
+ For this specimen, the answer is clear:
87
+
88
+ - the route is `summary/:id`
89
+ - the response contract is declared through `DtoStudentSummary`
90
+
91
+ A practical reading takeaway is:
92
+
93
+ > the controller action is the contract entry point for the emitted backend slice.
94
+
95
+ ## 2. DTO surface: the named emitted response shape
96
+
97
+ The next source to read is:
98
+
99
+ - `vona/src/suite/a-training/modules/training-student/src/dto/studentSummary.tsx`
100
+
101
+ Representative source facts:
102
+
103
+ - `@Dto<IDtoOptionsStudentSummary>()`
104
+ - fields such as `id`, `name`, `mobile`, `level`, `levelTitle`, `description`, `descriptionLength`, and `summaryText`
105
+ - `@Api.field(...)` metadata on each field
106
+
107
+ This file answers the second emission question:
108
+
109
+ - which named response body shape is part of the emitted contract?
110
+
111
+ It is also a useful boundary reminder.
112
+
113
+ This page is not about infer-vs-explicit DTO strategy in general. It is only showing that this concrete action emits a concrete named DTO artifact.
114
+
115
+ A practical reading takeaway is:
116
+
117
+ > for this emitted slice, `DtoStudentSummary` is the clearest response-shape truth to inspect.
118
+
119
+ ## 3. Generated module surface: route path and DTO registration together
120
+
121
+ The final source to read is:
122
+
123
+ - `vona/src/suite/a-training/modules/training-student/src/.metadata/index.ts`
124
+
125
+ Representative source facts for this specimen:
126
+
127
+ - the DTO registry includes `training-student:studentSummary`
128
+ - the generated API path record includes `'/training/student/summary/:id'`
129
+
130
+ This file is not the emission engine itself, but it is still useful because it confirms that the action and DTO are visible together in the generated module-level surface.
131
+
132
+ For this specimen, it answers the third emission question:
133
+
134
+ - where can I confirm the summary route path and DTO presence together without re-reading the whole controller and DTO directories?
135
+
136
+ A practical reading takeaway is:
137
+
138
+ > `.metadata/index.ts` is the compact generated confirmation surface after you already know which action and DTO you are tracing.
139
+
140
+ ## What this specimen does not cover
141
+
142
+ This page deliberately does **not** re-teach:
143
+
144
+ - the whole backend module wiring chain -> see [Backend Resource/Module Contract Chain](/backend/backend-resource-module-contract-chain)
145
+ - explicit vs inferred DTO mechanics -> see [DTO Infer and Generation](/backend/dto-infer-generation)
146
+ - general OpenAPI concepts and `bean.openapi` capabilities -> see [OpenAPI Guide](/backend/openapi-guide)
147
+ - frontend generation and consumption after emission -> see [Backend OpenAPI to Frontend SDK](/fullstack/openapi-to-sdk)
148
+
149
+ Its job is only to keep one emitted action thread small and concrete.
150
+
151
+ ## Where to read next
152
+
153
+ - If you want the broader conceptual emission page, continue with [OpenAPI Guide](/backend/openapi-guide).
154
+ - If you want a backend-side proof or diagnosis companion for this emitted-thread path, continue with [Backend Source Reading Verify Playbook](/backend/backend-source-reading-verify-playbook) and [Backend Source Reading Debug Checklist](/backend/backend-source-reading-debug-checklist).
155
+ - If you want to inspect the emitted output itself after this authored specimen, continue with [Backend Contract Emission Output Inspection](/backend/backend-contract-emission-output-inspection).
156
+ - If you want the broader file-order path through emission inputs, continue with [Backend Contract Emission Source Reading Map](/backend/backend-contract-emission-source-reading-map).
157
+ - If you want the full module wiring specimen around this action, continue with [Backend Resource/Module Contract Chain](/backend/backend-resource-module-contract-chain).
158
+ - If you want to follow this emitted backend contract into generated frontend consumers, continue with [Backend OpenAPI to Frontend SDK](/fullstack/openapi-to-sdk).
159
+
160
+ ## Final takeaway
161
+
162
+ The cleanest way to understand one emitted backend contract slice is not to reread the entire module or stay only in broad OpenAPI concepts.
163
+
164
+ For the `summary/:id` specimen, read:
165
+
166
+ - the controller action for the emitted route/response entry
167
+ - the DTO for the emitted response body shape
168
+ - the generated module surface for route and DTO confirmation
169
+
170
+ That keeps the backend emission story concrete without flattening it into a much larger module walkthrough.