@k2works/claude-code-booster 3.5.0 → 3.6.1

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 (712) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +42 -42
  3. package/bin/claude-code-booster +90 -90
  4. package/lib/assets/.claude/README.md +239 -239
  5. package/lib/assets/.claude/scripts/generate-inception-deck.mjs +911 -911
  6. package/lib/assets/.claude/settings.json +11 -11
  7. package/lib/assets/.claude/skills/ai-agent-guidelines/SKILL.md +111 -111
  8. package/lib/assets/.claude/skills/analyzing-architecture/SKILL.md +83 -83
  9. package/lib/assets/.claude/skills/analyzing-business/SKILL.md +95 -95
  10. package/lib/assets/.claude/skills/analyzing-data-model/SKILL.md +77 -77
  11. package/lib/assets/.claude/skills/analyzing-domain-model/SKILL.md +117 -88
  12. package/lib/assets/.claude/skills/analyzing-inception-deck/SKILL.md +84 -84
  13. package/lib/assets/.claude/skills/analyzing-non-functional/SKILL.md +95 -95
  14. package/lib/assets/.claude/skills/analyzing-operation/SKILL.md +95 -95
  15. package/lib/assets/.claude/skills/analyzing-requirements/SKILL.md +91 -91
  16. package/lib/assets/.claude/skills/analyzing-tech-stack/SKILL.md +101 -101
  17. package/lib/assets/.claude/skills/analyzing-test-strategy/SKILL.md +89 -89
  18. package/lib/assets/.claude/skills/analyzing-ui-design/SKILL.md +80 -80
  19. package/lib/assets/.claude/skills/analyzing-usecases/SKILL.md +72 -72
  20. package/lib/assets/.claude/skills/creating-adr/SKILL.md +113 -113
  21. package/lib/assets/.claude/skills/developing-backend/SKILL.md +100 -100
  22. package/lib/assets/.claude/skills/developing-frontend/SKILL.md +93 -93
  23. package/lib/assets/.claude/skills/developing-release/SKILL.md +120 -120
  24. package/lib/assets/.claude/skills/generating-slides/SKILL.md +94 -94
  25. package/lib/assets/.claude/skills/git-commit/SKILL.md +81 -81
  26. package/lib/assets/.claude/skills/killing-processes/SKILL.md +44 -44
  27. package/lib/assets/.claude/skills/operating-backup/SKILL.md +59 -59
  28. package/lib/assets/.claude/skills/operating-cicd/SKILL.md +54 -54
  29. package/lib/assets/.claude/skills/operating-deploy/SKILL.md +67 -67
  30. package/lib/assets/.claude/skills/operating-docs/SKILL.md +219 -219
  31. package/lib/assets/.claude/skills/operating-provision/SKILL.md +77 -77
  32. package/lib/assets/.claude/skills/operating-setup/SKILL.md +63 -63
  33. package/lib/assets/.claude/skills/orchestrating-analysis/SKILL.md +104 -104
  34. package/lib/assets/.claude/skills/orchestrating-development/SKILL.md +162 -161
  35. package/lib/assets/.claude/skills/orchestrating-operation/SKILL.md +158 -158
  36. package/lib/assets/.claude/skills/orchestrating-project/SKILL.md +144 -144
  37. package/lib/assets/.claude/skills/planning-releases/SKILL.md +119 -119
  38. package/lib/assets/.claude/skills/syncing-github-project/SKILL.md +151 -151
  39. package/lib/assets/.claude/skills/tracking-progress/SKILL.md +91 -91
  40. package/lib/assets/.claude/skills/validating-iteration-plan/SKILL.md +215 -215
  41. package/lib/assets/.devcontainer/devcontainer.json +34 -34
  42. package/lib/assets/.env.example +17 -17
  43. package/lib/assets/.gitattributes +4 -4
  44. package/lib/assets/.github/workflows/docker-publish.yml +77 -77
  45. package/lib/assets/.github/workflows/mkdocs.yml +39 -39
  46. package/lib/assets/AGENTS.md +94 -94
  47. package/lib/assets/CLAUDE.md +183 -183
  48. package/lib/assets/README.md +254 -254
  49. package/lib/assets/docker-compose.yml +33 -33
  50. package/lib/assets/docs/adr/index.md +10 -10
  51. package/lib/assets/docs/article/functional-desgin-ppp/all/01-immutability-and-data-transformation.md +475 -475
  52. package/lib/assets/docs/article/functional-desgin-ppp/all/02-function-composition.md +519 -519
  53. package/lib/assets/docs/article/functional-desgin-ppp/all/03-polymorphism.md +537 -537
  54. package/lib/assets/docs/article/functional-desgin-ppp/all/04-data-validation.md +300 -300
  55. package/lib/assets/docs/article/functional-desgin-ppp/all/05-property-based-testing.md +320 -320
  56. package/lib/assets/docs/article/functional-desgin-ppp/all/06-tdd-and-functional.md +498 -498
  57. package/lib/assets/docs/article/functional-desgin-ppp/all/07-composite-pattern.md +298 -298
  58. package/lib/assets/docs/article/functional-desgin-ppp/all/08-decorator-pattern.md +291 -291
  59. package/lib/assets/docs/article/functional-desgin-ppp/all/09-adapter-pattern.md +336 -336
  60. package/lib/assets/docs/article/functional-desgin-ppp/all/10-strategy-pattern.md +303 -303
  61. package/lib/assets/docs/article/functional-desgin-ppp/all/11-command-pattern.md +286 -286
  62. package/lib/assets/docs/article/functional-desgin-ppp/all/12-visitor-pattern.md +322 -322
  63. package/lib/assets/docs/article/functional-desgin-ppp/all/13-abstract-factory-pattern.md +319 -319
  64. package/lib/assets/docs/article/functional-desgin-ppp/all/14-abstract-server-pattern.md +365 -365
  65. package/lib/assets/docs/article/functional-desgin-ppp/all/15-gossiping-bus-drivers.md +156 -156
  66. package/lib/assets/docs/article/functional-desgin-ppp/all/16-payroll-system.md +178 -178
  67. package/lib/assets/docs/article/functional-desgin-ppp/all/17-video-rental-system.md +312 -312
  68. package/lib/assets/docs/article/functional-desgin-ppp/all/18-concurrency-system.md +287 -287
  69. package/lib/assets/docs/article/functional-desgin-ppp/all/19-wa-tor-simulation.md +286 -286
  70. package/lib/assets/docs/article/functional-desgin-ppp/all/20-pattern-interactions.md +274 -274
  71. package/lib/assets/docs/article/functional-desgin-ppp/all/21-best-practices.md +294 -294
  72. package/lib/assets/docs/article/functional-desgin-ppp/all/22-oo-to-fp-migration.md +337 -337
  73. package/lib/assets/docs/article/functional-desgin-ppp/all/index.md +388 -388
  74. package/lib/assets/docs/article/functional-desgin-ppp/clojure/01-immutability-and-data-transformation.md +273 -273
  75. package/lib/assets/docs/article/functional-desgin-ppp/clojure/02-function-composition.md +380 -380
  76. package/lib/assets/docs/article/functional-desgin-ppp/clojure/03-polymorphism.md +384 -384
  77. package/lib/assets/docs/article/functional-desgin-ppp/clojure/04-clojure-spec.md +350 -350
  78. package/lib/assets/docs/article/functional-desgin-ppp/clojure/05-property-based-testing.md +352 -352
  79. package/lib/assets/docs/article/functional-desgin-ppp/clojure/06-tdd-in-functional.md +383 -383
  80. package/lib/assets/docs/article/functional-desgin-ppp/clojure/07-composite-pattern.md +529 -529
  81. package/lib/assets/docs/article/functional-desgin-ppp/clojure/08-decorator-pattern.md +395 -395
  82. package/lib/assets/docs/article/functional-desgin-ppp/clojure/09-adapter-pattern.md +399 -399
  83. package/lib/assets/docs/article/functional-desgin-ppp/clojure/10-strategy-pattern.md +485 -485
  84. package/lib/assets/docs/article/functional-desgin-ppp/clojure/11-command-pattern.md +566 -566
  85. package/lib/assets/docs/article/functional-desgin-ppp/clojure/12-visitor-pattern.md +567 -567
  86. package/lib/assets/docs/article/functional-desgin-ppp/clojure/13-abstract-factory-pattern.md +475 -475
  87. package/lib/assets/docs/article/functional-desgin-ppp/clojure/14-abstract-server-pattern.md +462 -462
  88. package/lib/assets/docs/article/functional-desgin-ppp/clojure/15-gossiping-bus-drivers.md +325 -325
  89. package/lib/assets/docs/article/functional-desgin-ppp/clojure/16-payroll-system.md +401 -401
  90. package/lib/assets/docs/article/functional-desgin-ppp/clojure/17-video-rental-system.md +450 -450
  91. package/lib/assets/docs/article/functional-desgin-ppp/clojure/18-concurrency-system.md +475 -475
  92. package/lib/assets/docs/article/functional-desgin-ppp/clojure/19-wator-simulation.md +739 -739
  93. package/lib/assets/docs/article/functional-desgin-ppp/clojure/20-pattern-interactions.md +567 -567
  94. package/lib/assets/docs/article/functional-desgin-ppp/clojure/21-best-practices.md +518 -518
  95. package/lib/assets/docs/article/functional-desgin-ppp/clojure/22-oo-to-fp-migration.md +532 -532
  96. package/lib/assets/docs/article/functional-desgin-ppp/clojure/index.md +241 -241
  97. package/lib/assets/docs/article/functional-desgin-ppp/elixir/01-immutability-and-data-transformation.md +383 -383
  98. package/lib/assets/docs/article/functional-desgin-ppp/elixir/02-function-composition.md +374 -374
  99. package/lib/assets/docs/article/functional-desgin-ppp/elixir/03-polymorphism.md +375 -375
  100. package/lib/assets/docs/article/functional-desgin-ppp/elixir/04-data-validation.md +195 -195
  101. package/lib/assets/docs/article/functional-desgin-ppp/elixir/05-property-based-testing.md +268 -268
  102. package/lib/assets/docs/article/functional-desgin-ppp/elixir/06-tdd-and-fp.md +294 -294
  103. package/lib/assets/docs/article/functional-desgin-ppp/elixir/07-effects-and-pure-functions.md +164 -164
  104. package/lib/assets/docs/article/functional-desgin-ppp/elixir/08-error-handling-strategies.md +168 -168
  105. package/lib/assets/docs/article/functional-desgin-ppp/elixir/09-io-and-external-systems.md +254 -254
  106. package/lib/assets/docs/article/functional-desgin-ppp/elixir/10-concurrency-patterns.md +269 -269
  107. package/lib/assets/docs/article/functional-desgin-ppp/elixir/11-command-pattern.md +148 -148
  108. package/lib/assets/docs/article/functional-desgin-ppp/elixir/12-visitor-pattern.md +176 -176
  109. package/lib/assets/docs/article/functional-desgin-ppp/elixir/13-abstract-factory-pattern.md +604 -604
  110. package/lib/assets/docs/article/functional-desgin-ppp/elixir/14-abstract-server-pattern.md +729 -729
  111. package/lib/assets/docs/article/functional-desgin-ppp/elixir/15-gossiping-bus-drivers.md +291 -291
  112. package/lib/assets/docs/article/functional-desgin-ppp/elixir/16-payroll-system.md +420 -420
  113. package/lib/assets/docs/article/functional-desgin-ppp/elixir/17-video-rental-system.md +319 -319
  114. package/lib/assets/docs/article/functional-desgin-ppp/elixir/18-concurrency-system.md +466 -466
  115. package/lib/assets/docs/article/functional-desgin-ppp/elixir/19-wator-simulation.md +523 -523
  116. package/lib/assets/docs/article/functional-desgin-ppp/elixir/20-pattern-interactions.md +287 -287
  117. package/lib/assets/docs/article/functional-desgin-ppp/elixir/21-best-practices.md +340 -340
  118. package/lib/assets/docs/article/functional-desgin-ppp/elixir/22-oo-to-fp-migration.md +395 -395
  119. package/lib/assets/docs/article/functional-desgin-ppp/elixir/index.md +248 -248
  120. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/01-immutability-and-data-transformation.md +384 -384
  121. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/02-function-composition.md +452 -452
  122. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/03-polymorphism.md +495 -495
  123. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/04-data-validation.md +416 -416
  124. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/05-property-based-testing.md +382 -382
  125. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/06-tdd-functional.md +687 -687
  126. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/07-composite-pattern.md +442 -442
  127. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/08-decorator-pattern.md +479 -479
  128. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/09-adapter-pattern.md +479 -479
  129. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/10-strategy-pattern.md +427 -427
  130. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/11-command-pattern.md +428 -428
  131. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/12-visitor-pattern.md +339 -339
  132. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/13-abstract-factory-pattern.md +309 -309
  133. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/14-abstract-server-pattern.md +596 -596
  134. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/15-gossiping-bus-drivers.md +355 -355
  135. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/16-payroll-system.md +350 -350
  136. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/17-video-rental-system.md +414 -414
  137. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/18-concurrency-system.md +367 -367
  138. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/19-wator-simulation.md +403 -403
  139. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/20-pattern-interactions.md +291 -291
  140. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/21-best-practices.md +324 -324
  141. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/22-oo-to-fp-migration.md +332 -332
  142. package/lib/assets/docs/article/functional-desgin-ppp/fsharp/index.md +274 -274
  143. package/lib/assets/docs/article/functional-desgin-ppp/haskell/01-immutability-and-data-transformation.md +298 -298
  144. package/lib/assets/docs/article/functional-desgin-ppp/haskell/02-function-composition.md +304 -304
  145. package/lib/assets/docs/article/functional-desgin-ppp/haskell/03-polymorphism.md +362 -362
  146. package/lib/assets/docs/article/functional-desgin-ppp/haskell/04-data-validation.md +257 -257
  147. package/lib/assets/docs/article/functional-desgin-ppp/haskell/05-property-based-testing.md +254 -254
  148. package/lib/assets/docs/article/functional-desgin-ppp/haskell/06-tdd-functional.md +283 -283
  149. package/lib/assets/docs/article/functional-desgin-ppp/haskell/07-composite-pattern.md +395 -395
  150. package/lib/assets/docs/article/functional-desgin-ppp/haskell/08-decorator-pattern.md +319 -319
  151. package/lib/assets/docs/article/functional-desgin-ppp/haskell/09-adapter-pattern.md +382 -382
  152. package/lib/assets/docs/article/functional-desgin-ppp/haskell/10-strategy-pattern.md +287 -287
  153. package/lib/assets/docs/article/functional-desgin-ppp/haskell/11-command-pattern.md +303 -303
  154. package/lib/assets/docs/article/functional-desgin-ppp/haskell/12-visitor-pattern.md +326 -326
  155. package/lib/assets/docs/article/functional-desgin-ppp/haskell/13-abstract-factory-pattern.md +332 -332
  156. package/lib/assets/docs/article/functional-desgin-ppp/haskell/14-abstract-server-pattern.md +379 -379
  157. package/lib/assets/docs/article/functional-desgin-ppp/haskell/15-gossiping-bus-drivers.md +177 -177
  158. package/lib/assets/docs/article/functional-desgin-ppp/haskell/16-payroll-system.md +219 -219
  159. package/lib/assets/docs/article/functional-desgin-ppp/haskell/17-video-rental-system.md +244 -244
  160. package/lib/assets/docs/article/functional-desgin-ppp/haskell/18-concurrency-system.md +363 -363
  161. package/lib/assets/docs/article/functional-desgin-ppp/haskell/19-wator-simulation.md +438 -438
  162. package/lib/assets/docs/article/functional-desgin-ppp/haskell/20-pattern-interactions.md +325 -325
  163. package/lib/assets/docs/article/functional-desgin-ppp/haskell/21-best-practices.md +403 -403
  164. package/lib/assets/docs/article/functional-desgin-ppp/haskell/22-oo-to-fp-migration.md +469 -469
  165. package/lib/assets/docs/article/functional-desgin-ppp/haskell/index.md +174 -174
  166. package/lib/assets/docs/article/functional-desgin-ppp/index.md +90 -90
  167. package/lib/assets/docs/article/functional-desgin-ppp/rust/01-immutability-and-data-transformation.md +450 -450
  168. package/lib/assets/docs/article/functional-desgin-ppp/rust/02-function-composition.md +463 -463
  169. package/lib/assets/docs/article/functional-desgin-ppp/rust/03-polymorphism.md +425 -425
  170. package/lib/assets/docs/article/functional-desgin-ppp/rust/04-data-validation.md +273 -273
  171. package/lib/assets/docs/article/functional-desgin-ppp/rust/05-property-based-testing.md +247 -247
  172. package/lib/assets/docs/article/functional-desgin-ppp/rust/06-tdd-and-functional.md +841 -841
  173. package/lib/assets/docs/article/functional-desgin-ppp/rust/07-composite-pattern.md +384 -384
  174. package/lib/assets/docs/article/functional-desgin-ppp/rust/08-decorator-pattern.md +383 -383
  175. package/lib/assets/docs/article/functional-desgin-ppp/rust/09-adapter-pattern.md +339 -339
  176. package/lib/assets/docs/article/functional-desgin-ppp/rust/10-strategy-pattern.md +331 -331
  177. package/lib/assets/docs/article/functional-desgin-ppp/rust/11-command-pattern.md +356 -356
  178. package/lib/assets/docs/article/functional-desgin-ppp/rust/12-visitor-pattern.md +379 -379
  179. package/lib/assets/docs/article/functional-desgin-ppp/rust/13-abstract-factory-pattern.md +361 -361
  180. package/lib/assets/docs/article/functional-desgin-ppp/rust/14-abstract-server-pattern.md +392 -392
  181. package/lib/assets/docs/article/functional-desgin-ppp/rust/15-gossiping-bus-drivers.md +300 -300
  182. package/lib/assets/docs/article/functional-desgin-ppp/rust/16-payroll-system.md +297 -297
  183. package/lib/assets/docs/article/functional-desgin-ppp/rust/17-video-rental-system.md +304 -304
  184. package/lib/assets/docs/article/functional-desgin-ppp/rust/18-concurrency-system.md +315 -315
  185. package/lib/assets/docs/article/functional-desgin-ppp/rust/19-wator-simulation.md +311 -311
  186. package/lib/assets/docs/article/functional-desgin-ppp/rust/20-pattern-interactions.md +304 -304
  187. package/lib/assets/docs/article/functional-desgin-ppp/rust/21-best-practices.md +336 -336
  188. package/lib/assets/docs/article/functional-desgin-ppp/rust/22-oo-to-fp-migration.md +349 -349
  189. package/lib/assets/docs/article/functional-desgin-ppp/rust/index.md +243 -243
  190. package/lib/assets/docs/article/functional-desgin-ppp/scala/01-immutability-and-data-transformation.md +328 -328
  191. package/lib/assets/docs/article/functional-desgin-ppp/scala/02-function-composition.md +348 -348
  192. package/lib/assets/docs/article/functional-desgin-ppp/scala/03-polymorphism.md +357 -357
  193. package/lib/assets/docs/article/functional-desgin-ppp/scala/04-data-validation.md +364 -364
  194. package/lib/assets/docs/article/functional-desgin-ppp/scala/05-property-based-testing.md +515 -515
  195. package/lib/assets/docs/article/functional-desgin-ppp/scala/06-tdd-functional.md +557 -557
  196. package/lib/assets/docs/article/functional-desgin-ppp/scala/07-composite-pattern.md +363 -363
  197. package/lib/assets/docs/article/functional-desgin-ppp/scala/08-decorator-pattern.md +327 -327
  198. package/lib/assets/docs/article/functional-desgin-ppp/scala/09-adapter-pattern.md +517 -517
  199. package/lib/assets/docs/article/functional-desgin-ppp/scala/10-strategy-pattern.md +441 -441
  200. package/lib/assets/docs/article/functional-desgin-ppp/scala/11-command-pattern.md +407 -407
  201. package/lib/assets/docs/article/functional-desgin-ppp/scala/12-visitor-pattern.md +379 -379
  202. package/lib/assets/docs/article/functional-desgin-ppp/scala/13-abstract-factory-pattern.md +398 -398
  203. package/lib/assets/docs/article/functional-desgin-ppp/scala/14-abstract-server-pattern.md +476 -476
  204. package/lib/assets/docs/article/functional-desgin-ppp/scala/15-gossiping-bus-drivers.md +391 -391
  205. package/lib/assets/docs/article/functional-desgin-ppp/scala/16-payroll-system.md +342 -342
  206. package/lib/assets/docs/article/functional-desgin-ppp/scala/17-video-rental-system.md +324 -324
  207. package/lib/assets/docs/article/functional-desgin-ppp/scala/18-concurrency-system.md +730 -730
  208. package/lib/assets/docs/article/functional-desgin-ppp/scala/19-wator-simulation.md +624 -624
  209. package/lib/assets/docs/article/functional-desgin-ppp/scala/20-pattern-interactions.md +512 -512
  210. package/lib/assets/docs/article/functional-desgin-ppp/scala/21-best-practices.md +433 -433
  211. package/lib/assets/docs/article/functional-desgin-ppp/scala/22-oo-to-fp-migration.md +688 -688
  212. package/lib/assets/docs/article/functional-desgin-ppp/scala/index.md +243 -243
  213. package/lib/assets/docs/article/getting-start-tdd/clojure/01-todo-list-and-first-test.md +166 -166
  214. package/lib/assets/docs/article/getting-start-tdd/clojure/02-fake-it-and-triangulation.md +162 -162
  215. package/lib/assets/docs/article/getting-start-tdd/clojure/03-obvious-implementation-and-refactoring.md +135 -135
  216. package/lib/assets/docs/article/getting-start-tdd/clojure/04-version-control-and-conventional-commits.md +88 -88
  217. package/lib/assets/docs/article/getting-start-tdd/clojure/05-package-management-and-static-analysis.md +299 -299
  218. package/lib/assets/docs/article/getting-start-tdd/clojure/06-task-runner-and-ci-cd.md +241 -241
  219. package/lib/assets/docs/article/getting-start-tdd/clojure/07-protocols-and-records.md +131 -131
  220. package/lib/assets/docs/article/getting-start-tdd/clojure/08-multimethods-and-design-patterns.md +130 -130
  221. package/lib/assets/docs/article/getting-start-tdd/clojure/09-namespaces-and-module-design.md +127 -127
  222. package/lib/assets/docs/article/getting-start-tdd/clojure/10-higher-order-functions-and-composition.md +114 -114
  223. package/lib/assets/docs/article/getting-start-tdd/clojure/11-persistent-data-and-pipeline.md +138 -138
  224. package/lib/assets/docs/article/getting-start-tdd/clojure/12-error-handling-and-spec.md +161 -161
  225. package/lib/assets/docs/article/getting-start-tdd/clojure/index.md +65 -65
  226. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter01.md +232 -232
  227. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter02.md +244 -244
  228. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter03.md +202 -202
  229. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter04.md +92 -92
  230. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter05.md +256 -256
  231. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter06.md +195 -195
  232. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter07.md +214 -214
  233. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter08.md +249 -249
  234. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter09.md +174 -174
  235. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter10.md +166 -166
  236. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter11.md +192 -192
  237. package/lib/assets/docs/article/getting-start-tdd/csharp/chapter12.md +211 -211
  238. package/lib/assets/docs/article/getting-start-tdd/csharp/index.md +83 -83
  239. package/lib/assets/docs/article/getting-start-tdd/elixir/01-todo-list-and-first-test.md +87 -87
  240. package/lib/assets/docs/article/getting-start-tdd/elixir/02-fake-it-and-triangulation.md +95 -95
  241. package/lib/assets/docs/article/getting-start-tdd/elixir/03-obvious-implementation-and-refactoring.md +109 -109
  242. package/lib/assets/docs/article/getting-start-tdd/elixir/04-version-control-and-conventional-commits.md +96 -96
  243. package/lib/assets/docs/article/getting-start-tdd/elixir/05-package-management-and-static-analysis.md +88 -88
  244. package/lib/assets/docs/article/getting-start-tdd/elixir/06-task-runner-and-ci-cd.md +71 -71
  245. package/lib/assets/docs/article/getting-start-tdd/elixir/07-structs-and-protocols.md +110 -110
  246. package/lib/assets/docs/article/getting-start-tdd/elixir/08-pattern-matching-and-guards.md +108 -108
  247. package/lib/assets/docs/article/getting-start-tdd/elixir/09-module-design-and-behaviours.md +104 -104
  248. package/lib/assets/docs/article/getting-start-tdd/elixir/10-higher-order-functions-and-pipeline.md +178 -178
  249. package/lib/assets/docs/article/getting-start-tdd/elixir/11-stream-and-lazy-evaluation.md +142 -142
  250. package/lib/assets/docs/article/getting-start-tdd/elixir/12-error-handling-and-with.md +145 -145
  251. package/lib/assets/docs/article/getting-start-tdd/elixir/index.md +35 -35
  252. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter01.md +202 -202
  253. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter02.md +246 -246
  254. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter03.md +218 -218
  255. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter04.md +179 -179
  256. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter05.md +267 -267
  257. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter06.md +190 -190
  258. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter07.md +161 -161
  259. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter08.md +175 -175
  260. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter09.md +222 -222
  261. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter10.md +189 -189
  262. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter11.md +212 -212
  263. package/lib/assets/docs/article/getting-start-tdd/fsharp/chapter12.md +215 -215
  264. package/lib/assets/docs/article/getting-start-tdd/fsharp/index.md +71 -71
  265. package/lib/assets/docs/article/getting-start-tdd/go/01-todo-list-and-first-test.md +213 -213
  266. package/lib/assets/docs/article/getting-start-tdd/go/02-fake-it-and-triangulation.md +302 -302
  267. package/lib/assets/docs/article/getting-start-tdd/go/03-obvious-implementation-and-refactoring.md +339 -339
  268. package/lib/assets/docs/article/getting-start-tdd/go/04-version-control-and-conventional-commits.md +112 -112
  269. package/lib/assets/docs/article/getting-start-tdd/go/05-package-management-and-static-analysis.md +272 -272
  270. package/lib/assets/docs/article/getting-start-tdd/go/06-task-runner-and-ci-cd.md +233 -233
  271. package/lib/assets/docs/article/getting-start-tdd/go/07-encapsulation-and-polymorphism.md +394 -394
  272. package/lib/assets/docs/article/getting-start-tdd/go/08-design-patterns.md +422 -422
  273. package/lib/assets/docs/article/getting-start-tdd/go/09-solid-principles-and-module-design.md +400 -400
  274. package/lib/assets/docs/article/getting-start-tdd/go/10-higher-order-functions-and-composition.md +226 -226
  275. package/lib/assets/docs/article/getting-start-tdd/go/11-immutable-data-and-pipeline.md +296 -296
  276. package/lib/assets/docs/article/getting-start-tdd/go/12-error-handling-and-type-safety.md +411 -411
  277. package/lib/assets/docs/article/getting-start-tdd/go/index.md +83 -83
  278. package/lib/assets/docs/article/getting-start-tdd/haskell/01-todo-list-and-first-test.md +279 -279
  279. package/lib/assets/docs/article/getting-start-tdd/haskell/02-fake-it-and-triangulation.md +337 -337
  280. package/lib/assets/docs/article/getting-start-tdd/haskell/03-obvious-implementation-and-refactoring.md +257 -257
  281. package/lib/assets/docs/article/getting-start-tdd/haskell/04-version-control-and-conventional-commits.md +182 -182
  282. package/lib/assets/docs/article/getting-start-tdd/haskell/05-package-management-and-static-analysis.md +313 -313
  283. package/lib/assets/docs/article/getting-start-tdd/haskell/06-task-runner-and-ci-cd.md +309 -309
  284. package/lib/assets/docs/article/getting-start-tdd/haskell/07-algebraic-data-types-and-type-classes.md +412 -412
  285. package/lib/assets/docs/article/getting-start-tdd/haskell/08-pattern-matching-and-guards.md +390 -390
  286. package/lib/assets/docs/article/getting-start-tdd/haskell/09-module-design-and-smart-constructors.md +461 -461
  287. package/lib/assets/docs/article/getting-start-tdd/haskell/10-higher-order-functions-and-currying.md +434 -434
  288. package/lib/assets/docs/article/getting-start-tdd/haskell/11-function-composition-and-point-free.md +392 -392
  289. package/lib/assets/docs/article/getting-start-tdd/haskell/12-monad-and-error-handling.md +631 -631
  290. package/lib/assets/docs/article/getting-start-tdd/haskell/index.md +49 -49
  291. package/lib/assets/docs/article/getting-start-tdd/index.md +93 -93
  292. package/lib/assets/docs/article/getting-start-tdd/integration/01-language-overview.md +375 -375
  293. package/lib/assets/docs/article/getting-start-tdd/integration/02-test-framework-comparison.md +349 -349
  294. package/lib/assets/docs/article/getting-start-tdd/integration/03-tdd-pattern-comparison.md +445 -445
  295. package/lib/assets/docs/article/getting-start-tdd/integration/04-type-system-comparison.md +409 -409
  296. package/lib/assets/docs/article/getting-start-tdd/integration/05-dev-environment-comparison.md +330 -330
  297. package/lib/assets/docs/article/getting-start-tdd/integration/06-learning-roadmap.md +290 -290
  298. package/lib/assets/docs/article/getting-start-tdd/integration/index.md +69 -69
  299. package/lib/assets/docs/article/getting-start-tdd/java/01-todo-list-and-first-test.md +234 -234
  300. package/lib/assets/docs/article/getting-start-tdd/java/02-fake-it-and-triangulation.md +261 -261
  301. package/lib/assets/docs/article/getting-start-tdd/java/03-obvious-implementation-and-refactoring.md +185 -185
  302. package/lib/assets/docs/article/getting-start-tdd/java/04-version-control-and-conventional-commits.md +115 -115
  303. package/lib/assets/docs/article/getting-start-tdd/java/05-package-management-and-static-analysis.md +382 -382
  304. package/lib/assets/docs/article/getting-start-tdd/java/06-task-runner-and-ci-cd.md +272 -272
  305. package/lib/assets/docs/article/getting-start-tdd/java/07-encapsulation-and-polymorphism.md +626 -626
  306. package/lib/assets/docs/article/getting-start-tdd/java/08-design-patterns.md +393 -393
  307. package/lib/assets/docs/article/getting-start-tdd/java/09-solid-principles-and-module-design.md +310 -310
  308. package/lib/assets/docs/article/getting-start-tdd/java/10-higher-order-functions-and-composition.md +188 -188
  309. package/lib/assets/docs/article/getting-start-tdd/java/11-immutable-data-and-pipeline.md +167 -167
  310. package/lib/assets/docs/article/getting-start-tdd/java/12-error-handling-and-type-safety.md +205 -205
  311. package/lib/assets/docs/article/getting-start-tdd/java/index.md +61 -61
  312. package/lib/assets/docs/article/getting-start-tdd/node/01-todo-list-and-first-test.md +244 -244
  313. package/lib/assets/docs/article/getting-start-tdd/node/02-fake-it-and-triangulation.md +262 -262
  314. package/lib/assets/docs/article/getting-start-tdd/node/03-obvious-implementation-and-refactoring.md +169 -169
  315. package/lib/assets/docs/article/getting-start-tdd/node/04-version-control-and-conventional-commits.md +112 -112
  316. package/lib/assets/docs/article/getting-start-tdd/node/05-package-management-and-static-analysis.md +314 -314
  317. package/lib/assets/docs/article/getting-start-tdd/node/06-task-runner-and-ci-cd.md +235 -235
  318. package/lib/assets/docs/article/getting-start-tdd/node/07-encapsulation-and-polymorphism.md +327 -327
  319. package/lib/assets/docs/article/getting-start-tdd/node/08-design-patterns.md +322 -322
  320. package/lib/assets/docs/article/getting-start-tdd/node/09-solid-principles-and-module-design.md +285 -285
  321. package/lib/assets/docs/article/getting-start-tdd/node/10-higher-order-functions-and-composition.md +199 -199
  322. package/lib/assets/docs/article/getting-start-tdd/node/11-immutable-data-and-pipeline.md +207 -207
  323. package/lib/assets/docs/article/getting-start-tdd/node/12-error-handling-and-type-safety.md +295 -295
  324. package/lib/assets/docs/article/getting-start-tdd/node/index.md +56 -56
  325. package/lib/assets/docs/article/getting-start-tdd/php/01-todo-list-and-first-test.md +259 -259
  326. package/lib/assets/docs/article/getting-start-tdd/php/02-fake-it-and-triangulation.md +200 -200
  327. package/lib/assets/docs/article/getting-start-tdd/php/03-obvious-implementation-and-refactoring.md +248 -248
  328. package/lib/assets/docs/article/getting-start-tdd/php/04-version-control-and-conventional-commits.md +141 -141
  329. package/lib/assets/docs/article/getting-start-tdd/php/05-package-management-and-static-analysis.md +410 -410
  330. package/lib/assets/docs/article/getting-start-tdd/php/06-task-runner-and-ci-cd.md +321 -321
  331. package/lib/assets/docs/article/getting-start-tdd/php/07-encapsulation-and-polymorphism.md +372 -372
  332. package/lib/assets/docs/article/getting-start-tdd/php/08-design-patterns.md +453 -453
  333. package/lib/assets/docs/article/getting-start-tdd/php/09-solid-principles-and-module-design.md +460 -460
  334. package/lib/assets/docs/article/getting-start-tdd/php/10-higher-order-functions-and-composition.md +182 -182
  335. package/lib/assets/docs/article/getting-start-tdd/php/11-immutable-data-and-pipeline.md +266 -266
  336. package/lib/assets/docs/article/getting-start-tdd/php/12-error-handling-and-type-safety.md +308 -308
  337. package/lib/assets/docs/article/getting-start-tdd/php/index.md +84 -84
  338. package/lib/assets/docs/article/getting-start-tdd/python/01-todo-list-and-first-test.md +201 -201
  339. package/lib/assets/docs/article/getting-start-tdd/python/02-fake-it-and-triangulation.md +247 -247
  340. package/lib/assets/docs/article/getting-start-tdd/python/03-obvious-implementation-and-refactoring.md +199 -199
  341. package/lib/assets/docs/article/getting-start-tdd/python/04-version-control-and-conventional-commits.md +87 -87
  342. package/lib/assets/docs/article/getting-start-tdd/python/05-package-management-and-static-analysis.md +274 -274
  343. package/lib/assets/docs/article/getting-start-tdd/python/06-task-runner-and-ci-cd.md +190 -190
  344. package/lib/assets/docs/article/getting-start-tdd/python/07-encapsulation-and-polymorphism.md +208 -208
  345. package/lib/assets/docs/article/getting-start-tdd/python/08-design-patterns.md +172 -172
  346. package/lib/assets/docs/article/getting-start-tdd/python/09-solid-principles-and-module-design.md +130 -130
  347. package/lib/assets/docs/article/getting-start-tdd/python/10-higher-order-functions-and-composition.md +122 -122
  348. package/lib/assets/docs/article/getting-start-tdd/python/11-immutable-data-and-pipeline.md +116 -116
  349. package/lib/assets/docs/article/getting-start-tdd/python/12-error-handling-and-type-safety.md +126 -126
  350. package/lib/assets/docs/article/getting-start-tdd/python/index.md +55 -55
  351. package/lib/assets/docs/article/getting-start-tdd/ruby/01-todo-list-and-first-test.md +231 -231
  352. package/lib/assets/docs/article/getting-start-tdd/ruby/02-fake-it-and-triangulation.md +238 -238
  353. package/lib/assets/docs/article/getting-start-tdd/ruby/03-obvious-implementation-and-refactoring.md +228 -228
  354. package/lib/assets/docs/article/getting-start-tdd/ruby/04-version-control-and-conventional-commits.md +112 -112
  355. package/lib/assets/docs/article/getting-start-tdd/ruby/05-package-management-and-static-analysis.md +287 -287
  356. package/lib/assets/docs/article/getting-start-tdd/ruby/06-task-runner-and-ci-cd.md +248 -248
  357. package/lib/assets/docs/article/getting-start-tdd/ruby/07-encapsulation-and-polymorphism.md +279 -279
  358. package/lib/assets/docs/article/getting-start-tdd/ruby/08-design-patterns.md +329 -329
  359. package/lib/assets/docs/article/getting-start-tdd/ruby/09-solid-principles-and-module-design.md +196 -196
  360. package/lib/assets/docs/article/getting-start-tdd/ruby/10-higher-order-functions-and-composition.md +175 -175
  361. package/lib/assets/docs/article/getting-start-tdd/ruby/11-immutable-data-and-pipeline.md +237 -237
  362. package/lib/assets/docs/article/getting-start-tdd/ruby/12-error-handling-and-type-safety.md +398 -398
  363. package/lib/assets/docs/article/getting-start-tdd/ruby/index.md +83 -83
  364. package/lib/assets/docs/article/getting-start-tdd/rust/01-todo-list-and-first-test.md +211 -211
  365. package/lib/assets/docs/article/getting-start-tdd/rust/02-fake-it-and-triangulation.md +264 -264
  366. package/lib/assets/docs/article/getting-start-tdd/rust/03-obvious-implementation-and-refactoring.md +233 -233
  367. package/lib/assets/docs/article/getting-start-tdd/rust/04-version-control-and-conventional-commits.md +92 -92
  368. package/lib/assets/docs/article/getting-start-tdd/rust/05-package-management-and-static-analysis.md +212 -212
  369. package/lib/assets/docs/article/getting-start-tdd/rust/06-task-runner-and-ci-cd.md +164 -164
  370. package/lib/assets/docs/article/getting-start-tdd/rust/07-encapsulation-and-polymorphism.md +142 -142
  371. package/lib/assets/docs/article/getting-start-tdd/rust/08-design-patterns.md +145 -145
  372. package/lib/assets/docs/article/getting-start-tdd/rust/09-solid-principles-and-module-design.md +110 -110
  373. package/lib/assets/docs/article/getting-start-tdd/rust/10-higher-order-functions-and-composition.md +94 -94
  374. package/lib/assets/docs/article/getting-start-tdd/rust/11-immutable-data-and-pipeline.md +105 -105
  375. package/lib/assets/docs/article/getting-start-tdd/rust/12-error-handling-and-type-safety.md +112 -112
  376. package/lib/assets/docs/article/getting-start-tdd/rust/index.md +83 -83
  377. package/lib/assets/docs/article/getting-start-tdd/scala/01-todo-list-and-first-test.md +111 -111
  378. package/lib/assets/docs/article/getting-start-tdd/scala/02-fake-it-and-triangulation.md +107 -107
  379. package/lib/assets/docs/article/getting-start-tdd/scala/03-obvious-implementation-and-refactoring.md +99 -99
  380. package/lib/assets/docs/article/getting-start-tdd/scala/04-version-control-and-conventional-commits.md +123 -123
  381. package/lib/assets/docs/article/getting-start-tdd/scala/05-package-management-and-static-analysis.md +196 -196
  382. package/lib/assets/docs/article/getting-start-tdd/scala/06-task-runner-and-ci-cd.md +186 -186
  383. package/lib/assets/docs/article/getting-start-tdd/scala/07-case-classes-and-traits.md +139 -139
  384. package/lib/assets/docs/article/getting-start-tdd/scala/08-pattern-matching-and-sealed-traits.md +106 -106
  385. package/lib/assets/docs/article/getting-start-tdd/scala/09-packages-and-module-design.md +75 -75
  386. package/lib/assets/docs/article/getting-start-tdd/scala/10-higher-order-functions-and-composition.md +104 -104
  387. package/lib/assets/docs/article/getting-start-tdd/scala/11-collections-and-lazy-evaluation.md +94 -94
  388. package/lib/assets/docs/article/getting-start-tdd/scala/12-error-handling-and-type-safety.md +92 -92
  389. package/lib/assets/docs/article/getting-start-tdd/scala/index.md +65 -65
  390. package/lib/assets/docs/article/grokking-concurrency/all/index.md +404 -404
  391. package/lib/assets/docs/article/grokking-concurrency/all/part-1-ch02-sequential.md +554 -554
  392. package/lib/assets/docs/article/grokking-concurrency/all/part-2-ch04-05-threads.md +469 -469
  393. package/lib/assets/docs/article/grokking-concurrency/all/part-3-ch06-multitasking.md +520 -520
  394. package/lib/assets/docs/article/grokking-concurrency/all/part-4-ch07-parallel-patterns.md +420 -420
  395. package/lib/assets/docs/article/grokking-concurrency/all/part-5-ch08-09-synchronization.md +510 -510
  396. package/lib/assets/docs/article/grokking-concurrency/all/part-6-ch10-11-nonblocking-io.md +435 -435
  397. package/lib/assets/docs/article/grokking-concurrency/all/part-7-ch12-async.md +465 -465
  398. package/lib/assets/docs/article/grokking-concurrency/all/part-8-ch13-mapreduce.md +377 -377
  399. package/lib/assets/docs/article/grokking-concurrency/clojure/index.md +116 -116
  400. package/lib/assets/docs/article/grokking-concurrency/clojure/part-1.md +108 -108
  401. package/lib/assets/docs/article/grokking-concurrency/clojure/part-2.md +101 -101
  402. package/lib/assets/docs/article/grokking-concurrency/clojure/part-3.md +122 -122
  403. package/lib/assets/docs/article/grokking-concurrency/clojure/part-4.md +123 -123
  404. package/lib/assets/docs/article/grokking-concurrency/clojure/part-5.md +118 -118
  405. package/lib/assets/docs/article/grokking-concurrency/clojure/part-6.md +89 -89
  406. package/lib/assets/docs/article/grokking-concurrency/clojure/part-7.md +100 -100
  407. package/lib/assets/docs/article/grokking-concurrency/clojure/part-8.md +120 -120
  408. package/lib/assets/docs/article/grokking-concurrency/csharp/index.md +101 -101
  409. package/lib/assets/docs/article/grokking-concurrency/csharp/part-1.md +97 -97
  410. package/lib/assets/docs/article/grokking-concurrency/csharp/part-2.md +123 -123
  411. package/lib/assets/docs/article/grokking-concurrency/csharp/part-3.md +101 -101
  412. package/lib/assets/docs/article/grokking-concurrency/csharp/part-4.md +112 -112
  413. package/lib/assets/docs/article/grokking-concurrency/csharp/part-5.md +99 -99
  414. package/lib/assets/docs/article/grokking-concurrency/csharp/part-6.md +61 -61
  415. package/lib/assets/docs/article/grokking-concurrency/csharp/part-7.md +84 -84
  416. package/lib/assets/docs/article/grokking-concurrency/csharp/part-8.md +92 -92
  417. package/lib/assets/docs/article/grokking-concurrency/fsharp/index.md +65 -65
  418. package/lib/assets/docs/article/grokking-concurrency/fsharp/part-1.md +80 -80
  419. package/lib/assets/docs/article/grokking-concurrency/fsharp/part-2.md +103 -103
  420. package/lib/assets/docs/article/grokking-concurrency/fsharp/part-3.md +94 -94
  421. package/lib/assets/docs/article/grokking-concurrency/fsharp/part-4.md +110 -110
  422. package/lib/assets/docs/article/grokking-concurrency/fsharp/part-5.md +104 -104
  423. package/lib/assets/docs/article/grokking-concurrency/fsharp/part-6.md +93 -93
  424. package/lib/assets/docs/article/grokking-concurrency/fsharp/part-7.md +121 -121
  425. package/lib/assets/docs/article/grokking-concurrency/fsharp/part-8.md +107 -107
  426. package/lib/assets/docs/article/grokking-concurrency/haskell/index.md +248 -248
  427. package/lib/assets/docs/article/grokking-concurrency/haskell/part-1.md +96 -96
  428. package/lib/assets/docs/article/grokking-concurrency/haskell/part-2.md +96 -96
  429. package/lib/assets/docs/article/grokking-concurrency/haskell/part-3.md +91 -91
  430. package/lib/assets/docs/article/grokking-concurrency/haskell/part-4.md +106 -106
  431. package/lib/assets/docs/article/grokking-concurrency/haskell/part-5.md +99 -99
  432. package/lib/assets/docs/article/grokking-concurrency/haskell/part-6.md +95 -95
  433. package/lib/assets/docs/article/grokking-concurrency/haskell/part-7.md +111 -111
  434. package/lib/assets/docs/article/grokking-concurrency/haskell/part-8.md +118 -118
  435. package/lib/assets/docs/article/grokking-concurrency/index.md +66 -66
  436. package/lib/assets/docs/article/grokking-concurrency/java/index.md +102 -102
  437. package/lib/assets/docs/article/grokking-concurrency/java/part-1.md +308 -308
  438. package/lib/assets/docs/article/grokking-concurrency/java/part-2.md +334 -334
  439. package/lib/assets/docs/article/grokking-concurrency/java/part-3.md +221 -221
  440. package/lib/assets/docs/article/grokking-concurrency/java/part-4.md +213 -213
  441. package/lib/assets/docs/article/grokking-concurrency/java/part-5.md +112 -112
  442. package/lib/assets/docs/article/grokking-concurrency/java/part-6.md +69 -69
  443. package/lib/assets/docs/article/grokking-concurrency/java/part-7.md +101 -101
  444. package/lib/assets/docs/article/grokking-concurrency/java/part-8.md +101 -101
  445. package/lib/assets/docs/article/grokking-concurrency/python/index.md +313 -313
  446. package/lib/assets/docs/article/grokking-concurrency/python/part-1.md +239 -239
  447. package/lib/assets/docs/article/grokking-concurrency/python/part-2.md +418 -418
  448. package/lib/assets/docs/article/grokking-concurrency/python/part-3.md +227 -227
  449. package/lib/assets/docs/article/grokking-concurrency/python/part-4.md +299 -299
  450. package/lib/assets/docs/article/grokking-concurrency/python/part-5.md +315 -315
  451. package/lib/assets/docs/article/grokking-concurrency/python/part-6.md +297 -297
  452. package/lib/assets/docs/article/grokking-concurrency/python/part-7.md +314 -314
  453. package/lib/assets/docs/article/grokking-concurrency/python/part-8.md +360 -360
  454. package/lib/assets/docs/article/grokking-concurrency/rust/index.md +270 -270
  455. package/lib/assets/docs/article/grokking-concurrency/rust/part-1.md +108 -108
  456. package/lib/assets/docs/article/grokking-concurrency/rust/part-2.md +120 -120
  457. package/lib/assets/docs/article/grokking-concurrency/rust/part-3.md +126 -126
  458. package/lib/assets/docs/article/grokking-concurrency/rust/part-4.md +175 -175
  459. package/lib/assets/docs/article/grokking-concurrency/rust/part-5.md +158 -158
  460. package/lib/assets/docs/article/grokking-concurrency/rust/part-6.md +94 -94
  461. package/lib/assets/docs/article/grokking-concurrency/rust/part-7.md +133 -133
  462. package/lib/assets/docs/article/grokking-concurrency/rust/part-8.md +155 -155
  463. package/lib/assets/docs/article/grokking-concurrency/scala/index.md +69 -69
  464. package/lib/assets/docs/article/grokking-concurrency/scala/part-1.md +78 -78
  465. package/lib/assets/docs/article/grokking-concurrency/scala/part-2.md +112 -112
  466. package/lib/assets/docs/article/grokking-concurrency/scala/part-3.md +93 -93
  467. package/lib/assets/docs/article/grokking-concurrency/scala/part-4.md +110 -110
  468. package/lib/assets/docs/article/grokking-concurrency/scala/part-5.md +119 -119
  469. package/lib/assets/docs/article/grokking-concurrency/scala/part-6.md +83 -83
  470. package/lib/assets/docs/article/grokking-concurrency/scala/part-7.md +131 -131
  471. package/lib/assets/docs/article/grokking-concurrency/scala/part-8.md +129 -129
  472. package/lib/assets/docs/article/grokkingfp/all/index.md +368 -368
  473. package/lib/assets/docs/article/grokkingfp/all/part-1-ch01-fp-introduction.md +530 -530
  474. package/lib/assets/docs/article/grokkingfp/all/part-1-ch02-pure-functions.md +923 -923
  475. package/lib/assets/docs/article/grokkingfp/all/part-2-ch03-immutable-data.md +1128 -1128
  476. package/lib/assets/docs/article/grokkingfp/all/part-2-ch04-higher-order-functions.md +1104 -1104
  477. package/lib/assets/docs/article/grokkingfp/all/part-2-ch05-flatmap.md +1026 -1026
  478. package/lib/assets/docs/article/grokkingfp/all/part-3-ch06-option.md +785 -785
  479. package/lib/assets/docs/article/grokkingfp/all/part-3-ch07-either-adt.md +871 -871
  480. package/lib/assets/docs/article/grokkingfp/all/part-4-ch08-io-monad.md +972 -972
  481. package/lib/assets/docs/article/grokkingfp/all/part-4-ch09-streams.md +926 -926
  482. package/lib/assets/docs/article/grokkingfp/all/part-5-ch10-concurrency.md +870 -870
  483. package/lib/assets/docs/article/grokkingfp/all/part-6-ch11-application.md +715 -715
  484. package/lib/assets/docs/article/grokkingfp/all/part-6-ch12-testing.md +626 -626
  485. package/lib/assets/docs/article/grokkingfp/all/writing-plan.md +712 -712
  486. package/lib/assets/docs/article/grokkingfp/clojure/index.md +276 -276
  487. package/lib/assets/docs/article/grokkingfp/clojure/part-1.md +667 -667
  488. package/lib/assets/docs/article/grokkingfp/clojure/part-2.md +643 -643
  489. package/lib/assets/docs/article/grokkingfp/clojure/part-3.md +620 -620
  490. package/lib/assets/docs/article/grokkingfp/clojure/part-4.md +697 -697
  491. package/lib/assets/docs/article/grokkingfp/clojure/part-5.md +751 -751
  492. package/lib/assets/docs/article/grokkingfp/clojure/part-6.md +721 -721
  493. package/lib/assets/docs/article/grokkingfp/csharp/index.md +246 -246
  494. package/lib/assets/docs/article/grokkingfp/csharp/part-1.md +811 -811
  495. package/lib/assets/docs/article/grokkingfp/csharp/part-2.md +971 -971
  496. package/lib/assets/docs/article/grokkingfp/csharp/part-3.md +981 -981
  497. package/lib/assets/docs/article/grokkingfp/csharp/part-4.md +949 -949
  498. package/lib/assets/docs/article/grokkingfp/csharp/part-5.md +947 -947
  499. package/lib/assets/docs/article/grokkingfp/csharp/part-6.md +739 -739
  500. package/lib/assets/docs/article/grokkingfp/elixir/index.md +203 -203
  501. package/lib/assets/docs/article/grokkingfp/elixir/part-1.md +712 -712
  502. package/lib/assets/docs/article/grokkingfp/elixir/part-2.md +838 -838
  503. package/lib/assets/docs/article/grokkingfp/elixir/part-3.md +985 -985
  504. package/lib/assets/docs/article/grokkingfp/elixir/part-4.md +974 -974
  505. package/lib/assets/docs/article/grokkingfp/elixir/part-5.md +1286 -1286
  506. package/lib/assets/docs/article/grokkingfp/elixir/part-6.md +1049 -1049
  507. package/lib/assets/docs/article/grokkingfp/fsharp/index.md +210 -210
  508. package/lib/assets/docs/article/grokkingfp/fsharp/part-1.md +714 -714
  509. package/lib/assets/docs/article/grokkingfp/fsharp/part-2.md +961 -961
  510. package/lib/assets/docs/article/grokkingfp/fsharp/part-3.md +972 -972
  511. package/lib/assets/docs/article/grokkingfp/fsharp/part-4.md +832 -832
  512. package/lib/assets/docs/article/grokkingfp/fsharp/part-5.md +911 -911
  513. package/lib/assets/docs/article/grokkingfp/fsharp/part-6.md +922 -922
  514. package/lib/assets/docs/article/grokkingfp/haskell/index.md +234 -234
  515. package/lib/assets/docs/article/grokkingfp/haskell/part-1.md +591 -591
  516. package/lib/assets/docs/article/grokkingfp/haskell/part-2.md +866 -866
  517. package/lib/assets/docs/article/grokkingfp/haskell/part-3.md +915 -915
  518. package/lib/assets/docs/article/grokkingfp/haskell/part-4.md +878 -878
  519. package/lib/assets/docs/article/grokkingfp/haskell/part-5.md +845 -845
  520. package/lib/assets/docs/article/grokkingfp/haskell/part-6.md +844 -844
  521. package/lib/assets/docs/article/grokkingfp/index.md +143 -143
  522. package/lib/assets/docs/article/grokkingfp/java/index.md +211 -211
  523. package/lib/assets/docs/article/grokkingfp/java/part-1.md +648 -648
  524. package/lib/assets/docs/article/grokkingfp/java/part-2.md +675 -675
  525. package/lib/assets/docs/article/grokkingfp/java/part-3.md +672 -672
  526. package/lib/assets/docs/article/grokkingfp/java/part-4.md +771 -771
  527. package/lib/assets/docs/article/grokkingfp/java/part-5.md +959 -959
  528. package/lib/assets/docs/article/grokkingfp/java/part-6.md +1328 -1328
  529. package/lib/assets/docs/article/grokkingfp/python/index.md +258 -258
  530. package/lib/assets/docs/article/grokkingfp/python/part-1.md +443 -443
  531. package/lib/assets/docs/article/grokkingfp/python/part-2.md +958 -958
  532. package/lib/assets/docs/article/grokkingfp/python/part-3.md +1004 -1004
  533. package/lib/assets/docs/article/grokkingfp/python/part-4.md +765 -765
  534. package/lib/assets/docs/article/grokkingfp/python/part-5.md +747 -747
  535. package/lib/assets/docs/article/grokkingfp/python/part-6.md +861 -861
  536. package/lib/assets/docs/article/grokkingfp/ruby/index.md +330 -330
  537. package/lib/assets/docs/article/grokkingfp/ruby/part-1.md +755 -755
  538. package/lib/assets/docs/article/grokkingfp/ruby/part-2.md +938 -938
  539. package/lib/assets/docs/article/grokkingfp/ruby/part-3.md +946 -946
  540. package/lib/assets/docs/article/grokkingfp/ruby/part-4.md +921 -921
  541. package/lib/assets/docs/article/grokkingfp/ruby/part-5.md +908 -908
  542. package/lib/assets/docs/article/grokkingfp/ruby/part-6.md +1412 -1412
  543. package/lib/assets/docs/article/grokkingfp/rust/index.md +242 -242
  544. package/lib/assets/docs/article/grokkingfp/rust/part-1.md +634 -634
  545. package/lib/assets/docs/article/grokkingfp/rust/part-2.md +1060 -1060
  546. package/lib/assets/docs/article/grokkingfp/rust/part-3.md +994 -994
  547. package/lib/assets/docs/article/grokkingfp/rust/part-4.md +573 -573
  548. package/lib/assets/docs/article/grokkingfp/rust/part-5.md +705 -705
  549. package/lib/assets/docs/article/grokkingfp/rust/part-6.md +508 -508
  550. package/lib/assets/docs/article/grokkingfp/scala/index.md +171 -171
  551. package/lib/assets/docs/article/grokkingfp/scala/part-1.md +543 -543
  552. package/lib/assets/docs/article/grokkingfp/scala/part-2.md +946 -946
  553. package/lib/assets/docs/article/grokkingfp/scala/part-3.md +919 -919
  554. package/lib/assets/docs/article/grokkingfp/scala/part-4.md +742 -742
  555. package/lib/assets/docs/article/grokkingfp/scala/part-5.md +722 -722
  556. package/lib/assets/docs/article/grokkingfp/scala/part-6.md +867 -867
  557. package/lib/assets/docs/article/grokkingfp/typescript/index.md +273 -273
  558. package/lib/assets/docs/article/grokkingfp/typescript/part-1.md +561 -561
  559. package/lib/assets/docs/article/grokkingfp/typescript/part-2.md +1129 -1129
  560. package/lib/assets/docs/article/grokkingfp/typescript/part-3.md +842 -842
  561. package/lib/assets/docs/article/grokkingfp/typescript/part-4.md +1087 -1087
  562. package/lib/assets/docs/article/grokkingfp/typescript/part-5.md +717 -717
  563. package/lib/assets/docs/article/grokkingfp/typescript/part-6.md +982 -982
  564. package/lib/assets/docs/article/practical-database-design/index.md +121 -121
  565. package/lib/assets/docs/article/practical-database-design/part1/chapter01.md +288 -288
  566. package/lib/assets/docs/article/practical-database-design/part1/chapter02.md +518 -518
  567. package/lib/assets/docs/article/practical-database-design/part1/chapter03.md +557 -557
  568. package/lib/assets/docs/article/practical-database-design/part2/chapter04.md +924 -924
  569. package/lib/assets/docs/article/practical-database-design/part2/chapter05.md +1627 -1627
  570. package/lib/assets/docs/article/practical-database-design/part2/chapter06.md +2716 -2716
  571. package/lib/assets/docs/article/practical-database-design/part2/chapter07.md +2082 -2082
  572. package/lib/assets/docs/article/practical-database-design/part2/chapter08.md +2105 -2105
  573. package/lib/assets/docs/article/practical-database-design/part2/chapter09.md +2031 -2031
  574. package/lib/assets/docs/article/practical-database-design/part2/chapter10.md +1387 -1387
  575. package/lib/assets/docs/article/practical-database-design/part2/chapter11.md +1677 -1677
  576. package/lib/assets/docs/article/practical-database-design/part2/chapter12.md +1417 -1417
  577. package/lib/assets/docs/article/practical-database-design/part2/chapter13.md +1434 -1434
  578. package/lib/assets/docs/article/practical-database-design/part3/chapter14.md +667 -667
  579. package/lib/assets/docs/article/practical-database-design/part3/chapter15.md +1625 -1625
  580. package/lib/assets/docs/article/practical-database-design/part3/chapter16.md +1915 -1915
  581. package/lib/assets/docs/article/practical-database-design/part3/chapter17.md +1708 -1708
  582. package/lib/assets/docs/article/practical-database-design/part3/chapter18.md +2095 -2095
  583. package/lib/assets/docs/article/practical-database-design/part3/chapter19.md +1123 -1123
  584. package/lib/assets/docs/article/practical-database-design/part3/chapter20.md +1031 -1031
  585. package/lib/assets/docs/article/practical-database-design/part3/chapter21.md +1382 -1382
  586. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter14-orm.md +991 -991
  587. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter15-orm.md +1300 -1300
  588. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter16-orm.md +1166 -1166
  589. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter17-orm.md +1584 -1584
  590. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter18-orm.md +1183 -1183
  591. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter19-orm.md +1016 -1016
  592. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter20-orm.md +1753 -1753
  593. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter21-orm.md +1447 -1447
  594. package/lib/assets/docs/article/practical-database-design/part3-orm/chapter22-orm.md +1878 -1878
  595. package/lib/assets/docs/article/practical-database-design/part4/chapter22.md +965 -965
  596. package/lib/assets/docs/article/practical-database-design/part4/chapter23.md +2069 -2069
  597. package/lib/assets/docs/article/practical-database-design/part4/chapter24.md +2439 -2439
  598. package/lib/assets/docs/article/practical-database-design/part4/chapter25.md +3661 -3661
  599. package/lib/assets/docs/article/practical-database-design/part4/chapter26.md +2916 -2916
  600. package/lib/assets/docs/article/practical-database-design/part4/chapter27.md +3105 -3105
  601. package/lib/assets/docs/article/practical-database-design/part4/chapter28.md +2697 -2697
  602. package/lib/assets/docs/article/practical-database-design/part4/chapter29.md +2544 -2544
  603. package/lib/assets/docs/article/practical-database-design/part4/chapter30.md +2180 -2180
  604. package/lib/assets/docs/article/practical-database-design/part4/chapter31.md +1192 -1192
  605. package/lib/assets/docs/article/practical-database-design/part4/chapter32.md +2101 -2101
  606. package/lib/assets/docs/article/practical-database-design/part5/chapter33.md +1032 -1032
  607. package/lib/assets/docs/article/practical-database-design/part5/chapter34.md +1609 -1609
  608. package/lib/assets/docs/article/practical-database-design/part5/chapter35.md +1453 -1453
  609. package/lib/assets/docs/article/practical-database-design/part5/chapter36.md +1292 -1292
  610. package/lib/assets/docs/article/practical-database-design/part5/chapter37.md +1470 -1470
  611. package/lib/assets/docs/article/practical-database-design/part5/chapter38.md +1698 -1698
  612. package/lib/assets/docs/article/practical-database-design/part5/chapter39.md +2334 -2334
  613. package/lib/assets/docs/article/practical-database-design/study/study2-1.md +1693 -1693
  614. package/lib/assets/docs/article/practical-database-design/study/study2-2.md +1347 -1347
  615. package/lib/assets/docs/article/practical-database-design/study/study2-3.md +2044 -2044
  616. package/lib/assets/docs/article/practical-database-design/study/study2-4.md +2229 -2229
  617. package/lib/assets/docs/article/practical-database-design/study/study2-5.md +2418 -2418
  618. package/lib/assets/docs/article/practical-database-design/study/study3-1.md +2205 -2205
  619. package/lib/assets/docs/article/practical-database-design/study/study3-2.md +2221 -2221
  620. package/lib/assets/docs/article/practical-database-design/study/study3-3.md +2253 -2253
  621. package/lib/assets/docs/article/practical-database-design/study/study3-4.md +2106 -2106
  622. package/lib/assets/docs/article/practical-database-design/study/study3-5.md +2507 -2507
  623. package/lib/assets/docs/article/practical-database-design/study/study4-1.md +2587 -2587
  624. package/lib/assets/docs/article/practical-database-design/study/study4-2.md +2075 -2075
  625. package/lib/assets/docs/article/practical-database-design/study/study4-3.md +1805 -1805
  626. package/lib/assets/docs/article/practical-database-design/study/study4-4.md +1895 -1895
  627. package/lib/assets/docs/article/practical-database-design/study/study4-5.md +2878 -2878
  628. package/lib/assets/docs/assets/css/extra.css +29 -29
  629. package/lib/assets/docs/assets/js/extra.js +44 -44
  630. package/lib/assets/docs/development/index.md +39 -39
  631. package/lib/assets/docs/operation/index.md +11 -11
  632. package/lib/assets/docs/reference/CodexCLIMCP/343/202/242/343/203/227/343/203/252/343/202/261/343/203/274/343/202/267/343/203/247/343/203/263/351/226/213/347/231/272/343/203/225/343/203/255/343/203/274.md +532 -532
  633. package/lib/assets/docs/reference/CodexCLIMCP/343/202/265/343/203/274/343/203/220/343/203/274/350/250/255/345/256/232/346/211/213/351/240/206.md +341 -341
  634. package/lib/assets/docs/reference/Java/343/202/242/343/203/227/343/203/252/343/202/261/343/203/274/343/202/267/343/203/247/343/203/263/347/222/260/345/242/203/346/247/213/347/257/211/343/202/254/343/202/244/343/203/211.md +581 -580
  635. package/lib/assets/docs/reference/SonarQube/343/203/255/343/203/274/343/202/253/343/203/253/347/222/260/345/242/203/343/202/273/343/203/203/343/203/210/343/202/242/343/203/203/343/203/227/346/211/213/351/240/206/346/233/270.md +642 -642
  636. package/lib/assets/docs/reference/TypeScript/343/202/242/343/203/227/343/203/252/343/202/261/343/203/274/343/202/267/343/203/247/343/203/263/347/222/260/345/242/203/346/247/213/347/257/211/343/202/254/343/202/244/343/203/211.md +465 -465
  637. package/lib/assets/docs/reference/UI/350/250/255/350/250/210/343/202/254/343/202/244/343/203/211.md +450 -450
  638. package/lib/assets/docs/reference/images/Ansoff.drawio.svg +3 -3
  639. package/lib/assets/docs/reference/images/BrandBasicStrategy.drawio.svg +3 -3
  640. package/lib/assets/docs/reference/images/BrandCategorization.drawio.svg +3 -3
  641. package/lib/assets/docs/reference/images/BrandRecurutementStrategy.drawio.svg +3 -3
  642. package/lib/assets/docs/reference/images/BrandValue.drawio.svg +3 -3
  643. package/lib/assets/docs/reference/images/BusinessActivitiy.svg +3 -3
  644. package/lib/assets/docs/reference/images/HRM.drawio.svg +3 -3
  645. package/lib/assets/docs/reference/images/MarketingStructure.drawio.svg +3 -3
  646. package/lib/assets/docs/reference/images/OrganizationElemnts.svg +3 -3
  647. package/lib/assets/docs/reference/images/PPM.drawio.svg +3 -3
  648. package/lib/assets/docs/reference/images/PositioningMap.drawio.svg +3 -3
  649. package/lib/assets/docs/reference/images/ProductLayer.drawio.svg +3 -3
  650. package/lib/assets/docs/reference/images/ProductMix.drawio.svg +3 -3
  651. package/lib/assets/docs/reference/images/SWOT.drawio.svg +3 -3
  652. package/lib/assets/docs/reference/images/TargetMarket.drawio.svg +3 -3
  653. package/lib/assets/docs/reference/images/ThreeGenericStrategies.drawio.svg +3 -3
  654. package/lib/assets/docs/reference/images/VRIO.drawio.svg +3 -3
  655. package/lib/assets/docs/reference/images/ValueChain.drawio.svg +3 -3
  656. package/lib/assets/docs/reference/index.md +52 -52
  657. package/lib/assets/docs/reference//343/202/210/343/201/204/343/202/275/343/203/225/343/203/210/343/202/246/343/202/247/343/202/242/343/201/250/343/201/257.md +250 -242
  658. package/lib/assets/docs/reference//343/202/242/343/203/274/343/202/255/343/203/206/343/202/257/343/203/201/343/203/243/350/250/255/350/250/210/343/202/254/343/202/244/343/203/211.md +2216 -2216
  659. package/lib/assets/docs/reference//343/202/244/343/203/263/343/203/225/343/203/251/350/250/255/350/250/210/343/202/254/343/202/244/343/203/211.md +1878 -1878
  660. package/lib/assets/docs/reference//343/202/250/343/202/257/343/202/271/343/203/210/343/203/252/343/203/274/343/203/240/343/203/227/343/203/255/343/202/260/343/203/251/343/203/237/343/203/263/343/202/260.md +550 -544
  661. package/lib/assets/docs/reference//343/202/263/343/203/274/343/203/207/343/202/243/343/203/263/343/202/260/343/201/250/343/203/206/343/202/271/343/203/210/343/202/254/343/202/244/343/203/211.md +705 -705
  662. package/lib/assets/docs/reference//343/203/206/343/202/271/343/203/210/346/210/246/347/225/245/343/202/254/343/202/244/343/203/211.md +1313 -1313
  663. package/lib/assets/docs/reference//343/203/207/343/203/274/343/202/277/343/203/242/343/203/207/343/203/253/350/250/255/350/250/210/343/202/254/343/202/244/343/203/211.md +311 -311
  664. package/lib/assets/docs/reference//343/203/211/343/203/241/343/202/244/343/203/263/343/203/242/343/203/207/343/203/253/350/250/255/350/250/210/343/202/254/343/202/244/343/203/211.md +599 -599
  665. package/lib/assets/docs/reference//343/203/223/343/202/270/343/203/215/343/202/271/343/202/242/343/203/274/343/202/255/343/203/206/343/202/257/343/203/201/343/203/243/345/210/206/346/236/220/343/202/254/343/202/244/343/203/211.md +528 -528
  666. package/lib/assets/docs/reference//343/203/246/343/203/274/343/202/271/343/202/261/343/203/274/343/202/271/344/275/234/346/210/220/343/202/254/343/202/244/343/203/211.md +689 -682
  667. package/lib/assets/docs/reference//343/203/252/343/203/252/343/203/274/343/202/271/343/202/254/343/202/244/343/203/211.md +461 -461
  668. package/lib/assets/docs/reference//343/203/252/343/203/252/343/203/274/343/202/271/343/203/273/343/202/244/343/203/206/343/203/254/343/203/274/343/202/267/343/203/247/343/203/263/350/250/210/347/224/273/343/202/254/343/202/244/343/203/211.md +580 -560
  669. package/lib/assets/docs/reference//343/203/255/343/202/270/343/202/253/343/203/253/343/202/267/343/203/263/343/202/255/343/203/263/343/202/260.md +1367 -1367
  670. package/lib/assets/docs/reference//344/274/201/346/245/255/347/265/214/345/226/266/350/253/226.md +2637 -2636
  671. package/lib/assets/docs/reference//347/222/260/345/242/203/345/244/211/346/225/260/347/256/241/347/220/206/343/202/254/343/202/244/343/203/211.md +665 -663
  672. package/lib/assets/docs/reference//350/246/201/344/273/266/345/256/232/347/276/251/343/202/254/343/202/244/343/203/211.md +1248 -1248
  673. package/lib/assets/docs/reference//350/250/200/350/252/236/345/210/245/351/226/213/347/231/272/343/202/254/343/202/244/343/203/211.md +28 -0
  674. package/lib/assets/docs/reference//351/201/213/345/226/266/347/256/241/347/220/206.md +1482 -1482
  675. package/lib/assets/docs/reference//351/201/213/347/224/250/343/202/271/343/202/257/343/203/252/343/203/227/343/203/210/344/275/234/346/210/220/343/202/254/343/202/244/343/203/211.md +421 -421
  676. package/lib/assets/docs/reference//351/201/213/347/224/250/350/246/201/344/273/266/345/256/232/347/276/251/343/202/254/343/202/244/343/203/211.md +392 -392
  677. package/lib/assets/docs/reference//351/226/213/347/231/272/343/202/254/343/202/244/343/203/211.md +299 -299
  678. package/lib/assets/docs/reference//351/235/236/346/251/237/350/203/275/350/246/201/344/273/266/345/256/232/347/276/251/343/202/254/343/202/244/343/203/211.md +1236 -1236
  679. package/lib/assets/docs/review/index.md +5 -5
  680. package/lib/assets/docs/strategy/index.md +1 -1
  681. package/lib/assets/docs/template/ADR.md +30 -30
  682. package/lib/assets/docs/template/AWS/343/202/271/343/203/206/343/203/274/343/202/270/343/203/263/343/202/260/347/222/260/345/242/203/343/202/273/343/203/203/343/203/210/343/202/242/343/203/203/343/203/227/346/211/213/351/240/206/346/233/270.md +1366 -1366
  683. package/lib/assets/docs/template/AWS/343/203/227/343/203/255/343/203/200/343/202/257/343/202/267/343/203/247/343/203/263/347/222/260/345/242/203/343/202/273/343/203/203/343/203/210/343/202/242/343/203/203/343/203/227/346/211/213/351/240/206/346/233/270.md +634 -634
  684. package/lib/assets/docs/template/README.md +50 -50
  685. package/lib/assets/docs/template/index.md +23 -23
  686. package/lib/assets/docs/template//343/201/276/343/201/232/343/201/223/343/202/214/343/202/222/350/252/255/343/202/202/343/201/206/343/203/252/343/202/271/343/203/210.md +12 -12
  687. package/lib/assets/docs/template//343/202/242/343/203/227/343/203/252/343/202/261/343/203/274/343/202/267/343/203/247/343/203/263/351/226/213/347/231/272/347/222/260/345/242/203/343/202/273/343/203/203/343/203/210/343/202/242/343/203/203/343/203/227/346/211/213/351/240/206/346/233/270.md +547 -547
  688. package/lib/assets/docs/template//343/202/244/343/203/206/343/203/254/343/203/274/343/202/267/343/203/247/343/203/263/345/256/214/344/272/206/345/240/261/345/221/212/346/233/270.md +58 -58
  689. package/lib/assets/docs/template//343/202/244/343/203/263/343/202/273/343/203/227/343/202/267/343/203/247/343/203/263/343/203/207/343/203/203/343/202/255.md +13 -13
  690. package/lib/assets/docs/template//343/203/223/343/202/270/343/203/215/343/202/271/343/202/242/343/203/274/343/202/255/343/203/206/343/202/257/343/203/201/343/203/243.md +379 -379
  691. package/lib/assets/docs/template//344/274/201/346/245/255/345/210/206/346/236/220.md +573 -573
  692. package/lib/assets/docs/template//345/256/214/345/205/250/345/275/242/345/274/217/343/201/256/343/203/246/343/203/274/343/202/271/343/202/261/343/203/274/343/202/271.md +69 -68
  693. package/lib/assets/docs/template//350/246/201/344/273/266/345/256/232/347/276/251.md +669 -669
  694. package/lib/assets/docs/template//350/250/255/350/250/210.md +173 -173
  695. package/lib/assets/docs/template//351/226/213/347/231/272/347/222/260/345/242/203/343/202/273/343/203/203/343/203/210/343/202/242/343/203/203/343/203/227/346/211/213/351/240/206/346/233/270.md +688 -688
  696. package/lib/assets/gulpfile.js +25 -25
  697. package/lib/assets/mkdocs.yml +136 -135
  698. package/lib/assets/ops/docker/mkdoc/Dockerfile +19 -19
  699. package/lib/assets/ops/scripts/journal.js +180 -180
  700. package/lib/assets/ops/scripts/mkdocs.js +82 -82
  701. package/lib/assets/ops/scripts/release.js +431 -431
  702. package/lib/assets/ops/scripts/sonar_local.js +726 -726
  703. package/lib/assets/ops/scripts/ssh.js +190 -190
  704. package/lib/assets/ops/scripts/vault.js +299 -299
  705. package/lib/assets/package-lock.json +1653 -1653
  706. package/lib/assets/package.json +40 -40
  707. package/lib/gulpfile.js +37 -37
  708. package/package.json +41 -41
  709. package/lib/assets/.claude/agent-memory/xp-programmer/MEMORY.md +0 -6
  710. package/lib/assets/.claude/agent-memory/xp-programmer/project_cargo_tracker.md +0 -11
  711. package/lib/assets/.claude/agent-memory/xp-programmer/project_ddd_patterns.md +0 -27
  712. package/lib/assets/.claude/agent-memory/xp-programmer/project_us07_route_assignment.md +0 -19
@@ -1,924 +1,924 @@
1
- # 第4章:販売管理システムの全体像
2
-
3
- 本章から第2部「販売管理システム」の解説に入ります。まず、販売管理システムのスコープと、関連する組織の役割分担について解説します。
4
-
5
- ---
6
-
7
- ## 4.1 販売管理システムのスコープ
8
-
9
- 販売管理システムは、企業の販売活動を支援するシステムです。得意先からの引き合いを起点として、見積・受注・出荷・売上までの一連の業務プロセスを管理します。
10
-
11
- ### システム全体像
12
-
13
- ```plantuml
14
- @startuml
15
-
16
- [*] -> 得意先
17
- 得意先 --> 営業部門
18
- 営業部門 -> 販売管理
19
- 販売管理 : 見積 \n受注 \n出荷 \n売上
20
- 販売管理 -> 調達管理
21
- 販売管理 --> 債権管理
22
- 債権管理 : 締請求 \n入金
23
- 調達管理 : 発注 \n入荷 \n仕入
24
- 調達管理 -> 仕入先
25
- 仕入先 -> 調達管理
26
- 販売管理 --> 在庫管理
27
- 在庫管理 --> 販売管理
28
- 在庫管理 : 在庫 \n受払 \n棚卸
29
- 調達管理 --> 在庫管理
30
- 調達管理 --> 債務管理
31
- 債務管理 : 支払締 \n支払
32
-
33
- 得意先 -> [*]
34
-
35
- @enduml
36
- ```
37
-
38
- ### 見積
39
-
40
- 見積は、得意先からの引き合いに対して、商品の価格・納期・数量等の条件を提示する業務です。
41
-
42
- ```plantuml
43
- @startuml
44
-
45
- state "見積業務" as Estimate {
46
- state "引き合い受付" as Inquiry
47
- state "見積作成" as Create
48
- state "見積承認" as Approve
49
- state "見積提出" as Submit
50
- state "見積回答" as Response
51
-
52
- [*] --> Inquiry
53
- Inquiry --> Create : 見積依頼
54
- Create --> Approve : 承認申請
55
- Approve --> Submit : 承認
56
- Approve --> Create : 差戻し
57
- Submit --> Response : 得意先回答
58
- Response --> [*] : 失注
59
- Response --> 受注 : 受注
60
- }
61
-
62
- @enduml
63
- ```
64
-
65
- | 項目 | 説明 |
66
- |---|---|
67
- | 目的 | 得意先に販売条件を提示し、受注につなげる |
68
- | 入力 | 引き合い情報(商品、数量、希望納期等) |
69
- | 出力 | 見積書 |
70
- | 主なデータ | 見積データ、見積明細データ |
71
-
72
- **見積データの主要項目**
73
-
74
- - 見積番号、見積日、有効期限
75
- - 得意先コード、得意先名
76
- - 担当者、担当部門
77
- - 見積金額(税抜)、消費税額、見積金額(税込)
78
-
79
- ### 受注
80
-
81
- 受注は、得意先からの注文を受け付け、社内で処理する業務です。
82
-
83
- ```plantuml
84
- @startuml
85
-
86
- state "受注業務" as Order {
87
- state "注文受付" as Receive
88
- state "受注登録" as Register
89
- state "在庫確認" as StockCheck
90
- state "納期回答" as DeliveryDate
91
- state "受注確定" as Confirm
92
-
93
- [*] --> Receive
94
- Receive --> Register : 注文情報
95
- Register --> StockCheck : 在庫照会
96
- StockCheck --> DeliveryDate : 在庫OK
97
- StockCheck --> 調達依頼 : 在庫不足
98
- DeliveryDate --> Confirm : 納期確定
99
- Confirm --> [*]
100
- }
101
-
102
- @enduml
103
- ```
104
-
105
- | 項目 | 説明 |
106
- |---|---|
107
- | 目的 | 得意先の注文を正確に記録し、出荷・売上の起点とする |
108
- | 入力 | 注文情報(商品、数量、希望納期、納品先等) |
109
- | 出力 | 注文請書、受注確認書 |
110
- | 主なデータ | 受注データ、受注明細データ |
111
-
112
- **受注データの主要項目**
113
-
114
- - 受注番号、受注日、希望納期
115
- - 得意先コード、納品先コード
116
- - 担当者、担当部門
117
- - 受注金額(税抜)、消費税額、受注金額(税込)
118
- - 受注ステータス(受付、確定、出荷中、完了、キャンセル)
119
-
120
- ### 出荷
121
-
122
- 出荷は、受注に基づいて商品を得意先に届ける業務です。
123
-
124
- ```plantuml
125
- @startuml
126
-
127
- state "出荷業務" as Shipment {
128
- state "出荷指示" as Instruction
129
- state "ピッキング" as Picking
130
- state "検品" as Inspection
131
- state "梱包" as Packing
132
- state "配送" as Delivery
133
- state "出荷完了" as Complete
134
-
135
- [*] --> Instruction
136
- Instruction --> Picking : ピッキングリスト
137
- Picking --> Inspection : 商品取出
138
- Inspection --> Packing : 検品OK
139
- Inspection --> Picking : 検品NG
140
- Packing --> Delivery : 配送手配
141
- Delivery --> Complete : 配送完了
142
- Complete --> [*]
143
- }
144
-
145
- @enduml
146
- ```
147
-
148
- | 項目 | 説明 |
149
- |---|---|
150
- | 目的 | 受注した商品を正確・迅速に得意先に届ける |
151
- | 入力 | 受注データ、出荷指示 |
152
- | 出力 | 出荷指示書、ピッキングリスト、納品書 |
153
- | 主なデータ | 出荷指示データ、出荷データ、出荷明細データ |
154
-
155
- **出荷データの主要項目**
156
-
157
- - 出荷番号、出荷日、出荷予定日
158
- - 受注番号(紐付け)
159
- - 納品先コード、配送先住所
160
- - 出荷ステータス(指示済、ピッキング中、出荷済、配送中、配送完了)
161
-
162
- ### 売上
163
-
164
- 売上は、商品の引渡しが完了した時点で収益を計上する業務です。
165
-
166
- ```plantuml
167
- @startuml
168
-
169
- state "売上業務" as Sales {
170
- state "売上計上" as Record
171
- state "売上確定" as Confirm
172
- state "請求データ作成" as Invoice
173
-
174
- [*] --> Record
175
- Record --> Confirm : 売上登録
176
- Confirm --> Invoice : 売上確定
177
- Invoice --> [*]
178
- }
179
-
180
- @enduml
181
- ```
182
-
183
- | 項目 | 説明 |
184
- |---|---|
185
- | 目的 | 収益を正確に計上し、請求・回収の起点とする |
186
- | 入力 | 出荷データ、納品確認 |
187
- | 出力 | 売上伝票、請求データ |
188
- | 主なデータ | 売上データ、売上明細データ |
189
-
190
- **売上データの主要項目**
191
-
192
- - 売上番号、売上日、計上月
193
- - 受注番号、出荷番号(紐付け)
194
- - 得意先コード、請求先コード
195
- - 売上金額(税抜)、消費税額、売上金額(税込)
196
-
197
- ### 業務間の関連
198
-
199
- 見積・受注・出荷・売上の各業務は、以下のように関連しています。
200
-
201
- ```plantuml
202
- @startuml
203
-
204
- rectangle "見積" as Estimate #LightBlue
205
- rectangle "受注" as Order #LightGreen
206
- rectangle "出荷" as Shipment #LightYellow
207
- rectangle "売上" as Sales #LightPink
208
-
209
- Estimate --> Order : 見積参照\n(任意)
210
- Order --> Shipment : 1:N
211
- Shipment --> Sales : 1:1 or N:1
212
-
213
- note right of Order
214
- 1件の受注に対して
215
- 複数回の出荷が可能
216
- (分納)
217
- end note
218
-
219
- note right of Sales
220
- 出荷単位で売上計上
221
- または
222
- 複数出荷をまとめて売上計上
223
- end note
224
-
225
- @enduml
226
- ```
227
-
228
- | 関連 | カーディナリティ | 説明 |
229
- |---|---|---|
230
- | 見積 → 受注 | 0..1 : 0..N | 見積なしで受注可能、1見積から複数受注も可能 |
231
- | 受注 → 出荷 | 1 : 1..N | 分納により1受注から複数出荷 |
232
- | 出荷 → 売上 | 1..N : 1 | 出荷単位または複数出荷まとめて売上計上 |
233
-
234
- ---
235
-
236
- ## 4.2 販売組織の役割分担
237
-
238
- 販売管理システムに関わる組織は複数あり、それぞれが異なる役割を担っています。
239
-
240
- ### 組織構成
241
-
242
- ```plantuml
243
- @startuml
244
-
245
- package "販売管理に関わる組織" {
246
- rectangle "営業部門" as Sales #LightBlue {
247
- Sales : ・見積作成
248
- Sales : ・受注登録
249
- Sales : ・出荷指示
250
- Sales : ・売上入力
251
- }
252
-
253
- rectangle "調達部門" as Procurement #LightGreen {
254
- Procurement : ・発注入力
255
- Procurement : ・仕入入力
256
- }
257
-
258
- rectangle "倉庫部門" as Warehouse #LightYellow {
259
- Warehouse : ・入荷入力
260
- Warehouse : ・ピッキング
261
- Warehouse : ・出荷入力
262
- Warehouse : ・在庫管理
263
- }
264
-
265
- rectangle "経理部門" as Accounting #LightPink {
266
- Accounting : ・締請求処理
267
- Accounting : ・支払締処理
268
- Accounting : ・仕訳処理
269
- }
270
-
271
- rectangle "財務部門" as Finance #LightCoral {
272
- Finance : ・入金入力
273
- Finance : ・支払入力
274
- Finance : ・資金管理
275
- }
276
- }
277
-
278
- @enduml
279
- ```
280
-
281
- ### 営業部門
282
-
283
- 営業部門は、得意先との接点を持ち、販売活動の中心的な役割を担います。
284
-
285
- | 業務 | 責務 | 主な操作 |
286
- |---|---|---|
287
- | 見積 | 得意先への価格・納期の提示 | 見積作成、見積書発行 |
288
- | 受注 | 得意先からの注文受付 | 受注登録、納期回答 |
289
- | 出荷指示 | 倉庫への出荷依頼 | 出荷指示登録 |
290
- | 売上 | 収益の計上 | 売上入力、売上確定 |
291
-
292
- ### 調達部門
293
-
294
- 調達部門は、商品・資材の仕入れを担当します。
295
-
296
- | 業務 | 責務 | 主な操作 |
297
- |---|---|---|
298
- | 発注 | 仕入先への注文 | 発注登録、注文書発行 |
299
- | 仕入 | 検収・仕入計上 | 仕入入力、仕入伝票発行 |
300
-
301
- ### 倉庫部門
302
-
303
- 倉庫部門は、商品・資材の物理的な管理を担当します。
304
-
305
- | 業務 | 責務 | 主な操作 |
306
- |---|---|---|
307
- | 入荷 | 仕入先からの商品受入 | 入荷入力、検品 |
308
- | ピッキング | 出荷商品の取り出し | ピッキング作業 |
309
- | 出荷 | 商品の発送 | 出荷入力、配送手配 |
310
- | 在庫管理 | 在庫数量の管理 | 棚卸、在庫調整 |
311
-
312
- ### 経理部門
313
-
314
- 経理部門は、取引の記帳・請求・支払の管理を担当します。
315
-
316
- | 業務 | 責務 | 主な操作 |
317
- |---|---|---|
318
- | 締請求 | 売上の請求処理 | 締処理、請求書発行 |
319
- | 支払締 | 仕入の支払処理 | 締処理、支払予定作成 |
320
- | 仕訳 | 会計処理 | 仕訳入力、自動仕訳 |
321
-
322
- ### 財務部門
323
-
324
- 財務部門は、資金の入出金管理を担当します。
325
-
326
- | 業務 | 責務 | 主な操作 |
327
- |---|---|---|
328
- | 入金 | 得意先からの入金処理 | 入金入力、消込処理 |
329
- | 支払 | 仕入先への支払処理 | 支払入力、振込処理 |
330
- | 資金管理 | 資金繰りの管理 | 資金計画、残高管理 |
331
-
332
- ### 業務フローと各部門の責務
333
-
334
- 各部門がどのタイミングで業務に関与するかを、全体フローで示します。
335
-
336
- ```plantuml
337
- @startuml
338
- title 販売管理システムの全体フロー
339
-
340
- |営業部門|
341
- start
342
- fork
343
- :見積入力;
344
- fork again
345
- :受注入力;
346
- fork end
347
-
348
- |システム|
349
- fork
350
- :見積データ;
351
- :見積書;
352
- fork again
353
- :受注データ;
354
- :注文請書;
355
- fork end
356
-
357
- |調達部門|
358
- :発注入力;
359
-
360
- |システム|
361
- :発注データ;
362
- :注文書;
363
-
364
- |倉庫部門|
365
- :入荷入力;
366
-
367
- |システム|
368
- fork
369
- :入荷データ;
370
- fork again
371
- :在庫データ;
372
- fork end
373
- :入荷伝票;
374
-
375
- |調達部門|
376
- :仕入入力;
377
-
378
- |システム|
379
- :仕入データ;
380
- :仕入伝票;
381
-
382
- |営業部門|
383
- :出荷指示;
384
-
385
- |システム|
386
- fork
387
- :出荷指示データ;
388
- fork again
389
- :在庫データ(引当);
390
- fork end
391
- :出荷指示書;
392
- :ピッキングリスト;
393
-
394
- |倉庫部門|
395
- :ピッキング;
396
- :出荷入力;
397
-
398
- |システム|
399
- fork
400
- :出荷データ;
401
- fork again
402
- :在庫データ(出庫);
403
- fork end
404
- :納品書;
405
-
406
- |営業部門|
407
- :売上入力;
408
-
409
- |システム|
410
- :売上データ;
411
- :売上伝票;
412
-
413
- |経理部門|
414
- :締請求処理;
415
-
416
- |システム|
417
- :債権データ;
418
- :請求書;
419
-
420
- |財務部門|
421
- :入金入力;
422
-
423
- |システム|
424
- :入金データ;
425
- :入金伝票;
426
-
427
- stop
428
-
429
- @enduml
430
- ```
431
-
432
- ### 部門間の連携ポイント
433
-
434
- ```plantuml
435
- @startuml
436
-
437
- rectangle "営業部門" as Sales
438
- rectangle "調達部門" as Procurement
439
- rectangle "倉庫部門" as Warehouse
440
- rectangle "経理部門" as Accounting
441
- rectangle "財務部門" as Finance
442
-
443
- Sales --> Procurement : 在庫不足時\n発注依頼
444
- Sales --> Warehouse : 出荷指示
445
- Sales --> Accounting : 売上データ
446
-
447
- Procurement --> Warehouse : 入荷予定
448
- Procurement --> Accounting : 仕入データ
449
-
450
- Warehouse --> Sales : 出荷完了報告
451
- Warehouse --> Procurement : 入荷報告
452
-
453
- Accounting --> Finance : 請求・支払データ
454
-
455
- Finance --> Accounting : 入金・出金データ
456
-
457
- @enduml
458
- ```
459
-
460
- | 連携元 | 連携先 | 連携内容 |
461
- |---|---|---|
462
- | 営業部門 | 調達部門 | 在庫不足時の発注依頼 |
463
- | 営業部門 | 倉庫部門 | 出荷指示 |
464
- | 営業部門 | 経理部門 | 売上データ |
465
- | 調達部門 | 倉庫部門 | 入荷予定情報 |
466
- | 調達部門 | 経理部門 | 仕入データ |
467
- | 倉庫部門 | 営業部門 | 出荷完了報告 |
468
- | 経理部門 | 財務部門 | 請求・支払データ |
469
- | 財務部門 | 経理部門 | 入金・出金データ |
470
-
471
- ---
472
-
473
- ## 4.3 販売管理システムのアーキテクチャ
474
-
475
- 本節では、販売管理システム(SMS: Sales Management System)のプロジェクト構成とアーキテクチャについて解説します。
476
-
477
- ### プロジェクト構成
478
-
479
- 販売管理システムは `apps/sms` ディレクトリ以下に構築します。
480
-
481
- ```
482
- apps/sms/
483
- ├── backend/
484
- │ ├── build.gradle.kts # Gradle ビルド設定(Kotlin DSL)
485
- │ ├── settings.gradle.kts # Gradle 設定
486
- │ ├── config/ # 品質管理ツール設定
487
- │ │ ├── checkstyle/
488
- │ │ │ └── checkstyle.xml
489
- │ │ ├── pmd/
490
- │ │ │ └── ruleset.xml
491
- │ │ └── spotbugs/
492
- │ │ └── exclude.xml
493
- │ │
494
- │ └── src/
495
- │ ├── main/
496
- │ │ ├── java/com/example/sms/
497
- │ │ │ │
498
- │ │ │ ├── domain/ # ドメイン層(純粋なビジネスロジック)
499
- │ │ │ │ ├── model/ # ドメインモデル(エンティティ、値オブジェクト)
500
- │ │ │ │ │ ├── master/ # マスタ関連
501
- │ │ │ │ │ └── transaction/ # トランザクション関連
502
- │ │ │ │ ├── type/ # 基本型(通貨、単位、数量等)
503
- │ │ │ │ └── exception/ # ドメイン例外
504
- │ │ │ │
505
- │ │ │ ├── application/ # アプリケーション層
506
- │ │ │ │ ├── port/
507
- │ │ │ │ │ ├── in/ # Input Port(ユースケースIF)
508
- │ │ │ │ │ └── out/ # Output Port(リポジトリIF)
509
- │ │ │ │ └── service/ # Application Service(ユースケース実装)
510
- │ │ │ │
511
- │ │ │ ├── infrastructure/ # インフラストラクチャ層
512
- │ │ │ │ ├── in/ # Input Adapter
513
- │ │ │ │ │ └── rest/ # REST API Controller
514
- │ │ │ │ ├── out/ # Output Adapter
515
- │ │ │ │ │ └── persistence/ # 永続化(MyBatis Mapper)
516
- │ │ │ │ └── config/ # 設定クラス
517
- │ │ │ │
518
- │ │ │ └── Application.java # メインクラス
519
- │ │ │
520
- │ │ └── resources/
521
- │ │ ├── application.yml # アプリケーション設定
522
- │ │ ├── db/migration/ # Flyway マイグレーション
523
- │ │ └── mapper/ # MyBatis XML マッパー
524
- │ │
525
- │ └── test/
526
- │ ├── java/com/example/sms/
527
- │ │ ├── testsetup/ # テスト基盤クラス
528
- │ │ │ └── BaseIntegrationTest.java
529
- │ │ ├── domain/ # ドメイン層テスト
530
- │ │ ├── application/ # アプリケーション層テスト
531
- │ │ └── infrastructure/ # インフラ層テスト
532
- │ │
533
- │ └── resources/
534
- │ └── application-test.yml
535
-
536
- ├── frontend/ # フロントエンド
537
- │ └── src/
538
- │ ├── components/ # UI コンポーネント
539
- │ ├── pages/ # ページコンポーネント
540
- │ ├── hooks/ # カスタムフック
541
- │ ├── services/ # API クライアント
542
- │ └── types/ # 型定義
543
-
544
- └── docker-compose.yml # Docker 構成
545
- ```
546
-
547
- **各レイヤーの責務:**
548
-
549
- | レイヤー | 責務 |
550
- |---|---|
551
- | Domain 層 | ビジネスルールとドメインモデル(外部技術に非依存) |
552
- | Application 層 | ユースケースの実装とオーケストレーション |
553
- | Infrastructure 層 | 外部技術との接続(DB、Web 等) |
554
-
555
- ### ヘキサゴナルアーキテクチャ(ポート&アダプター)
556
-
557
- 販売管理システムは、ヘキサゴナルアーキテクチャ(Ports and Adapters)を採用します。このアーキテクチャにより、ビジネスロジックを外部の技術的関心事から分離し、テスト容易性と保守性を高めます。
558
-
559
- ```plantuml
560
- @startuml
561
- !define HEXAGON(name) hexagon name
562
-
563
- skinparam hexagon {
564
- BackgroundColor<<domain>> LightBlue
565
- BackgroundColor<<port>> LightGreen
566
- BackgroundColor<<adapter>> LightYellow
567
- }
568
-
569
- package "販売管理システム" {
570
- ' ドメイン(中心)
571
- hexagon "ドメイン\n(Domain)" <<domain>> as Domain {
572
- }
573
- note bottom of Domain
574
- エンティティ
575
- 値オブジェクト
576
- 集約
577
- ドメインサービス
578
- end note
579
-
580
- ' 入力ポート
581
- rectangle "入力ポート\n(Input Ports)" <<port>> as InputPort {
582
- }
583
- note left of InputPort
584
- ユースケース
585
- インターフェース
586
- end note
587
-
588
- ' 出力ポート
589
- rectangle "出力ポート\n(Output Ports)" <<port>> as OutputPort {
590
- }
591
- note right of OutputPort
592
- リポジトリ
593
- インターフェース
594
- end note
595
-
596
- ' プライマリアダプター
597
- rectangle "プライマリアダプター\n(Primary Adapters)" <<adapter>> as PrimaryAdapter {
598
- }
599
- note top of PrimaryAdapter
600
- REST API
601
- GraphQL
602
- CLI
603
- end note
604
-
605
- ' セカンダリアダプター
606
- rectangle "セカンダリアダプター\n(Secondary Adapters)" <<adapter>> as SecondaryAdapter {
607
- }
608
- note bottom of SecondaryAdapter
609
- PostgreSQL
610
- Redis
611
- 外部 API
612
- end note
613
- }
614
-
615
- PrimaryAdapter --> InputPort
616
- InputPort --> Domain
617
- Domain --> OutputPort
618
- OutputPort --> SecondaryAdapter
619
-
620
- @enduml
621
- ```
622
-
623
- #### ドメイン(中心)
624
-
625
- ドメインはシステムの中心に位置し、ビジネスロジックを実装します。
626
-
627
- ```
628
- backend/src/domain/
629
- ├── model/ # ドメインモデル
630
- │ ├── master/ # マスタ関連
631
- │ │ ├── Product.ts # 商品
632
- │ │ ├── Customer.ts # 顧客
633
- │ │ └── Supplier.ts # 仕入先
634
- │ ├── sales/ # 販売関連
635
- │ │ ├── Order.ts # 受注
636
- │ │ ├── OrderItem.ts # 受注明細
637
- │ │ ├── Shipment.ts # 出荷
638
- │ │ └── Sales.ts # 売上
639
- │ ├── purchase/ # 仕入関連
640
- │ │ ├── Purchase.ts # 発注
641
- │ │ └── PurchaseReceipt.ts # 仕入
642
- │ ├── inventory/ # 在庫関連
643
- │ │ └── Inventory.ts # 在庫
644
- │ └── billing/ # 請求関連
645
- │ ├── Invoice.ts # 請求
646
- │ └── Receipt.ts # 入金
647
- ├── type/ # 基本型
648
- │ ├── Money.ts # 通貨
649
- │ ├── Quantity.ts # 数量
650
- │ └── Unit.ts # 単位
651
- └── exception/ # ドメイン例外
652
- └── DomainException.ts
653
- ```
654
-
655
- #### ポート(入力ポート・出力ポート)
656
-
657
- ポートは、ドメインと外部世界との境界を定義するインターフェースです。
658
-
659
- | ポート種別 | 役割 | 例 |
660
- |---|---|---|
661
- | 入力ポート | 外部からの要求を受け付ける | ユースケースインターフェース |
662
- | 出力ポート | 外部リソースへのアクセスを抽象化 | リポジトリインターフェース |
663
-
664
- ```typescript
665
- // 入力ポート(ユースケースインターフェース)
666
- interface CreateOrderUseCase {
667
- execute(command: CreateOrderCommand): Promise<OrderId>;
668
- }
669
-
670
- // 出力ポート(リポジトリインターフェース)
671
- interface OrderRepository {
672
- save(order: Order): Promise<void>;
673
- findById(id: OrderId): Promise<Order | null>;
674
- findByCustomerId(customerId: CustomerId): Promise<Order[]>;
675
- }
676
- ```
677
-
678
- #### アダプター(プライマリ・セカンダリ)
679
-
680
- アダプターは、ポートの実装を提供し、外部技術とドメインを接続します。
681
-
682
- | アダプター種別 | 役割 | 例 |
683
- |---|---|---|
684
- | プライマリアダプター | 外部からの入力を処理 | REST コントローラ、CLI |
685
- | セカンダリアダプター | 外部リソースへの出力を処理 | DB リポジトリ実装、外部 API クライアント |
686
-
687
- ```
688
- backend/src/infrastructure/
689
- ├── in/ # Input Adapter(プライマリアダプター)
690
- │ └── rest/ # REST API
691
- │ ├── controller/
692
- │ │ ├── OrderController.ts
693
- │ │ ├── ShipmentController.ts
694
- │ │ └── SalesController.ts
695
- │ ├── dto/
696
- │ │ ├── OrderRequest.ts
697
- │ │ └── OrderResponse.ts
698
- │ └── exception/
699
- │ └── RestExceptionHandler.ts
700
- ├── out/ # Output Adapter(セカンダリアダプター)
701
- │ └── persistence/ # 永続化
702
- │ ├── database/ # データベース定義
703
- │ │ ├── migrations/ # マイグレーション
704
- │ │ └── seeds/ # シードデータ
705
- │ ├── mapper/ # O/R Mapper
706
- │ │ └── OrderMapper.ts
707
- │ ├── repository/ # Repository実装
708
- │ │ ├── OrderRepositoryImpl.ts
709
- │ │ └── CustomerRepositoryImpl.ts
710
- │ └── typehandler/ # 型ハンドラ
711
- └── config/ # 設定クラス
712
- ├── DatabaseConfig.ts
713
- └── WebConfig.ts
714
- ```
715
-
716
- #### 依存性の方向と依存性逆転の原則
717
-
718
- ヘキサゴナルアーキテクチャでは、すべての依存性がドメインに向かいます。
719
-
720
- ```plantuml
721
- @startuml
722
- skinparam rectangle {
723
- BackgroundColor<<domain>> LightBlue
724
- BackgroundColor<<app>> LightGreen
725
- BackgroundColor<<infra>> LightYellow
726
- BackgroundColor<<pres>> LightPink
727
- }
728
-
729
- rectangle "Presentation\n(プレゼンテーション層)" <<pres>> as Pres
730
- rectangle "Application\n(アプリケーション層)" <<app>> as App
731
- rectangle "Domain\n(ドメイン層)" <<domain>> as Domain
732
- rectangle "Infrastructure\n(インフラストラクチャ層)" <<infra>> as Infra
733
-
734
- Pres --> App
735
- App --> Domain
736
- Infra --> Domain
737
-
738
- note right of Domain
739
- 依存性逆転の原則(DIP)
740
- ・ドメインはインターフェースを定義
741
- ・インフラは実装を提供
742
- ・依存の方向は常にドメインへ
743
- end note
744
-
745
- @enduml
746
- ```
747
-
748
- ### ドメイン駆動設計の適用
749
-
750
- #### 集約とリポジトリ
751
-
752
- 販売管理システムの主要な集約を以下に示します。
753
-
754
- ```plantuml
755
- @startuml
756
- !define AGGREGATE(name) rectangle name <<aggregate>>
757
- !define ENTITY(name) class name <<entity>>
758
- !define VALUE(name) class name <<value>>
759
-
760
- skinparam class {
761
- BackgroundColor<<aggregate>> LightBlue
762
- BackgroundColor<<entity>> LightGreen
763
- BackgroundColor<<value>> LightYellow
764
- }
765
-
766
- package "受注集約" {
767
- ENTITY(Order) {
768
- +orderId: OrderId
769
- +customerId: CustomerId
770
- +orderDate: Date
771
- +status: OrderStatus
772
- +items: OrderItem[]
773
- +totalAmount(): Money
774
- }
775
-
776
- ENTITY(OrderItem) {
777
- +itemNo: number
778
- +productId: ProductId
779
- +quantity: Quantity
780
- +unitPrice: Money
781
- }
782
-
783
- VALUE(OrderId) {
784
- +value: string
785
- }
786
-
787
- VALUE(OrderStatus) {
788
- +value: string
789
- }
790
-
791
- Order *-- OrderItem
792
- Order --> OrderId
793
- Order --> OrderStatus
794
- }
795
-
796
- @enduml
797
- ```
798
-
799
- | 集約 | ルートエンティティ | 主な責務 |
800
- |---|---|---|
801
- | 見積集約 | Estimate | 見積の作成・更新・承認 |
802
- | 受注集約 | Order | 受注の登録・在庫引当・ステータス管理 |
803
- | 出荷集約 | Shipment | 出荷指示・出荷実績の管理 |
804
- | 売上集約 | Sales | 売上計上・請求データ生成 |
805
-
806
- #### ドメインサービス
807
-
808
- エンティティに属さないビジネスロジックはドメインサービスとして実装します。
809
-
810
- ```typescript
811
- // 価格計算サービス
812
- class PricingService {
813
- calculateOrderTotal(
814
- items: OrderItem[],
815
- customer: Customer,
816
- discountPolicy: DiscountPolicy
817
- ): Money {
818
- // 顧客別単価の適用
819
- // 数量割引の計算
820
- // 消費税の計算
821
- }
822
- }
823
-
824
- // 在庫引当サービス
825
- class InventoryAllocationService {
826
- allocate(order: Order): AllocationResult {
827
- // 在庫の確認
828
- // 引当処理
829
- // 不足時の調達依頼
830
- }
831
- }
832
- ```
833
-
834
- #### アプリケーションサービス
835
-
836
- アプリケーションサービスは、ユースケースを実装し、トランザクション境界を管理します。
837
-
838
- ```typescript
839
- // 受注登録ユースケース
840
- class CreateOrderService implements CreateOrderUseCase {
841
- constructor(
842
- private orderRepository: OrderRepository,
843
- private customerRepository: CustomerRepository,
844
- private pricingService: PricingService,
845
- private inventoryService: InventoryAllocationService
846
- ) {}
847
-
848
- async execute(command: CreateOrderCommand): Promise<OrderId> {
849
- // 1. 顧客の取得
850
- const customer = await this.customerRepository.findById(command.customerId);
851
-
852
- // 2. 受注の作成
853
- const order = Order.create(customer, command.items);
854
-
855
- // 3. 価格計算
856
- order.calculateTotal(this.pricingService);
857
-
858
- // 4. 在庫引当
859
- await this.inventoryService.allocate(order);
860
-
861
- // 5. 保存
862
- await this.orderRepository.save(order);
863
-
864
- return order.id;
865
- }
866
- }
867
- ```
868
-
869
- ### API 設計
870
-
871
- #### RESTful API の基本方針
872
-
873
- | 原則 | 説明 |
874
- |---|---|
875
- | リソース指向 | URL はリソース(名詞)を表す |
876
- | HTTP メソッド | GET/POST/PUT/DELETE で操作を表現 |
877
- | ステートレス | サーバーはセッション状態を保持しない |
878
- | HATEOAS | レスポンスに関連リソースへのリンクを含める |
879
-
880
- #### エンドポイント設計
881
-
882
- ```
883
- # 見積
884
- GET /api/v1/estimates # 見積一覧
885
- POST /api/v1/estimates # 見積作成
886
- GET /api/v1/estimates/{id} # 見積詳細
887
- PUT /api/v1/estimates/{id} # 見積更新
888
- DELETE /api/v1/estimates/{id} # 見積削除
889
- POST /api/v1/estimates/{id}/approve # 見積承認
890
-
891
- # 受注
892
- GET /api/v1/orders # 受注一覧
893
- POST /api/v1/orders # 受注登録
894
- GET /api/v1/orders/{id} # 受注詳細
895
- PUT /api/v1/orders/{id} # 受注更新
896
- POST /api/v1/orders/{id}/confirm # 受注確定
897
- POST /api/v1/orders/{id}/cancel # 受注キャンセル
898
-
899
- # 出荷
900
- GET /api/v1/shipments # 出荷一覧
901
- POST /api/v1/shipments # 出荷登録
902
- GET /api/v1/shipments/{id} # 出荷詳細
903
- POST /api/v1/shipments/{id}/ship # 出荷実行
904
- POST /api/v1/shipments/{id}/deliver # 配送完了
905
-
906
- # 売上
907
- GET /api/v1/sales # 売上一覧
908
- POST /api/v1/sales # 売上計上
909
- GET /api/v1/sales/{id} # 売上詳細
910
- ```
911
-
912
- ---
913
-
914
- ## まとめ
915
-
916
- 本章では、販売管理システムの全体像について解説しました。
917
-
918
- - **販売管理システムのスコープ**は「見積→受注→出荷→売上」の4つの主要業務
919
- - **5つの部門**(営業・調達・倉庫・経理・財務)がそれぞれの責務を担う
920
- - 部門間の連携により、一連の業務フローが成立する
921
- - **ヘキサゴナルアーキテクチャ**により、ドメインを中心とした疎結合な設計を実現
922
- - **ドメイン駆動設計**の集約・リポジトリパターンを適用
923
-
924
- 次章では、販売管理システムの基盤となるマスタ情報の設計について解説します。
1
+ # 第4章:販売管理システムの全体像
2
+
3
+ 本章から第2部「販売管理システム」の解説に入ります。まず、販売管理システムのスコープと、関連する組織の役割分担について解説します。
4
+
5
+ ---
6
+
7
+ ## 4.1 販売管理システムのスコープ
8
+
9
+ 販売管理システムは、企業の販売活動を支援するシステムです。得意先からの引き合いを起点として、見積・受注・出荷・売上までの一連の業務プロセスを管理します。
10
+
11
+ ### システム全体像
12
+
13
+ ```plantuml
14
+ @startuml
15
+
16
+ [*] -> 得意先
17
+ 得意先 --> 営業部門
18
+ 営業部門 -> 販売管理
19
+ 販売管理 : 見積 \n受注 \n出荷 \n売上
20
+ 販売管理 -> 調達管理
21
+ 販売管理 --> 債権管理
22
+ 債権管理 : 締請求 \n入金
23
+ 調達管理 : 発注 \n入荷 \n仕入
24
+ 調達管理 -> 仕入先
25
+ 仕入先 -> 調達管理
26
+ 販売管理 --> 在庫管理
27
+ 在庫管理 --> 販売管理
28
+ 在庫管理 : 在庫 \n受払 \n棚卸
29
+ 調達管理 --> 在庫管理
30
+ 調達管理 --> 債務管理
31
+ 債務管理 : 支払締 \n支払
32
+
33
+ 得意先 -> [*]
34
+
35
+ @enduml
36
+ ```
37
+
38
+ ### 見積
39
+
40
+ 見積は、得意先からの引き合いに対して、商品の価格・納期・数量等の条件を提示する業務です。
41
+
42
+ ```plantuml
43
+ @startuml
44
+
45
+ state "見積業務" as Estimate {
46
+ state "引き合い受付" as Inquiry
47
+ state "見積作成" as Create
48
+ state "見積承認" as Approve
49
+ state "見積提出" as Submit
50
+ state "見積回答" as Response
51
+
52
+ [*] --> Inquiry
53
+ Inquiry --> Create : 見積依頼
54
+ Create --> Approve : 承認申請
55
+ Approve --> Submit : 承認
56
+ Approve --> Create : 差戻し
57
+ Submit --> Response : 得意先回答
58
+ Response --> [*] : 失注
59
+ Response --> 受注 : 受注
60
+ }
61
+
62
+ @enduml
63
+ ```
64
+
65
+ | 項目 | 説明 |
66
+ |---|---|
67
+ | 目的 | 得意先に販売条件を提示し、受注につなげる |
68
+ | 入力 | 引き合い情報(商品、数量、希望納期等) |
69
+ | 出力 | 見積書 |
70
+ | 主なデータ | 見積データ、見積明細データ |
71
+
72
+ **見積データの主要項目**
73
+
74
+ - 見積番号、見積日、有効期限
75
+ - 得意先コード、得意先名
76
+ - 担当者、担当部門
77
+ - 見積金額(税抜)、消費税額、見積金額(税込)
78
+
79
+ ### 受注
80
+
81
+ 受注は、得意先からの注文を受け付け、社内で処理する業務です。
82
+
83
+ ```plantuml
84
+ @startuml
85
+
86
+ state "受注業務" as Order {
87
+ state "注文受付" as Receive
88
+ state "受注登録" as Register
89
+ state "在庫確認" as StockCheck
90
+ state "納期回答" as DeliveryDate
91
+ state "受注確定" as Confirm
92
+
93
+ [*] --> Receive
94
+ Receive --> Register : 注文情報
95
+ Register --> StockCheck : 在庫照会
96
+ StockCheck --> DeliveryDate : 在庫OK
97
+ StockCheck --> 調達依頼 : 在庫不足
98
+ DeliveryDate --> Confirm : 納期確定
99
+ Confirm --> [*]
100
+ }
101
+
102
+ @enduml
103
+ ```
104
+
105
+ | 項目 | 説明 |
106
+ |---|---|
107
+ | 目的 | 得意先の注文を正確に記録し、出荷・売上の起点とする |
108
+ | 入力 | 注文情報(商品、数量、希望納期、納品先等) |
109
+ | 出力 | 注文請書、受注確認書 |
110
+ | 主なデータ | 受注データ、受注明細データ |
111
+
112
+ **受注データの主要項目**
113
+
114
+ - 受注番号、受注日、希望納期
115
+ - 得意先コード、納品先コード
116
+ - 担当者、担当部門
117
+ - 受注金額(税抜)、消費税額、受注金額(税込)
118
+ - 受注ステータス(受付、確定、出荷中、完了、キャンセル)
119
+
120
+ ### 出荷
121
+
122
+ 出荷は、受注に基づいて商品を得意先に届ける業務です。
123
+
124
+ ```plantuml
125
+ @startuml
126
+
127
+ state "出荷業務" as Shipment {
128
+ state "出荷指示" as Instruction
129
+ state "ピッキング" as Picking
130
+ state "検品" as Inspection
131
+ state "梱包" as Packing
132
+ state "配送" as Delivery
133
+ state "出荷完了" as Complete
134
+
135
+ [*] --> Instruction
136
+ Instruction --> Picking : ピッキングリスト
137
+ Picking --> Inspection : 商品取出
138
+ Inspection --> Packing : 検品OK
139
+ Inspection --> Picking : 検品NG
140
+ Packing --> Delivery : 配送手配
141
+ Delivery --> Complete : 配送完了
142
+ Complete --> [*]
143
+ }
144
+
145
+ @enduml
146
+ ```
147
+
148
+ | 項目 | 説明 |
149
+ |---|---|
150
+ | 目的 | 受注した商品を正確・迅速に得意先に届ける |
151
+ | 入力 | 受注データ、出荷指示 |
152
+ | 出力 | 出荷指示書、ピッキングリスト、納品書 |
153
+ | 主なデータ | 出荷指示データ、出荷データ、出荷明細データ |
154
+
155
+ **出荷データの主要項目**
156
+
157
+ - 出荷番号、出荷日、出荷予定日
158
+ - 受注番号(紐付け)
159
+ - 納品先コード、配送先住所
160
+ - 出荷ステータス(指示済、ピッキング中、出荷済、配送中、配送完了)
161
+
162
+ ### 売上
163
+
164
+ 売上は、商品の引渡しが完了した時点で収益を計上する業務です。
165
+
166
+ ```plantuml
167
+ @startuml
168
+
169
+ state "売上業務" as Sales {
170
+ state "売上計上" as Record
171
+ state "売上確定" as Confirm
172
+ state "請求データ作成" as Invoice
173
+
174
+ [*] --> Record
175
+ Record --> Confirm : 売上登録
176
+ Confirm --> Invoice : 売上確定
177
+ Invoice --> [*]
178
+ }
179
+
180
+ @enduml
181
+ ```
182
+
183
+ | 項目 | 説明 |
184
+ |---|---|
185
+ | 目的 | 収益を正確に計上し、請求・回収の起点とする |
186
+ | 入力 | 出荷データ、納品確認 |
187
+ | 出力 | 売上伝票、請求データ |
188
+ | 主なデータ | 売上データ、売上明細データ |
189
+
190
+ **売上データの主要項目**
191
+
192
+ - 売上番号、売上日、計上月
193
+ - 受注番号、出荷番号(紐付け)
194
+ - 得意先コード、請求先コード
195
+ - 売上金額(税抜)、消費税額、売上金額(税込)
196
+
197
+ ### 業務間の関連
198
+
199
+ 見積・受注・出荷・売上の各業務は、以下のように関連しています。
200
+
201
+ ```plantuml
202
+ @startuml
203
+
204
+ rectangle "見積" as Estimate #LightBlue
205
+ rectangle "受注" as Order #LightGreen
206
+ rectangle "出荷" as Shipment #LightYellow
207
+ rectangle "売上" as Sales #LightPink
208
+
209
+ Estimate --> Order : 見積参照\n(任意)
210
+ Order --> Shipment : 1:N
211
+ Shipment --> Sales : 1:1 or N:1
212
+
213
+ note right of Order
214
+ 1件の受注に対して
215
+ 複数回の出荷が可能
216
+ (分納)
217
+ end note
218
+
219
+ note right of Sales
220
+ 出荷単位で売上計上
221
+ または
222
+ 複数出荷をまとめて売上計上
223
+ end note
224
+
225
+ @enduml
226
+ ```
227
+
228
+ | 関連 | カーディナリティ | 説明 |
229
+ |---|---|---|
230
+ | 見積 → 受注 | 0..1 : 0..N | 見積なしで受注可能、1見積から複数受注も可能 |
231
+ | 受注 → 出荷 | 1 : 1..N | 分納により1受注から複数出荷 |
232
+ | 出荷 → 売上 | 1..N : 1 | 出荷単位または複数出荷まとめて売上計上 |
233
+
234
+ ---
235
+
236
+ ## 4.2 販売組織の役割分担
237
+
238
+ 販売管理システムに関わる組織は複数あり、それぞれが異なる役割を担っています。
239
+
240
+ ### 組織構成
241
+
242
+ ```plantuml
243
+ @startuml
244
+
245
+ package "販売管理に関わる組織" {
246
+ rectangle "営業部門" as Sales #LightBlue {
247
+ Sales : ・見積作成
248
+ Sales : ・受注登録
249
+ Sales : ・出荷指示
250
+ Sales : ・売上入力
251
+ }
252
+
253
+ rectangle "調達部門" as Procurement #LightGreen {
254
+ Procurement : ・発注入力
255
+ Procurement : ・仕入入力
256
+ }
257
+
258
+ rectangle "倉庫部門" as Warehouse #LightYellow {
259
+ Warehouse : ・入荷入力
260
+ Warehouse : ・ピッキング
261
+ Warehouse : ・出荷入力
262
+ Warehouse : ・在庫管理
263
+ }
264
+
265
+ rectangle "経理部門" as Accounting #LightPink {
266
+ Accounting : ・締請求処理
267
+ Accounting : ・支払締処理
268
+ Accounting : ・仕訳処理
269
+ }
270
+
271
+ rectangle "財務部門" as Finance #LightCoral {
272
+ Finance : ・入金入力
273
+ Finance : ・支払入力
274
+ Finance : ・資金管理
275
+ }
276
+ }
277
+
278
+ @enduml
279
+ ```
280
+
281
+ ### 営業部門
282
+
283
+ 営業部門は、得意先との接点を持ち、販売活動の中心的な役割を担います。
284
+
285
+ | 業務 | 責務 | 主な操作 |
286
+ |---|---|---|
287
+ | 見積 | 得意先への価格・納期の提示 | 見積作成、見積書発行 |
288
+ | 受注 | 得意先からの注文受付 | 受注登録、納期回答 |
289
+ | 出荷指示 | 倉庫への出荷依頼 | 出荷指示登録 |
290
+ | 売上 | 収益の計上 | 売上入力、売上確定 |
291
+
292
+ ### 調達部門
293
+
294
+ 調達部門は、商品・資材の仕入れを担当します。
295
+
296
+ | 業務 | 責務 | 主な操作 |
297
+ |---|---|---|
298
+ | 発注 | 仕入先への注文 | 発注登録、注文書発行 |
299
+ | 仕入 | 検収・仕入計上 | 仕入入力、仕入伝票発行 |
300
+
301
+ ### 倉庫部門
302
+
303
+ 倉庫部門は、商品・資材の物理的な管理を担当します。
304
+
305
+ | 業務 | 責務 | 主な操作 |
306
+ |---|---|---|
307
+ | 入荷 | 仕入先からの商品受入 | 入荷入力、検品 |
308
+ | ピッキング | 出荷商品の取り出し | ピッキング作業 |
309
+ | 出荷 | 商品の発送 | 出荷入力、配送手配 |
310
+ | 在庫管理 | 在庫数量の管理 | 棚卸、在庫調整 |
311
+
312
+ ### 経理部門
313
+
314
+ 経理部門は、取引の記帳・請求・支払の管理を担当します。
315
+
316
+ | 業務 | 責務 | 主な操作 |
317
+ |---|---|---|
318
+ | 締請求 | 売上の請求処理 | 締処理、請求書発行 |
319
+ | 支払締 | 仕入の支払処理 | 締処理、支払予定作成 |
320
+ | 仕訳 | 会計処理 | 仕訳入力、自動仕訳 |
321
+
322
+ ### 財務部門
323
+
324
+ 財務部門は、資金の入出金管理を担当します。
325
+
326
+ | 業務 | 責務 | 主な操作 |
327
+ |---|---|---|
328
+ | 入金 | 得意先からの入金処理 | 入金入力、消込処理 |
329
+ | 支払 | 仕入先への支払処理 | 支払入力、振込処理 |
330
+ | 資金管理 | 資金繰りの管理 | 資金計画、残高管理 |
331
+
332
+ ### 業務フローと各部門の責務
333
+
334
+ 各部門がどのタイミングで業務に関与するかを、全体フローで示します。
335
+
336
+ ```plantuml
337
+ @startuml
338
+ title 販売管理システムの全体フロー
339
+
340
+ |営業部門|
341
+ start
342
+ fork
343
+ :見積入力;
344
+ fork again
345
+ :受注入力;
346
+ fork end
347
+
348
+ |システム|
349
+ fork
350
+ :見積データ;
351
+ :見積書;
352
+ fork again
353
+ :受注データ;
354
+ :注文請書;
355
+ fork end
356
+
357
+ |調達部門|
358
+ :発注入力;
359
+
360
+ |システム|
361
+ :発注データ;
362
+ :注文書;
363
+
364
+ |倉庫部門|
365
+ :入荷入力;
366
+
367
+ |システム|
368
+ fork
369
+ :入荷データ;
370
+ fork again
371
+ :在庫データ;
372
+ fork end
373
+ :入荷伝票;
374
+
375
+ |調達部門|
376
+ :仕入入力;
377
+
378
+ |システム|
379
+ :仕入データ;
380
+ :仕入伝票;
381
+
382
+ |営業部門|
383
+ :出荷指示;
384
+
385
+ |システム|
386
+ fork
387
+ :出荷指示データ;
388
+ fork again
389
+ :在庫データ(引当);
390
+ fork end
391
+ :出荷指示書;
392
+ :ピッキングリスト;
393
+
394
+ |倉庫部門|
395
+ :ピッキング;
396
+ :出荷入力;
397
+
398
+ |システム|
399
+ fork
400
+ :出荷データ;
401
+ fork again
402
+ :在庫データ(出庫);
403
+ fork end
404
+ :納品書;
405
+
406
+ |営業部門|
407
+ :売上入力;
408
+
409
+ |システム|
410
+ :売上データ;
411
+ :売上伝票;
412
+
413
+ |経理部門|
414
+ :締請求処理;
415
+
416
+ |システム|
417
+ :債権データ;
418
+ :請求書;
419
+
420
+ |財務部門|
421
+ :入金入力;
422
+
423
+ |システム|
424
+ :入金データ;
425
+ :入金伝票;
426
+
427
+ stop
428
+
429
+ @enduml
430
+ ```
431
+
432
+ ### 部門間の連携ポイント
433
+
434
+ ```plantuml
435
+ @startuml
436
+
437
+ rectangle "営業部門" as Sales
438
+ rectangle "調達部門" as Procurement
439
+ rectangle "倉庫部門" as Warehouse
440
+ rectangle "経理部門" as Accounting
441
+ rectangle "財務部門" as Finance
442
+
443
+ Sales --> Procurement : 在庫不足時\n発注依頼
444
+ Sales --> Warehouse : 出荷指示
445
+ Sales --> Accounting : 売上データ
446
+
447
+ Procurement --> Warehouse : 入荷予定
448
+ Procurement --> Accounting : 仕入データ
449
+
450
+ Warehouse --> Sales : 出荷完了報告
451
+ Warehouse --> Procurement : 入荷報告
452
+
453
+ Accounting --> Finance : 請求・支払データ
454
+
455
+ Finance --> Accounting : 入金・出金データ
456
+
457
+ @enduml
458
+ ```
459
+
460
+ | 連携元 | 連携先 | 連携内容 |
461
+ |---|---|---|
462
+ | 営業部門 | 調達部門 | 在庫不足時の発注依頼 |
463
+ | 営業部門 | 倉庫部門 | 出荷指示 |
464
+ | 営業部門 | 経理部門 | 売上データ |
465
+ | 調達部門 | 倉庫部門 | 入荷予定情報 |
466
+ | 調達部門 | 経理部門 | 仕入データ |
467
+ | 倉庫部門 | 営業部門 | 出荷完了報告 |
468
+ | 経理部門 | 財務部門 | 請求・支払データ |
469
+ | 財務部門 | 経理部門 | 入金・出金データ |
470
+
471
+ ---
472
+
473
+ ## 4.3 販売管理システムのアーキテクチャ
474
+
475
+ 本節では、販売管理システム(SMS: Sales Management System)のプロジェクト構成とアーキテクチャについて解説します。
476
+
477
+ ### プロジェクト構成
478
+
479
+ 販売管理システムは `apps/sms` ディレクトリ以下に構築します。
480
+
481
+ ```
482
+ apps/sms/
483
+ ├── backend/
484
+ │ ├── build.gradle.kts # Gradle ビルド設定(Kotlin DSL)
485
+ │ ├── settings.gradle.kts # Gradle 設定
486
+ │ ├── config/ # 品質管理ツール設定
487
+ │ │ ├── checkstyle/
488
+ │ │ │ └── checkstyle.xml
489
+ │ │ ├── pmd/
490
+ │ │ │ └── ruleset.xml
491
+ │ │ └── spotbugs/
492
+ │ │ └── exclude.xml
493
+ │ │
494
+ │ └── src/
495
+ │ ├── main/
496
+ │ │ ├── java/com/example/sms/
497
+ │ │ │ │
498
+ │ │ │ ├── domain/ # ドメイン層(純粋なビジネスロジック)
499
+ │ │ │ │ ├── model/ # ドメインモデル(エンティティ、値オブジェクト)
500
+ │ │ │ │ │ ├── master/ # マスタ関連
501
+ │ │ │ │ │ └── transaction/ # トランザクション関連
502
+ │ │ │ │ ├── type/ # 基本型(通貨、単位、数量等)
503
+ │ │ │ │ └── exception/ # ドメイン例外
504
+ │ │ │ │
505
+ │ │ │ ├── application/ # アプリケーション層
506
+ │ │ │ │ ├── port/
507
+ │ │ │ │ │ ├── in/ # Input Port(ユースケースIF)
508
+ │ │ │ │ │ └── out/ # Output Port(リポジトリIF)
509
+ │ │ │ │ └── service/ # Application Service(ユースケース実装)
510
+ │ │ │ │
511
+ │ │ │ ├── infrastructure/ # インフラストラクチャ層
512
+ │ │ │ │ ├── in/ # Input Adapter
513
+ │ │ │ │ │ └── rest/ # REST API Controller
514
+ │ │ │ │ ├── out/ # Output Adapter
515
+ │ │ │ │ │ └── persistence/ # 永続化(MyBatis Mapper)
516
+ │ │ │ │ └── config/ # 設定クラス
517
+ │ │ │ │
518
+ │ │ │ └── Application.java # メインクラス
519
+ │ │ │
520
+ │ │ └── resources/
521
+ │ │ ├── application.yml # アプリケーション設定
522
+ │ │ ├── db/migration/ # Flyway マイグレーション
523
+ │ │ └── mapper/ # MyBatis XML マッパー
524
+ │ │
525
+ │ └── test/
526
+ │ ├── java/com/example/sms/
527
+ │ │ ├── testsetup/ # テスト基盤クラス
528
+ │ │ │ └── BaseIntegrationTest.java
529
+ │ │ ├── domain/ # ドメイン層テスト
530
+ │ │ ├── application/ # アプリケーション層テスト
531
+ │ │ └── infrastructure/ # インフラ層テスト
532
+ │ │
533
+ │ └── resources/
534
+ │ └── application-test.yml
535
+
536
+ ├── frontend/ # フロントエンド
537
+ │ └── src/
538
+ │ ├── components/ # UI コンポーネント
539
+ │ ├── pages/ # ページコンポーネント
540
+ │ ├── hooks/ # カスタムフック
541
+ │ ├── services/ # API クライアント
542
+ │ └── types/ # 型定義
543
+
544
+ └── docker-compose.yml # Docker 構成
545
+ ```
546
+
547
+ **各レイヤーの責務:**
548
+
549
+ | レイヤー | 責務 |
550
+ |---|---|
551
+ | Domain 層 | ビジネスルールとドメインモデル(外部技術に非依存) |
552
+ | Application 層 | ユースケースの実装とオーケストレーション |
553
+ | Infrastructure 層 | 外部技術との接続(DB、Web 等) |
554
+
555
+ ### ヘキサゴナルアーキテクチャ(ポート&アダプター)
556
+
557
+ 販売管理システムは、ヘキサゴナルアーキテクチャ(Ports and Adapters)を採用します。このアーキテクチャにより、ビジネスロジックを外部の技術的関心事から分離し、テスト容易性と保守性を高めます。
558
+
559
+ ```plantuml
560
+ @startuml
561
+ !define HEXAGON(name) hexagon name
562
+
563
+ skinparam hexagon {
564
+ BackgroundColor<<domain>> LightBlue
565
+ BackgroundColor<<port>> LightGreen
566
+ BackgroundColor<<adapter>> LightYellow
567
+ }
568
+
569
+ package "販売管理システム" {
570
+ ' ドメイン(中心)
571
+ hexagon "ドメイン\n(Domain)" <<domain>> as Domain {
572
+ }
573
+ note bottom of Domain
574
+ エンティティ
575
+ 値オブジェクト
576
+ 集約
577
+ ドメインサービス
578
+ end note
579
+
580
+ ' 入力ポート
581
+ rectangle "入力ポート\n(Input Ports)" <<port>> as InputPort {
582
+ }
583
+ note left of InputPort
584
+ ユースケース
585
+ インターフェース
586
+ end note
587
+
588
+ ' 出力ポート
589
+ rectangle "出力ポート\n(Output Ports)" <<port>> as OutputPort {
590
+ }
591
+ note right of OutputPort
592
+ リポジトリ
593
+ インターフェース
594
+ end note
595
+
596
+ ' プライマリアダプター
597
+ rectangle "プライマリアダプター\n(Primary Adapters)" <<adapter>> as PrimaryAdapter {
598
+ }
599
+ note top of PrimaryAdapter
600
+ REST API
601
+ GraphQL
602
+ CLI
603
+ end note
604
+
605
+ ' セカンダリアダプター
606
+ rectangle "セカンダリアダプター\n(Secondary Adapters)" <<adapter>> as SecondaryAdapter {
607
+ }
608
+ note bottom of SecondaryAdapter
609
+ PostgreSQL
610
+ Redis
611
+ 外部 API
612
+ end note
613
+ }
614
+
615
+ PrimaryAdapter --> InputPort
616
+ InputPort --> Domain
617
+ Domain --> OutputPort
618
+ OutputPort --> SecondaryAdapter
619
+
620
+ @enduml
621
+ ```
622
+
623
+ #### ドメイン(中心)
624
+
625
+ ドメインはシステムの中心に位置し、ビジネスロジックを実装します。
626
+
627
+ ```
628
+ backend/src/domain/
629
+ ├── model/ # ドメインモデル
630
+ │ ├── master/ # マスタ関連
631
+ │ │ ├── Product.ts # 商品
632
+ │ │ ├── Customer.ts # 顧客
633
+ │ │ └── Supplier.ts # 仕入先
634
+ │ ├── sales/ # 販売関連
635
+ │ │ ├── Order.ts # 受注
636
+ │ │ ├── OrderItem.ts # 受注明細
637
+ │ │ ├── Shipment.ts # 出荷
638
+ │ │ └── Sales.ts # 売上
639
+ │ ├── purchase/ # 仕入関連
640
+ │ │ ├── Purchase.ts # 発注
641
+ │ │ └── PurchaseReceipt.ts # 仕入
642
+ │ ├── inventory/ # 在庫関連
643
+ │ │ └── Inventory.ts # 在庫
644
+ │ └── billing/ # 請求関連
645
+ │ ├── Invoice.ts # 請求
646
+ │ └── Receipt.ts # 入金
647
+ ├── type/ # 基本型
648
+ │ ├── Money.ts # 通貨
649
+ │ ├── Quantity.ts # 数量
650
+ │ └── Unit.ts # 単位
651
+ └── exception/ # ドメイン例外
652
+ └── DomainException.ts
653
+ ```
654
+
655
+ #### ポート(入力ポート・出力ポート)
656
+
657
+ ポートは、ドメインと外部世界との境界を定義するインターフェースです。
658
+
659
+ | ポート種別 | 役割 | 例 |
660
+ |---|---|---|
661
+ | 入力ポート | 外部からの要求を受け付ける | ユースケースインターフェース |
662
+ | 出力ポート | 外部リソースへのアクセスを抽象化 | リポジトリインターフェース |
663
+
664
+ ```typescript
665
+ // 入力ポート(ユースケースインターフェース)
666
+ interface CreateOrderUseCase {
667
+ execute(command: CreateOrderCommand): Promise<OrderId>;
668
+ }
669
+
670
+ // 出力ポート(リポジトリインターフェース)
671
+ interface OrderRepository {
672
+ save(order: Order): Promise<void>;
673
+ findById(id: OrderId): Promise<Order | null>;
674
+ findByCustomerId(customerId: CustomerId): Promise<Order[]>;
675
+ }
676
+ ```
677
+
678
+ #### アダプター(プライマリ・セカンダリ)
679
+
680
+ アダプターは、ポートの実装を提供し、外部技術とドメインを接続します。
681
+
682
+ | アダプター種別 | 役割 | 例 |
683
+ |---|---|---|
684
+ | プライマリアダプター | 外部からの入力を処理 | REST コントローラ、CLI |
685
+ | セカンダリアダプター | 外部リソースへの出力を処理 | DB リポジトリ実装、外部 API クライアント |
686
+
687
+ ```
688
+ backend/src/infrastructure/
689
+ ├── in/ # Input Adapter(プライマリアダプター)
690
+ │ └── rest/ # REST API
691
+ │ ├── controller/
692
+ │ │ ├── OrderController.ts
693
+ │ │ ├── ShipmentController.ts
694
+ │ │ └── SalesController.ts
695
+ │ ├── dto/
696
+ │ │ ├── OrderRequest.ts
697
+ │ │ └── OrderResponse.ts
698
+ │ └── exception/
699
+ │ └── RestExceptionHandler.ts
700
+ ├── out/ # Output Adapter(セカンダリアダプター)
701
+ │ └── persistence/ # 永続化
702
+ │ ├── database/ # データベース定義
703
+ │ │ ├── migrations/ # マイグレーション
704
+ │ │ └── seeds/ # シードデータ
705
+ │ ├── mapper/ # O/R Mapper
706
+ │ │ └── OrderMapper.ts
707
+ │ ├── repository/ # Repository実装
708
+ │ │ ├── OrderRepositoryImpl.ts
709
+ │ │ └── CustomerRepositoryImpl.ts
710
+ │ └── typehandler/ # 型ハンドラ
711
+ └── config/ # 設定クラス
712
+ ├── DatabaseConfig.ts
713
+ └── WebConfig.ts
714
+ ```
715
+
716
+ #### 依存性の方向と依存性逆転の原則
717
+
718
+ ヘキサゴナルアーキテクチャでは、すべての依存性がドメインに向かいます。
719
+
720
+ ```plantuml
721
+ @startuml
722
+ skinparam rectangle {
723
+ BackgroundColor<<domain>> LightBlue
724
+ BackgroundColor<<app>> LightGreen
725
+ BackgroundColor<<infra>> LightYellow
726
+ BackgroundColor<<pres>> LightPink
727
+ }
728
+
729
+ rectangle "Presentation\n(プレゼンテーション層)" <<pres>> as Pres
730
+ rectangle "Application\n(アプリケーション層)" <<app>> as App
731
+ rectangle "Domain\n(ドメイン層)" <<domain>> as Domain
732
+ rectangle "Infrastructure\n(インフラストラクチャ層)" <<infra>> as Infra
733
+
734
+ Pres --> App
735
+ App --> Domain
736
+ Infra --> Domain
737
+
738
+ note right of Domain
739
+ 依存性逆転の原則(DIP)
740
+ ・ドメインはインターフェースを定義
741
+ ・インフラは実装を提供
742
+ ・依存の方向は常にドメインへ
743
+ end note
744
+
745
+ @enduml
746
+ ```
747
+
748
+ ### ドメイン駆動設計の適用
749
+
750
+ #### 集約とリポジトリ
751
+
752
+ 販売管理システムの主要な集約を以下に示します。
753
+
754
+ ```plantuml
755
+ @startuml
756
+ !define AGGREGATE(name) rectangle name <<aggregate>>
757
+ !define ENTITY(name) class name <<entity>>
758
+ !define VALUE(name) class name <<value>>
759
+
760
+ skinparam class {
761
+ BackgroundColor<<aggregate>> LightBlue
762
+ BackgroundColor<<entity>> LightGreen
763
+ BackgroundColor<<value>> LightYellow
764
+ }
765
+
766
+ package "受注集約" {
767
+ ENTITY(Order) {
768
+ +orderId: OrderId
769
+ +customerId: CustomerId
770
+ +orderDate: Date
771
+ +status: OrderStatus
772
+ +items: OrderItem[]
773
+ +totalAmount(): Money
774
+ }
775
+
776
+ ENTITY(OrderItem) {
777
+ +itemNo: number
778
+ +productId: ProductId
779
+ +quantity: Quantity
780
+ +unitPrice: Money
781
+ }
782
+
783
+ VALUE(OrderId) {
784
+ +value: string
785
+ }
786
+
787
+ VALUE(OrderStatus) {
788
+ +value: string
789
+ }
790
+
791
+ Order *-- OrderItem
792
+ Order --> OrderId
793
+ Order --> OrderStatus
794
+ }
795
+
796
+ @enduml
797
+ ```
798
+
799
+ | 集約 | ルートエンティティ | 主な責務 |
800
+ |---|---|---|
801
+ | 見積集約 | Estimate | 見積の作成・更新・承認 |
802
+ | 受注集約 | Order | 受注の登録・在庫引当・ステータス管理 |
803
+ | 出荷集約 | Shipment | 出荷指示・出荷実績の管理 |
804
+ | 売上集約 | Sales | 売上計上・請求データ生成 |
805
+
806
+ #### ドメインサービス
807
+
808
+ エンティティに属さないビジネスロジックはドメインサービスとして実装します。
809
+
810
+ ```typescript
811
+ // 価格計算サービス
812
+ class PricingService {
813
+ calculateOrderTotal(
814
+ items: OrderItem[],
815
+ customer: Customer,
816
+ discountPolicy: DiscountPolicy
817
+ ): Money {
818
+ // 顧客別単価の適用
819
+ // 数量割引の計算
820
+ // 消費税の計算
821
+ }
822
+ }
823
+
824
+ // 在庫引当サービス
825
+ class InventoryAllocationService {
826
+ allocate(order: Order): AllocationResult {
827
+ // 在庫の確認
828
+ // 引当処理
829
+ // 不足時の調達依頼
830
+ }
831
+ }
832
+ ```
833
+
834
+ #### アプリケーションサービス
835
+
836
+ アプリケーションサービスは、ユースケースを実装し、トランザクション境界を管理します。
837
+
838
+ ```typescript
839
+ // 受注登録ユースケース
840
+ class CreateOrderService implements CreateOrderUseCase {
841
+ constructor(
842
+ private orderRepository: OrderRepository,
843
+ private customerRepository: CustomerRepository,
844
+ private pricingService: PricingService,
845
+ private inventoryService: InventoryAllocationService
846
+ ) {}
847
+
848
+ async execute(command: CreateOrderCommand): Promise<OrderId> {
849
+ // 1. 顧客の取得
850
+ const customer = await this.customerRepository.findById(command.customerId);
851
+
852
+ // 2. 受注の作成
853
+ const order = Order.create(customer, command.items);
854
+
855
+ // 3. 価格計算
856
+ order.calculateTotal(this.pricingService);
857
+
858
+ // 4. 在庫引当
859
+ await this.inventoryService.allocate(order);
860
+
861
+ // 5. 保存
862
+ await this.orderRepository.save(order);
863
+
864
+ return order.id;
865
+ }
866
+ }
867
+ ```
868
+
869
+ ### API 設計
870
+
871
+ #### RESTful API の基本方針
872
+
873
+ | 原則 | 説明 |
874
+ |---|---|
875
+ | リソース指向 | URL はリソース(名詞)を表す |
876
+ | HTTP メソッド | GET/POST/PUT/DELETE で操作を表現 |
877
+ | ステートレス | サーバーはセッション状態を保持しない |
878
+ | HATEOAS | レスポンスに関連リソースへのリンクを含める |
879
+
880
+ #### エンドポイント設計
881
+
882
+ ```
883
+ # 見積
884
+ GET /api/v1/estimates # 見積一覧
885
+ POST /api/v1/estimates # 見積作成
886
+ GET /api/v1/estimates/{id} # 見積詳細
887
+ PUT /api/v1/estimates/{id} # 見積更新
888
+ DELETE /api/v1/estimates/{id} # 見積削除
889
+ POST /api/v1/estimates/{id}/approve # 見積承認
890
+
891
+ # 受注
892
+ GET /api/v1/orders # 受注一覧
893
+ POST /api/v1/orders # 受注登録
894
+ GET /api/v1/orders/{id} # 受注詳細
895
+ PUT /api/v1/orders/{id} # 受注更新
896
+ POST /api/v1/orders/{id}/confirm # 受注確定
897
+ POST /api/v1/orders/{id}/cancel # 受注キャンセル
898
+
899
+ # 出荷
900
+ GET /api/v1/shipments # 出荷一覧
901
+ POST /api/v1/shipments # 出荷登録
902
+ GET /api/v1/shipments/{id} # 出荷詳細
903
+ POST /api/v1/shipments/{id}/ship # 出荷実行
904
+ POST /api/v1/shipments/{id}/deliver # 配送完了
905
+
906
+ # 売上
907
+ GET /api/v1/sales # 売上一覧
908
+ POST /api/v1/sales # 売上計上
909
+ GET /api/v1/sales/{id} # 売上詳細
910
+ ```
911
+
912
+ ---
913
+
914
+ ## まとめ
915
+
916
+ 本章では、販売管理システムの全体像について解説しました。
917
+
918
+ - **販売管理システムのスコープ**は「見積→受注→出荷→売上」の4つの主要業務
919
+ - **5つの部門**(営業・調達・倉庫・経理・財務)がそれぞれの責務を担う
920
+ - 部門間の連携により、一連の業務フローが成立する
921
+ - **ヘキサゴナルアーキテクチャ**により、ドメインを中心とした疎結合な設計を実現
922
+ - **ドメイン駆動設計**の集約・リポジトリパターンを適用
923
+
924
+ 次章では、販売管理システムの基盤となるマスタ情報の設計について解説します。