@h2nguyen/arc42-node-mcp-server 2.0.0 → 2.1.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 (226) hide show
  1. package/CHANGELOG.md +72 -0
  2. package/README.md +83 -6
  3. package/dist/templates/arc42-reference.d.ts +25 -7
  4. package/dist/templates/arc42-reference.d.ts.map +1 -1
  5. package/dist/templates/arc42-reference.js +96 -47
  6. package/dist/templates/arc42-reference.js.map +1 -1
  7. package/dist/templates/formats/asciidoc/index.d.ts +178 -0
  8. package/dist/templates/formats/asciidoc/index.d.ts.map +1 -0
  9. package/dist/templates/formats/asciidoc/index.js +225 -0
  10. package/dist/templates/formats/asciidoc/index.js.map +1 -0
  11. package/dist/templates/formats/index.d.ts +108 -0
  12. package/dist/templates/formats/index.d.ts.map +1 -0
  13. package/dist/templates/formats/index.js +149 -0
  14. package/dist/templates/formats/index.js.map +1 -0
  15. package/dist/templates/formats/markdown/index.d.ts +172 -0
  16. package/dist/templates/formats/markdown/index.d.ts.map +1 -0
  17. package/dist/templates/formats/markdown/index.js +211 -0
  18. package/dist/templates/formats/markdown/index.js.map +1 -0
  19. package/dist/templates/formats/output-format-factory.d.ts +125 -0
  20. package/dist/templates/formats/output-format-factory.d.ts.map +1 -0
  21. package/dist/templates/formats/output-format-factory.js +166 -0
  22. package/dist/templates/formats/output-format-factory.js.map +1 -0
  23. package/dist/templates/formats/output-format-registry.d.ts +114 -0
  24. package/dist/templates/formats/output-format-registry.d.ts.map +1 -0
  25. package/dist/templates/formats/output-format-registry.js +147 -0
  26. package/dist/templates/formats/output-format-registry.js.map +1 -0
  27. package/dist/templates/formats/output-format-strategy.d.ts +195 -0
  28. package/dist/templates/formats/output-format-strategy.d.ts.map +1 -0
  29. package/dist/templates/formats/output-format-strategy.js +69 -0
  30. package/dist/templates/formats/output-format-strategy.js.map +1 -0
  31. package/dist/templates/index.d.ts +9 -8
  32. package/dist/templates/index.d.ts.map +1 -1
  33. package/dist/templates/index.js +21 -10
  34. package/dist/templates/index.js.map +1 -1
  35. package/dist/templates/locales/cz/index.d.ts +25 -3
  36. package/dist/templates/locales/cz/index.d.ts.map +1 -1
  37. package/dist/templates/locales/cz/index.js +34 -18
  38. package/dist/templates/locales/cz/index.js.map +1 -1
  39. package/dist/templates/locales/cz/templates-asciidoc.d.ts +22 -0
  40. package/dist/templates/locales/cz/templates-asciidoc.d.ts.map +1 -0
  41. package/dist/templates/locales/cz/templates-asciidoc.js +764 -0
  42. package/dist/templates/locales/cz/templates-asciidoc.js.map +1 -0
  43. package/dist/templates/locales/cz/{templates.d.ts → templates-markdown.d.ts} +1 -1
  44. package/dist/templates/locales/cz/templates-markdown.d.ts.map +1 -0
  45. package/dist/templates/locales/cz/{templates.js → templates-markdown.js} +1 -1
  46. package/dist/templates/locales/cz/templates-markdown.js.map +1 -0
  47. package/dist/templates/locales/de/index.d.ts +14 -4
  48. package/dist/templates/locales/de/index.d.ts.map +1 -1
  49. package/dist/templates/locales/de/index.js +22 -25
  50. package/dist/templates/locales/de/index.js.map +1 -1
  51. package/dist/templates/locales/de/templates-asciidoc.d.ts +22 -0
  52. package/dist/templates/locales/de/templates-asciidoc.d.ts.map +1 -0
  53. package/dist/templates/locales/de/templates-asciidoc.js +814 -0
  54. package/dist/templates/locales/de/templates-asciidoc.js.map +1 -0
  55. package/dist/templates/locales/de/{templates.d.ts → templates-markdown.d.ts} +1 -1
  56. package/dist/templates/locales/de/templates-markdown.d.ts.map +1 -0
  57. package/dist/templates/locales/de/{templates.js → templates-markdown.js} +1 -1
  58. package/dist/templates/locales/de/templates-markdown.js.map +1 -0
  59. package/dist/templates/locales/en/index.d.ts +14 -4
  60. package/dist/templates/locales/en/index.d.ts.map +1 -1
  61. package/dist/templates/locales/en/index.js +22 -25
  62. package/dist/templates/locales/en/index.js.map +1 -1
  63. package/dist/templates/locales/en/templates-asciidoc.d.ts +22 -0
  64. package/dist/templates/locales/en/templates-asciidoc.d.ts.map +1 -0
  65. package/dist/templates/locales/en/templates-asciidoc.js +764 -0
  66. package/dist/templates/locales/en/templates-asciidoc.js.map +1 -0
  67. package/dist/templates/locales/en/{templates.d.ts → templates-markdown.d.ts} +1 -1
  68. package/dist/templates/locales/en/templates-markdown.d.ts.map +1 -0
  69. package/dist/templates/locales/en/{templates.js → templates-markdown.js} +1 -1
  70. package/dist/templates/locales/en/templates-markdown.js.map +1 -0
  71. package/dist/templates/locales/es/index.d.ts +15 -10
  72. package/dist/templates/locales/es/index.d.ts.map +1 -1
  73. package/dist/templates/locales/es/index.js +23 -31
  74. package/dist/templates/locales/es/index.js.map +1 -1
  75. package/dist/templates/locales/es/templates-asciidoc.d.ts +22 -0
  76. package/dist/templates/locales/es/templates-asciidoc.d.ts.map +1 -0
  77. package/dist/templates/locales/es/templates-asciidoc.js +764 -0
  78. package/dist/templates/locales/es/templates-asciidoc.js.map +1 -0
  79. package/dist/templates/locales/es/{templates.d.ts → templates-markdown.d.ts} +1 -1
  80. package/dist/templates/locales/es/templates-markdown.d.ts.map +1 -0
  81. package/dist/templates/locales/es/{templates.js → templates-markdown.js} +1 -1
  82. package/dist/templates/locales/es/templates-markdown.js.map +1 -0
  83. package/dist/templates/locales/fr/index.d.ts +14 -9
  84. package/dist/templates/locales/fr/index.d.ts.map +1 -1
  85. package/dist/templates/locales/fr/index.js +22 -30
  86. package/dist/templates/locales/fr/index.js.map +1 -1
  87. package/dist/templates/locales/fr/templates-asciidoc.d.ts +22 -0
  88. package/dist/templates/locales/fr/templates-asciidoc.d.ts.map +1 -0
  89. package/dist/templates/locales/fr/templates-asciidoc.js +764 -0
  90. package/dist/templates/locales/fr/templates-asciidoc.js.map +1 -0
  91. package/dist/templates/locales/fr/{templates.d.ts → templates-markdown.d.ts} +1 -1
  92. package/dist/templates/locales/fr/templates-markdown.d.ts.map +1 -0
  93. package/dist/templates/locales/fr/{templates.js → templates-markdown.js} +1 -1
  94. package/dist/templates/locales/fr/templates-markdown.js.map +1 -0
  95. package/dist/templates/locales/it/index.d.ts +14 -9
  96. package/dist/templates/locales/it/index.d.ts.map +1 -1
  97. package/dist/templates/locales/it/index.js +22 -30
  98. package/dist/templates/locales/it/index.js.map +1 -1
  99. package/dist/templates/locales/it/templates-asciidoc.d.ts +22 -0
  100. package/dist/templates/locales/it/templates-asciidoc.d.ts.map +1 -0
  101. package/dist/templates/locales/it/templates-asciidoc.js +764 -0
  102. package/dist/templates/locales/it/templates-asciidoc.js.map +1 -0
  103. package/dist/templates/locales/it/{templates.d.ts → templates-markdown.d.ts} +1 -1
  104. package/dist/templates/locales/it/templates-markdown.d.ts.map +1 -0
  105. package/dist/templates/locales/it/{templates.js → templates-markdown.js} +1 -1
  106. package/dist/templates/locales/it/templates-markdown.js.map +1 -0
  107. package/dist/templates/locales/language-strategy-factory.d.ts +120 -0
  108. package/dist/templates/locales/language-strategy-factory.d.ts.map +1 -0
  109. package/dist/templates/locales/language-strategy-factory.js +127 -0
  110. package/dist/templates/locales/language-strategy-factory.js.map +1 -0
  111. package/dist/templates/locales/language-strategy.d.ts +16 -12
  112. package/dist/templates/locales/language-strategy.d.ts.map +1 -1
  113. package/dist/templates/locales/language-strategy.js.map +1 -1
  114. package/dist/templates/locales/nl/index.d.ts +14 -9
  115. package/dist/templates/locales/nl/index.d.ts.map +1 -1
  116. package/dist/templates/locales/nl/index.js +22 -30
  117. package/dist/templates/locales/nl/index.js.map +1 -1
  118. package/dist/templates/locales/nl/templates-asciidoc.d.ts +22 -0
  119. package/dist/templates/locales/nl/templates-asciidoc.d.ts.map +1 -0
  120. package/dist/templates/locales/nl/templates-asciidoc.js +764 -0
  121. package/dist/templates/locales/nl/templates-asciidoc.js.map +1 -0
  122. package/dist/templates/locales/nl/{templates.d.ts → templates-markdown.d.ts} +1 -1
  123. package/dist/templates/locales/nl/templates-markdown.d.ts.map +1 -0
  124. package/dist/templates/locales/nl/{templates.js → templates-markdown.js} +1 -1
  125. package/dist/templates/locales/nl/templates-markdown.js.map +1 -0
  126. package/dist/templates/locales/pt/index.d.ts +14 -9
  127. package/dist/templates/locales/pt/index.d.ts.map +1 -1
  128. package/dist/templates/locales/pt/index.js +22 -30
  129. package/dist/templates/locales/pt/index.js.map +1 -1
  130. package/dist/templates/locales/pt/templates-asciidoc.d.ts +22 -0
  131. package/dist/templates/locales/pt/templates-asciidoc.d.ts.map +1 -0
  132. package/dist/templates/locales/pt/templates-asciidoc.js +764 -0
  133. package/dist/templates/locales/pt/templates-asciidoc.js.map +1 -0
  134. package/dist/templates/locales/pt/{templates.d.ts → templates-markdown.d.ts} +1 -1
  135. package/dist/templates/locales/pt/templates-markdown.d.ts.map +1 -0
  136. package/dist/templates/locales/pt/{templates.js → templates-markdown.js} +1 -1
  137. package/dist/templates/locales/pt/templates-markdown.js.map +1 -0
  138. package/dist/templates/locales/ru/index.d.ts +19 -3
  139. package/dist/templates/locales/ru/index.d.ts.map +1 -1
  140. package/dist/templates/locales/ru/index.js +28 -24
  141. package/dist/templates/locales/ru/index.js.map +1 -1
  142. package/dist/templates/locales/ru/templates-asciidoc.d.ts +22 -0
  143. package/dist/templates/locales/ru/templates-asciidoc.d.ts.map +1 -0
  144. package/dist/templates/locales/ru/templates-asciidoc.js +996 -0
  145. package/dist/templates/locales/ru/templates-asciidoc.js.map +1 -0
  146. package/dist/templates/locales/ru/{templates.d.ts → templates-markdown.d.ts} +1 -1
  147. package/dist/templates/locales/ru/templates-markdown.d.ts.map +1 -0
  148. package/dist/templates/locales/ru/{templates.js → templates-markdown.js} +1 -1
  149. package/dist/templates/locales/ru/templates-markdown.js.map +1 -0
  150. package/dist/templates/locales/template-provider.d.ts +22 -10
  151. package/dist/templates/locales/template-provider.d.ts.map +1 -1
  152. package/dist/templates/locales/template-provider.js +53 -14
  153. package/dist/templates/locales/template-provider.js.map +1 -1
  154. package/dist/templates/locales/ukr/index.d.ts +25 -3
  155. package/dist/templates/locales/ukr/index.d.ts.map +1 -1
  156. package/dist/templates/locales/ukr/index.js +34 -18
  157. package/dist/templates/locales/ukr/index.js.map +1 -1
  158. package/dist/templates/locales/ukr/templates-asciidoc.d.ts +22 -0
  159. package/dist/templates/locales/ukr/templates-asciidoc.d.ts.map +1 -0
  160. package/dist/templates/locales/ukr/templates-asciidoc.js +764 -0
  161. package/dist/templates/locales/ukr/templates-asciidoc.js.map +1 -0
  162. package/dist/templates/locales/ukr/{templates.d.ts → templates-markdown.d.ts} +1 -1
  163. package/dist/templates/locales/ukr/templates-markdown.d.ts.map +1 -0
  164. package/dist/templates/locales/ukr/{templates.js → templates-markdown.js} +1 -1
  165. package/dist/templates/locales/ukr/templates-markdown.js.map +1 -0
  166. package/dist/templates/locales/zh/index.d.ts +25 -3
  167. package/dist/templates/locales/zh/index.d.ts.map +1 -1
  168. package/dist/templates/locales/zh/index.js +34 -18
  169. package/dist/templates/locales/zh/index.js.map +1 -1
  170. package/dist/templates/locales/zh/templates-asciidoc.d.ts +22 -0
  171. package/dist/templates/locales/zh/templates-asciidoc.d.ts.map +1 -0
  172. package/dist/templates/locales/zh/templates-asciidoc.js +764 -0
  173. package/dist/templates/locales/zh/templates-asciidoc.js.map +1 -0
  174. package/dist/templates/locales/zh/{templates.d.ts → templates-markdown.d.ts} +1 -1
  175. package/dist/templates/locales/zh/templates-markdown.d.ts.map +1 -0
  176. package/dist/templates/locales/zh/{templates.js → templates-markdown.js} +1 -1
  177. package/dist/templates/locales/zh/templates-markdown.js.map +1 -0
  178. package/dist/tools/arc42-init.d.ts +2 -1
  179. package/dist/tools/arc42-init.d.ts.map +1 -1
  180. package/dist/tools/arc42-init.js +154 -24
  181. package/dist/tools/arc42-init.js.map +1 -1
  182. package/dist/tools/arc42-status.d.ts.map +1 -1
  183. package/dist/tools/arc42-status.js +66 -10
  184. package/dist/tools/arc42-status.js.map +1 -1
  185. package/dist/tools/arc42-workflow-guide.d.ts +1 -0
  186. package/dist/tools/arc42-workflow-guide.d.ts.map +1 -1
  187. package/dist/tools/arc42-workflow-guide.js +16 -14
  188. package/dist/tools/arc42-workflow-guide.js.map +1 -1
  189. package/dist/tools/generate-template.d.ts +1 -0
  190. package/dist/tools/generate-template.d.ts.map +1 -1
  191. package/dist/tools/generate-template.js +16 -5
  192. package/dist/tools/generate-template.js.map +1 -1
  193. package/dist/tools/get-section.d.ts.map +1 -1
  194. package/dist/tools/get-section.js +28 -7
  195. package/dist/tools/get-section.js.map +1 -1
  196. package/dist/tools/update-section.d.ts +1 -1
  197. package/dist/tools/update-section.d.ts.map +1 -1
  198. package/dist/tools/update-section.js +71 -8
  199. package/dist/tools/update-section.js.map +1 -1
  200. package/dist/types.d.ts +2 -0
  201. package/dist/types.d.ts.map +1 -1
  202. package/dist/types.js +1 -0
  203. package/dist/types.js.map +1 -1
  204. package/package.json +1 -1
  205. package/dist/templates/locales/cz/templates.d.ts.map +0 -1
  206. package/dist/templates/locales/cz/templates.js.map +0 -1
  207. package/dist/templates/locales/de/templates.d.ts.map +0 -1
  208. package/dist/templates/locales/de/templates.js.map +0 -1
  209. package/dist/templates/locales/en/templates.d.ts.map +0 -1
  210. package/dist/templates/locales/en/templates.js.map +0 -1
  211. package/dist/templates/locales/es/templates.d.ts.map +0 -1
  212. package/dist/templates/locales/es/templates.js.map +0 -1
  213. package/dist/templates/locales/fr/templates.d.ts.map +0 -1
  214. package/dist/templates/locales/fr/templates.js.map +0 -1
  215. package/dist/templates/locales/it/templates.d.ts.map +0 -1
  216. package/dist/templates/locales/it/templates.js.map +0 -1
  217. package/dist/templates/locales/nl/templates.d.ts.map +0 -1
  218. package/dist/templates/locales/nl/templates.js.map +0 -1
  219. package/dist/templates/locales/pt/templates.d.ts.map +0 -1
  220. package/dist/templates/locales/pt/templates.js.map +0 -1
  221. package/dist/templates/locales/ru/templates.d.ts.map +0 -1
  222. package/dist/templates/locales/ru/templates.js.map +0 -1
  223. package/dist/templates/locales/ukr/templates.d.ts.map +0 -1
  224. package/dist/templates/locales/ukr/templates.js.map +0 -1
  225. package/dist/templates/locales/zh/templates.d.ts.map +0 -1
  226. package/dist/templates/locales/zh/templates.js.map +0 -1
@@ -0,0 +1,764 @@
1
+ /**
2
+ * Ukrainian Templates - AsciiDoc Format
3
+ *
4
+ * Contains all arc42 section templates in Ukrainian using AsciiDoc syntax.
5
+ * Based on the official arc42 templates from vendor/arc42-template.
6
+ *
7
+ * @module templates/locales/ukr/templates-asciidoc
8
+ */
9
+ /**
10
+ * Get the Ukrainian AsciiDoc template for a specific section
11
+ */
12
+ export function getTemplate(section) {
13
+ const templates = {
14
+ '01_introduction_and_goals': getIntroductionAndGoalsTemplate,
15
+ '02_architecture_constraints': getArchitectureConstraintsTemplate,
16
+ '03_context_and_scope': getContextAndScopeTemplate,
17
+ '04_solution_strategy': getSolutionStrategyTemplate,
18
+ '05_building_block_view': getBuildingBlockViewTemplate,
19
+ '06_runtime_view': getRuntimeViewTemplate,
20
+ '07_deployment_view': getDeploymentViewTemplate,
21
+ '08_concepts': getConceptsTemplate,
22
+ '09_architecture_decisions': getArchitectureDecisionsTemplate,
23
+ '10_quality_requirements': getQualityRequirementsTemplate,
24
+ '11_technical_risks': getTechnicalRisksTemplate,
25
+ '12_glossary': getGlossaryTemplate
26
+ };
27
+ return templates[section]();
28
+ }
29
+ function getIntroductionAndGoalsTemplate() {
30
+ return `= 1. Вступ і цілі
31
+
32
+ == Огляд вимог
33
+
34
+ *Мета*: Описує відповідні вимоги та рушійні сили, які повинні враховувати архітектори програмного забезпечення та команда розробників.
35
+
36
+ === Основні вимоги
37
+
38
+ // Перелічіть 3-5 основних функціональних вимог
39
+
40
+ [options="header",cols="1,3,1"]
41
+ |===
42
+ |ID |Вимога |Пріоритет
43
+ |REQ-1 |[Короткий опис] |Високий
44
+ |REQ-2 |[Короткий опис] |Середній
45
+ |===
46
+
47
+ === Функції
48
+
49
+ // Основні функції системи
50
+
51
+ * Функція 1: [Опис]
52
+ * Функція 2: [Опис]
53
+
54
+ == Цілі якості
55
+
56
+ *Мета*: Визначте 3-5 найважливіших цілей якості для архітектури.
57
+
58
+ // На основі ISO 25010, розставте пріоритети таких якостей як:
59
+ // Продуктивність, Безпека, Надійність, Підтримуваність, Зручність використання тощо.
60
+
61
+ [options="header",cols="1,2,3"]
62
+ |===
63
+ |Пріоритет |Ціль якості |Мотивація
64
+ |1 |[напр., Продуктивність] |[Чому це важливо]
65
+ |2 |[напр., Безпека] |[Чому це важливо]
66
+ |3 |[напр., Підтримуваність] |[Чому це важливо]
67
+ |===
68
+
69
+ == Зацікавлені сторони
70
+
71
+ *Мета*: Визначте всіх, хто повинен знати про архітектуру.
72
+
73
+ [options="header",cols="2,2,3"]
74
+ |===
75
+ |Роль/Ім'я |Контакт |Очікування
76
+ |Власник продукту |[Ім'я/Email] |[Що вони очікують від архітектури]
77
+ |Команда розробників |[Назва команди] |[Що їм потрібно знати]
78
+ |Операційна команда |[Команда/Особа] |[Питання розгортання та експлуатації]
79
+ |Кінцеві користувачі |[Тип] |[Очікування щодо користувацького досвіду]
80
+ |===
81
+
82
+ .Додаткова інформація
83
+ Див. link:https://docs.arc42.org/section-1/[Вступ і Цілі] в документації arc42.
84
+ `;
85
+ }
86
+ function getArchitectureConstraintsTemplate() {
87
+ return `= 2. Архітектурні обмеження
88
+
89
+ *Мета*: Документуйте будь-які вимоги, що обмежують архітекторів у їхній свободі проектування та реалізації рішень.
90
+
91
+ == Технічні обмеження
92
+
93
+ [options="header",cols="1,3"]
94
+ |===
95
+ |Обмеження |Пояснення
96
+ |[напр., Має працювати на Linux] |[Чому існує це обмеження]
97
+ |[напр., Java 17 мінімум] |[Організаційна вимога]
98
+ |===
99
+
100
+ == Організаційні обмеження
101
+
102
+ [options="header",cols="1,3"]
103
+ |===
104
+ |Обмеження |Пояснення
105
+ |[напр., Розмір команди: 5 розробників] |[Вплив на архітектуру]
106
+ |[напр., Термін: 6 місяців] |[Обмеження по доставці]
107
+ |===
108
+
109
+ == Конвенції
110
+
111
+ [options="header",cols="1,3"]
112
+ |===
113
+ |Конвенція |Пояснення
114
+ |[напр., Стиль коду: Google Java Style] |[Посилання на керівництво]
115
+ |[напр., Документація: arc42] |[Вимоги до документації]
116
+ |===
117
+
118
+ .Додаткова інформація
119
+ Див. link:https://docs.arc42.org/section-2/[Архітектурні обмеження] в документації arc42.
120
+ `;
121
+ }
122
+ function getContextAndScopeTemplate() {
123
+ return `= 3. Область дії системи та її контекст
124
+
125
+ *Мета*: Відмежовує вашу систему від її комунікаційних партнерів (сусідніх систем і користувачів).
126
+
127
+ == Бізнес контекст
128
+
129
+ *Мета*: Специфікація всіх комунікаційних партнерів (користувачів, ІТ-систем, ...) з поясненнями вхідних і вихідних даних домену.
130
+
131
+ // Додайте контекстну діаграму тут (PlantUML, Mermaid, або зображення)
132
+
133
+ [plantuml, business-context, svg]
134
+ ----
135
+ @startuml
136
+ !include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Context.puml
137
+
138
+ Person(user, "Користувач", "Користувач системи")
139
+ System(system, "Ваша Система", "Опис")
140
+ System_Ext(external, "Зовнішня Система", "Опис")
141
+
142
+ Rel(user, system, "Використовує")
143
+ Rel(system, external, "Викликає")
144
+ @enduml
145
+ ----
146
+
147
+ [options="header",cols="1,2,2"]
148
+ |===
149
+ |Партнер |Вхід |Вихід
150
+ |[Користувач/Система] |[Що вони надсилають] |[Що вони отримують]
151
+ |===
152
+
153
+ == Технічний контекст
154
+
155
+ *Мета*: Специфікація технічних каналів і протоколів між системою та її контекстом.
156
+
157
+ // Технічна інфраструктура з протоколами
158
+
159
+ [options="header",cols="1,1,2"]
160
+ |===
161
+ |Партнер |Канал |Протокол
162
+ |[Назва системи] |[напр., REST API] |[напр., HTTPS, JSON]
163
+ |[Назва системи] |[напр., Черга повідомлень] |[напр., AMQP]
164
+ |===
165
+
166
+ .Додаткова інформація
167
+ Див. link:https://docs.arc42.org/section-3/[Контекст і область дії] в документації arc42.
168
+ `;
169
+ }
170
+ function getSolutionStrategyTemplate() {
171
+ return `= 4. Стратегія рішення
172
+
173
+ *Мета*: Короткий виклад основних рішень і стратегій, які формують архітектуру системи.
174
+
175
+ == Технологічні рішення
176
+
177
+ [options="header",cols="1,2,2"]
178
+ |===
179
+ |Рішення |Вибір |Обґрунтування
180
+ |Мова програмування |[напр., TypeScript] |[Чому цей вибір]
181
+ |Фреймворк |[напр., NestJS] |[Чому цей вибір]
182
+ |База даних |[напр., PostgreSQL] |[Чому цей вибір]
183
+ |===
184
+
185
+ == Декомпозиція верхнього рівня
186
+
187
+ Опишіть структуру верхнього рівня:
188
+
189
+ * [напр., Шарова архітектура]
190
+ * [напр., Мікросервіси]
191
+ * [напр., Подійно-орієнтована]
192
+
193
+ == Стратегії досягнення якості
194
+
195
+ [options="header",cols="1,2"]
196
+ |===
197
+ |Ціль якості |Стратегія досягнення
198
+ |[Продуктивність] |[напр., Кешування, асинхронна обробка]
199
+ |[Безпека] |[напр., OAuth2, шифрування даних]
200
+ |[Підтримуваність] |[напр., Чиста архітектура, комплексні тести]
201
+ |===
202
+
203
+ .Додаткова інформація
204
+ Див. link:https://docs.arc42.org/section-4/[Стратегія рішення] в документації arc42.
205
+ `;
206
+ }
207
+ function getBuildingBlockViewTemplate() {
208
+ return `= 5. Представлення будівельних блоків
209
+
210
+ *Мета*: Статична декомпозиція системи на будівельні блоки з їхніми залежностями.
211
+
212
+ == Рівень 1: Загальна система
213
+
214
+ *Мета*: White box опис показує внутрішню структуру всієї системи.
215
+
216
+ === White Box опис
217
+
218
+ // Додайте діаграму компонентів тут
219
+
220
+ [plantuml, building-blocks-l1, svg]
221
+ ----
222
+ @startuml
223
+ !include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml
224
+
225
+ Container(web, "Веб-додаток", "React", "Інтерфейс користувача")
226
+ Container(api, "API Сервер", "Node.js", "Бізнес-логіка")
227
+ ContainerDb(db, "База даних", "PostgreSQL", "Зберігання даних")
228
+
229
+ Rel(web, api, "Викликає", "REST/JSON")
230
+ Rel(api, db, "Читає/Записує", "SQL")
231
+ @enduml
232
+ ----
233
+
234
+ === Вбудовані будівельні блоки
235
+
236
+ [options="header",cols="1,3"]
237
+ |===
238
+ |Будівельний блок |Опис
239
+ |[Компонент A] |[Відповідальність і призначення]
240
+ |[Компонент B] |[Відповідальність і призначення]
241
+ |===
242
+
243
+ == Рівень 2: [Назва підсистеми]
244
+
245
+ *Мета*: Декомпозиція основних компонентів на менші будівельні блоки.
246
+
247
+ === White Box [Компонент A]
248
+
249
+ // Опишіть внутрішню структуру Компонента A
250
+
251
+ [options="header",cols="1,3"]
252
+ |===
253
+ |Будівельний блок |Опис
254
+ |[Підкомпонент A.1] |[Відповідальність]
255
+ |[Підкомпонент A.2] |[Відповідальність]
256
+ |===
257
+
258
+ .Додаткова інформація
259
+ Див. link:https://docs.arc42.org/section-5/[Представлення будівельних блоків] в документації arc42.
260
+ `;
261
+ }
262
+ function getRuntimeViewTemplate() {
263
+ return `= 6. Рантайм представлення
264
+
265
+ *Мета*: Документуйте поведінку та взаємодію будівельних блоків під час виконання.
266
+
267
+ == Сценарій 1: [напр., Вхід користувача]
268
+
269
+ // Опишіть поведінку під час виконання для ключового сценарію
270
+
271
+ [plantuml, runtime-login, svg]
272
+ ----
273
+ @startuml
274
+ actor Користувач
275
+ participant "Веб-додаток" as Web
276
+ participant "API Сервер" as API
277
+ participant "Сервіс автентифікації" as Auth
278
+ database "БД Користувачів" as DB
279
+
280
+ Користувач -> Web: Введення облікових даних
281
+ Web -> API: POST /auth/login
282
+ API -> Auth: Перевірка облікових даних
283
+ Auth -> DB: Запит користувача
284
+ DB --> Auth: Дані користувача
285
+ Auth --> API: JWT токен
286
+ API --> Web: Успіх + токен
287
+ Web --> Користувач: Панель управління
288
+ @enduml
289
+ ----
290
+
291
+ === Опис
292
+
293
+ . Користувач вводить облікові дані у веб-додатку
294
+ . Веб-додаток надсилає запит на вхід до API сервера
295
+ . API перевіряє облікові дані через сервіс автентифікації
296
+ . У разі успіху повертається JWT токен
297
+
298
+ == Сценарій 2: [напр., Обробка даних]
299
+
300
+ // Задокументуйте інший важливий сценарій виконання
301
+
302
+ === Опис
303
+
304
+ [Опишіть кроки та взаємодії]
305
+
306
+ .Додаткова інформація
307
+ Див. link:https://docs.arc42.org/section-6/[Представлення часу виконання] в документації arc42.
308
+ `;
309
+ }
310
+ function getDeploymentViewTemplate() {
311
+ return `= 7. Представлення розгортання
312
+
313
+ *Мета*: Технічна інфраструктура із середовищами, комп'ютерами, процесорами, топологіями.
314
+
315
+ == Інфраструктура Рівень 1
316
+
317
+ *Мета*: Огляд інфраструктури розгортання.
318
+
319
+ [plantuml, deployment-l1, svg]
320
+ ----
321
+ @startuml
322
+ !include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Deployment.puml
323
+
324
+ Deployment_Node(cloud, "Хмарний провайдер", "AWS/Azure/GCP") {
325
+ Deployment_Node(web_tier, "Веб рівень") {
326
+ Container(web, "Веб-сервер", "nginx", "Статичні файли + зворотний проксі")
327
+ }
328
+ Deployment_Node(app_tier, "Рівень додатку") {
329
+ Container(api, "API Сервер", "Node.js", "Бізнес-логіка")
330
+ }
331
+ Deployment_Node(data_tier, "Рівень даних") {
332
+ ContainerDb(db, "База даних", "PostgreSQL", "Основне сховище")
333
+ }
334
+ }
335
+ @enduml
336
+ ----
337
+
338
+ === Мотивація
339
+
340
+ [Чому обрана ця архітектура розгортання]
341
+
342
+ === Характеристики якості та продуктивності
343
+
344
+ [Як це розгортання підтримує цілі якості]
345
+
346
+ == Інфраструктура Рівень 2
347
+
348
+ *Мета*: Детальний огляд конкретних вузлів розгортання.
349
+
350
+ === [Назва вузла]
351
+
352
+ [options="header",cols="1,3"]
353
+ |===
354
+ |Аспект |Опис
355
+ |Апаратне забезпечення |[напр., 4 vCPU, 16GB RAM]
356
+ |Програмне забезпечення |[напр., Ubuntu 22.04, Docker 24.x]
357
+ |Мережа |[напр., VPC, групи безпеки]
358
+ |===
359
+
360
+ .Додаткова інформація
361
+ Див. link:https://docs.arc42.org/section-7/[Представлення розгортання] в документації arc42.
362
+ `;
363
+ }
364
+ function getConceptsTemplate() {
365
+ return `= 8. Наскрізні концепції
366
+
367
+ *Мета*: Загальні правила та ідеї рішень, які стосуються багатьох будівельних блоків.
368
+
369
+ == Модель домену
370
+
371
+ // Основні концепції домену та їхні зв'язки
372
+
373
+ [plantuml, domain-model, svg]
374
+ ----
375
+ @startuml
376
+ class Користувач {
377
+ +id: UUID
378
+ +email: String
379
+ +name: String
380
+ }
381
+ class Замовлення {
382
+ +id: UUID
383
+ +status: OrderStatus
384
+ +createdAt: DateTime
385
+ }
386
+ Користувач "1" -- "*" Замовлення : створює
387
+ @enduml
388
+ ----
389
+
390
+ == Концепція безпеки
391
+
392
+ === Автентифікація
393
+
394
+ [Опишіть підхід до автентифікації: JWT, OAuth2 тощо]
395
+
396
+ === Авторизація
397
+
398
+ [Опишіть підхід до авторизації: RBAC, ABAC тощо]
399
+
400
+ == Обробка помилок
401
+
402
+ [Опишіть, як обробляються помилки в системі]
403
+
404
+ * [напр., Глобальний обробник помилок]
405
+ * [напр., Структуровані відповіді про помилки]
406
+ * [напр., Стратегія логування помилок]
407
+
408
+ == Логування та моніторинг
409
+
410
+ [options="header",cols="1,2"]
411
+ |===
412
+ |Аспект |Підхід
413
+ |Логування |[напр., Структуровані JSON логи, ELK стек]
414
+ |Метрики |[напр., Prometheus, Grafana]
415
+ |Трасування |[напр., OpenTelemetry, Jaeger]
416
+ |===
417
+
418
+ == Стратегія тестування
419
+
420
+ [options="header",cols="1,2,1"]
421
+ |===
422
+ |Тип |Обсяг |Цільове покриття
423
+ |Модульні тести |Окремі функції/класи |80%
424
+ |Інтеграційні тести |Взаємодія компонентів |Ключові шляхи
425
+ |E2E тести |Повні сценарії користувача |Критичні потоки
426
+ |===
427
+
428
+ .Додаткова інформація
429
+ Див. link:https://docs.arc42.org/section-8/[Наскрізні концепції] в документації arc42.
430
+ `;
431
+ }
432
+ function getArchitectureDecisionsTemplate() {
433
+ return `= 9. Архітектурні рішення
434
+
435
+ *Мета*: Документуйте важливі, дорогі, масштабні або ризиковані архітектурні рішення.
436
+
437
+ == ADR-001: [Назва рішення]
438
+
439
+ === Статус
440
+
441
+ [Запропоновано | Прийнято | Застаріло | Замінено]
442
+
443
+ === Контекст
444
+
445
+ [Опишіть проблему, що мотивує це рішення]
446
+
447
+ === Рішення
448
+
449
+ [Опишіть прийняте рішення]
450
+
451
+ === Наслідки
452
+
453
+ *Позитивні:*
454
+
455
+ * [Перевага 1]
456
+ * [Перевага 2]
457
+
458
+ *Негативні:*
459
+
460
+ * [Недолік 1]
461
+ * [Недолік 2]
462
+
463
+ === Розглянуті альтернативи
464
+
465
+ [options="header",cols="1,2,2"]
466
+ |===
467
+ |Альтернатива |Переваги |Недоліки
468
+ |[Варіант A] |[Переваги] |[Недоліки]
469
+ |[Варіант B] |[Переваги] |[Недоліки]
470
+ |===
471
+
472
+ '''
473
+
474
+ == ADR-002: [Назва рішення]
475
+
476
+ // Використовуйте той самий шаблон для додаткових рішень
477
+
478
+ .Додаткова інформація
479
+ Див. link:https://docs.arc42.org/section-9/[Архітектурні рішення] в документації arc42.
480
+ `;
481
+ }
482
+ function getQualityRequirementsTemplate() {
483
+ return `= 10. Вимоги до якості
484
+
485
+ *Мета*: Конкретні вимоги до якості зі сценаріями для оцінки.
486
+
487
+ == Дерево якості
488
+
489
+ // Візуальне представлення цілей якості та їхньої деталізації
490
+
491
+ [plantuml, quality-tree, svg]
492
+ ----
493
+ @startmindmap
494
+ * Якість
495
+ ** Продуктивність
496
+ *** Час відповіді
497
+ *** Пропускна здатність
498
+ ** Безпека
499
+ *** Автентифікація
500
+ *** Авторизація
501
+ ** Підтримуваність
502
+ *** Модульність
503
+ *** Тестованість
504
+ @endmindmap
505
+ ----
506
+
507
+ == Сценарії якості
508
+
509
+ === Сценарії продуктивності
510
+
511
+ [options="header",cols="1,2,1,1"]
512
+ |===
513
+ |ID |Сценарій |Очікувана відповідь |Пріоритет
514
+ |PERF-1 |Користувач запитує панель управління при нормальному навантаженні |< 200мс |Високий
515
+ |PERF-2 |Система обробляє 1000 одночасних користувачів |Без деградації |Середній
516
+ |===
517
+
518
+ === Сценарії безпеки
519
+
520
+ [options="header",cols="1,2,1,1"]
521
+ |===
522
+ |ID |Сценарій |Очікувана поведінка |Пріоритет
523
+ |SEC-1 |Невдала спроба входу |Блокування облікового запису після 5 спроб |Високий
524
+ |SEC-2 |Неавторизований доступ до API |401 відповідь, журнал аудиту |Високий
525
+ |===
526
+
527
+ === Сценарії підтримуваності
528
+
529
+ [options="header",cols="1,2,1,1"]
530
+ |===
531
+ |ID |Сценарій |Очікуваний час |Пріоритет
532
+ |MAINT-1 |Додати новий тип сутності |< 2 днів розробки |Середній
533
+ |MAINT-2 |Оновити версію залежності |< 4 годин включаючи тести |Середній
534
+ |===
535
+
536
+ .Додаткова інформація
537
+ Див. link:https://docs.arc42.org/section-10/[Вимоги до якості] в документації arc42.
538
+ `;
539
+ }
540
+ function getTechnicalRisksTemplate() {
541
+ return `= 11. Ризики та технічні борги
542
+
543
+ *Мета*: Виявлення та відстеження відомих технічних ризиків та накопиченого технічного боргу.
544
+
545
+ == Технічні ризики
546
+
547
+ [options="header",cols="1,2,1,2"]
548
+ |===
549
+ |Ризик |Опис |Ймовірність |Заходи зменшення
550
+ |[напр., Збій API третьої сторони] |[Зовнішній сервіс, від якого ми залежимо] |Середня |[Circuit breaker, резервний варіант]
551
+ |[напр., Втрата даних] |[Пошкодження бази даних] |Низька |[Резервні копії, реплікація]
552
+ |===
553
+
554
+ == Технічний борг
555
+
556
+ [options="header",cols="1,2,1,1"]
557
+ |===
558
+ |Елемент |Опис |Вплив |Пріоритет
559
+ |[напр., Застаріла автентифікація] |[Стара система автентифікації потребує заміни] |Високий |Середній
560
+ |[напр., Відсутні тести] |[Покриття нижче цільового в модулі X] |Середній |Низький
561
+ |===
562
+
563
+ == Моніторинг ризиків
564
+
565
+ [Опишіть, як відстежуються та переглядаються ризики]
566
+
567
+ * [напр., Щотижневі зустрічі з огляду ризиків]
568
+ * [напр., Автоматизовані сповіщення моніторингу]
569
+
570
+ .Додаткова інформація
571
+ Див. link:https://docs.arc42.org/section-11/[Ризики та технічний борг] в документації arc42.
572
+ `;
573
+ }
574
+ function getGlossaryTemplate() {
575
+ return `= 12. Глосарій
576
+
577
+ *Мета*: Визначте важливі доменні та технічні терміни, що використовуються в архітектурній документації.
578
+
579
+ == Доменні терміни
580
+
581
+ [options="header",cols="1,3"]
582
+ |===
583
+ |Термін |Визначення
584
+ |[Доменний термін 1] |[Чітке, стисле визначення]
585
+ |[Доменний термін 2] |[Чітке, стисле визначення]
586
+ |===
587
+
588
+ == Технічні терміни
589
+
590
+ [options="header",cols="1,3"]
591
+ |===
592
+ |Термін |Визначення
593
+ |[Технічний термін 1] |[Чітке, стисле визначення]
594
+ |[Технічний термін 2] |[Чітке, стисле визначення]
595
+ |===
596
+
597
+ == Абревіатури
598
+
599
+ [options="header",cols="1,3"]
600
+ |===
601
+ |Абревіатура |Значення
602
+ |API |Application Programming Interface (Інтерфейс програмування додатків)
603
+ |JWT |JSON Web Token (JSON веб-токен)
604
+ |REST |Representational State Transfer (Передача репрезентативного стану)
605
+ |===
606
+
607
+ .Додаткова інформація
608
+ Див. link:https://docs.arc42.org/section-12/[Глосарій] в документації arc42.
609
+ `;
610
+ }
611
+ /**
612
+ * Get the Ukrainian workflow guide in AsciiDoc format
613
+ */
614
+ export function getWorkflowGuide() {
615
+ return `= Керівництво з документування архітектури arc42
616
+
617
+ == Огляд
618
+
619
+ Це керівництво допоможе вам документувати архітектуру програмного забезпечення за допомогою шаблону arc42. Шаблон arc42 - це практичний, перевірений шаблон для документування архітектури програмного забезпечення та систем.
620
+
621
+ == Доступні мови
622
+
623
+ Цей arc42 MCP сервер підтримує багато мов для документації:
624
+
625
+ [options="header",cols="1,2,2"]
626
+ |===
627
+ |Код |Мова |Рідна назва
628
+ |EN |Англійська |English
629
+ |DE |Німецька |Deutsch
630
+ |CZ |Чеська |Cestina
631
+ |ES |Іспанська |Espanol
632
+ |FR |Французька |Francais
633
+ |IT |Італійська |Italiano
634
+ |NL |Нідерландська |Nederlands
635
+ |PT |Португальська |Portugues
636
+ |RU |Російська |Русский
637
+ |UKR |Українська |Українська
638
+ |ZH |Китайська |中文
639
+ |===
640
+
641
+ == Початок роботи
642
+
643
+ === Крок 1: Ініціалізація робочого простору
644
+
645
+ Використовуйте інструмент \`arc42-init\` для створення робочого простору документації:
646
+
647
+ [source]
648
+ ----
649
+ arc42-init(projectName: "Мій Проект", language: "UKR")
650
+ ----
651
+
652
+ Ви можете вказати іншу мову за допомогою коду мови ISO.
653
+
654
+ === Крок 2: Перевірка статусу
655
+
656
+ Використовуйте \`arc42-status\` для перегляду поточного стану документації:
657
+
658
+ [source]
659
+ ----
660
+ arc42-status()
661
+ ----
662
+
663
+ === Крок 3: Генерація шаблонів розділів
664
+
665
+ Використовуйте \`generate-template\` для отримання детальних шаблонів для кожного розділу:
666
+
667
+ [source]
668
+ ----
669
+ generate-template(section: "01_introduction_and_goals", language: "UKR")
670
+ ----
671
+
672
+ == 12 розділів arc42
673
+
674
+ . *Вступ і цілі* - Почніть тут! Визначте, що ви будуєте і чому.
675
+ . *Архітектурні обмеження* - Що вам НЕ дозволено робити?
676
+ . *Область дії та контекст* - Що входить, а що ні?
677
+ . *Стратегія рішення* - Високорівневий підхід до вирішення проблеми.
678
+ . *Представлення будівельних блоків* - Статична структура вашої системи.
679
+ . *Рантайм представлення* - Динамічна поведінка та сценарії.
680
+ . *Представлення розгортання* - Як система розгортається та експлуатується?
681
+ . *Наскрізні концепції* - Патерни, що використовуються в системі.
682
+ . *Архітектурні рішення* - Важливі рішення та їх обґрунтування.
683
+ . *Вимоги до якості* - Конкретні сценарії якості.
684
+ . *Ризики та технічний борг* - Що може піти не так?
685
+ . *Глосарій* - Визначте ваші терміни.
686
+
687
+ == Найкращі практики
688
+
689
+ . *Почніть з розділу 1* - Розуміння цілей є фундаментальним
690
+ . *Будьте лаконічними* - arc42 прагматичний, не бюрократичний
691
+ . *Використовуйте діаграми* - Картинка вартує тисячі слів
692
+ . *Документуйте рішення* - Майбутній ви подякує теперішньому
693
+ . *Ітеруйте* - Документація архітектури ніколи не "завершена"
694
+
695
+ == Доступні інструменти
696
+
697
+ * \`arc42-init\` - Ініціалізація робочого простору документації
698
+ * \`arc42-status\` - Перевірка статусу документації
699
+ * \`generate-template\` - Генерація шаблонів розділів
700
+ * \`update-section\` - Оновлення вмісту розділу
701
+ * \`get-section\` - Читання вмісту розділу
702
+ * \`arc42-workflow-guide\` - Показати це керівництво
703
+
704
+ == Ресурси
705
+
706
+ * link:https://arc42.org/[Веб-сайт arc42]
707
+ * link:https://docs.arc42.org/[Документація arc42]
708
+ * link:https://arc42.org/examples[Приклади arc42]
709
+ `;
710
+ }
711
+ /**
712
+ * Get the Ukrainian README content in AsciiDoc format
713
+ */
714
+ export function getReadmeContent(projectName) {
715
+ const name = projectName || 'Проект';
716
+ return `= ${name} - Архітектурна документація
717
+
718
+ Цей каталог містить архітектурну документацію для ${name}, що відповідає шаблону arc42.
719
+
720
+ == Структура
721
+
722
+ * \`sections/\` - Окремі файли розділів AsciiDoc (12 розділів)
723
+ * \`images/\` - Діаграми та зображення
724
+ * \`arc42-documentation.adoc\` - Головна об'єднана документація
725
+ * \`config.yaml\` - Конфігурація
726
+
727
+ == 12 розділів arc42
728
+
729
+ . *Вступ і цілі* - Вимоги, цілі якості, зацікавлені сторони
730
+ . *Архітектурні обмеження* - Технічні та організаційні обмеження
731
+ . *Область дії та контекст* - Бізнес та технічний контекст
732
+ . *Стратегія рішення* - Фундаментальні рішення та стратегії
733
+ . *Представлення будівельних блоків* - Статична декомпозиція
734
+ . *Рантайм представлення* - Динамічна поведінка
735
+ . *Представлення розгортання* - Інфраструктура та розгортання
736
+ . *Наскрізні концепції* - Загальні правила та підходи
737
+ . *Архітектурні рішення* - Важливі рішення (ADR)
738
+ . *Вимоги до якості* - Дерево якості та сценарії
739
+ . *Ризики та технічний борг* - Відомі проблеми та ризики
740
+ . *Глосарій* - Важливі терміни
741
+
742
+ == Початок роботи
743
+
744
+ . Почніть з розділу 1: Вступ і цілі
745
+ . Працюйте над розділами ітеративно
746
+ . Використовуйте діаграми для ілюстрації концепцій
747
+ . Зосередьтеся на рішеннях, а не на деталях реалізації
748
+
749
+ == Генерація документації
750
+
751
+ Використовуйте інструменти MCP для:
752
+
753
+ * Перевірки статусу: \`arc42-status\`
754
+ * Генерації шаблонів: \`generate-template\`
755
+ * Оновлення розділів: \`update-section\`
756
+
757
+ == Ресурси
758
+
759
+ * link:https://arc42.org/[Веб-сайт arc42]
760
+ * link:https://docs.arc42.org/[Документація arc42]
761
+ * link:https://arc42.org/examples[Приклади arc42]
762
+ `;
763
+ }
764
+ //# sourceMappingURL=templates-asciidoc.js.map