@h2nguyen/arc42-node-mcp-server 1.0.3 → 2.0.0
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.
- package/CHANGELOG.md +41 -0
- package/README.md +222 -11
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +28 -72
- package/dist/server.js.map +1 -1
- package/dist/templates/index.d.ts +46 -1
- package/dist/templates/index.d.ts.map +1 -1
- package/dist/templates/index.js +63 -896
- package/dist/templates/index.js.map +1 -1
- package/dist/templates/locales/cz/index.d.ts +9 -0
- package/dist/templates/locales/cz/index.d.ts.map +1 -0
- package/dist/templates/locales/cz/index.js +29 -0
- package/dist/templates/locales/cz/index.js.map +1 -0
- package/dist/templates/locales/cz/sections.d.ts +10 -0
- package/dist/templates/locales/cz/sections.d.ts.map +1 -0
- package/dist/templates/locales/cz/sections.js +39 -0
- package/dist/templates/locales/cz/sections.js.map +1 -0
- package/dist/templates/locales/cz/templates.d.ts +9 -0
- package/dist/templates/locales/cz/templates.d.ts.map +1 -0
- package/dist/templates/locales/cz/templates.js +274 -0
- package/dist/templates/locales/cz/templates.js.map +1 -0
- package/dist/templates/locales/de/index.d.ts +26 -0
- package/dist/templates/locales/de/index.d.ts.map +1 -0
- package/dist/templates/locales/de/index.js +53 -0
- package/dist/templates/locales/de/index.js.map +1 -0
- package/dist/templates/locales/de/sections.d.ts +28 -0
- package/dist/templates/locales/de/sections.d.ts.map +1 -0
- package/dist/templates/locales/de/sections.js +57 -0
- package/dist/templates/locales/de/sections.js.map +1 -0
- package/dist/templates/locales/de/templates.d.ts +22 -0
- package/dist/templates/locales/de/templates.d.ts.map +1 -0
- package/dist/templates/locales/de/templates.js +1060 -0
- package/dist/templates/locales/de/templates.js.map +1 -0
- package/dist/templates/locales/en/index.d.ts +26 -0
- package/dist/templates/locales/en/index.d.ts.map +1 -0
- package/dist/templates/locales/en/index.js +53 -0
- package/dist/templates/locales/en/index.js.map +1 -0
- package/dist/templates/locales/en/sections.d.ts +25 -0
- package/dist/templates/locales/en/sections.d.ts.map +1 -0
- package/dist/templates/locales/en/sections.js +54 -0
- package/dist/templates/locales/en/sections.js.map +1 -0
- package/dist/templates/locales/en/templates.d.ts +22 -0
- package/dist/templates/locales/en/templates.d.ts.map +1 -0
- package/dist/templates/locales/en/templates.js +1060 -0
- package/dist/templates/locales/en/templates.js.map +1 -0
- package/dist/templates/locales/es/index.d.ts +26 -0
- package/dist/templates/locales/es/index.d.ts.map +1 -0
- package/dist/templates/locales/es/index.js +53 -0
- package/dist/templates/locales/es/index.js.map +1 -0
- package/dist/templates/locales/es/sections.d.ts +28 -0
- package/dist/templates/locales/es/sections.d.ts.map +1 -0
- package/dist/templates/locales/es/sections.js +57 -0
- package/dist/templates/locales/es/sections.js.map +1 -0
- package/dist/templates/locales/es/templates.d.ts +22 -0
- package/dist/templates/locales/es/templates.d.ts.map +1 -0
- package/dist/templates/locales/es/templates.js +1060 -0
- package/dist/templates/locales/es/templates.js.map +1 -0
- package/dist/templates/locales/fr/index.d.ts +26 -0
- package/dist/templates/locales/fr/index.d.ts.map +1 -0
- package/dist/templates/locales/fr/index.js +53 -0
- package/dist/templates/locales/fr/index.js.map +1 -0
- package/dist/templates/locales/fr/sections.d.ts +28 -0
- package/dist/templates/locales/fr/sections.d.ts.map +1 -0
- package/dist/templates/locales/fr/sections.js +57 -0
- package/dist/templates/locales/fr/sections.js.map +1 -0
- package/dist/templates/locales/fr/templates.d.ts +22 -0
- package/dist/templates/locales/fr/templates.d.ts.map +1 -0
- package/dist/templates/locales/fr/templates.js +1060 -0
- package/dist/templates/locales/fr/templates.js.map +1 -0
- package/dist/templates/locales/index.d.ts +67 -0
- package/dist/templates/locales/index.d.ts.map +1 -0
- package/dist/templates/locales/index.js +100 -0
- package/dist/templates/locales/index.js.map +1 -0
- package/dist/templates/locales/it/index.d.ts +26 -0
- package/dist/templates/locales/it/index.d.ts.map +1 -0
- package/dist/templates/locales/it/index.js +53 -0
- package/dist/templates/locales/it/index.js.map +1 -0
- package/dist/templates/locales/it/sections.d.ts +28 -0
- package/dist/templates/locales/it/sections.d.ts.map +1 -0
- package/dist/templates/locales/it/sections.js +57 -0
- package/dist/templates/locales/it/sections.js.map +1 -0
- package/dist/templates/locales/it/templates.d.ts +22 -0
- package/dist/templates/locales/it/templates.d.ts.map +1 -0
- package/dist/templates/locales/it/templates.js +1060 -0
- package/dist/templates/locales/it/templates.js.map +1 -0
- package/dist/templates/locales/language-factory.d.ts +97 -0
- package/dist/templates/locales/language-factory.d.ts.map +1 -0
- package/dist/templates/locales/language-factory.js +126 -0
- package/dist/templates/locales/language-factory.js.map +1 -0
- package/dist/templates/locales/language-registry.d.ts +114 -0
- package/dist/templates/locales/language-registry.d.ts.map +1 -0
- package/dist/templates/locales/language-registry.js +146 -0
- package/dist/templates/locales/language-registry.js.map +1 -0
- package/dist/templates/locales/language-strategy.d.ts +126 -0
- package/dist/templates/locales/language-strategy.d.ts.map +1 -0
- package/dist/templates/locales/language-strategy.js +46 -0
- package/dist/templates/locales/language-strategy.js.map +1 -0
- package/dist/templates/locales/nl/index.d.ts +26 -0
- package/dist/templates/locales/nl/index.d.ts.map +1 -0
- package/dist/templates/locales/nl/index.js +53 -0
- package/dist/templates/locales/nl/index.js.map +1 -0
- package/dist/templates/locales/nl/sections.d.ts +28 -0
- package/dist/templates/locales/nl/sections.d.ts.map +1 -0
- package/dist/templates/locales/nl/sections.js +57 -0
- package/dist/templates/locales/nl/sections.js.map +1 -0
- package/dist/templates/locales/nl/templates.d.ts +22 -0
- package/dist/templates/locales/nl/templates.d.ts.map +1 -0
- package/dist/templates/locales/nl/templates.js +1060 -0
- package/dist/templates/locales/nl/templates.js.map +1 -0
- package/dist/templates/locales/pt/index.d.ts +26 -0
- package/dist/templates/locales/pt/index.d.ts.map +1 -0
- package/dist/templates/locales/pt/index.js +53 -0
- package/dist/templates/locales/pt/index.js.map +1 -0
- package/dist/templates/locales/pt/sections.d.ts +28 -0
- package/dist/templates/locales/pt/sections.d.ts.map +1 -0
- package/dist/templates/locales/pt/sections.js +57 -0
- package/dist/templates/locales/pt/sections.js.map +1 -0
- package/dist/templates/locales/pt/templates.d.ts +22 -0
- package/dist/templates/locales/pt/templates.d.ts.map +1 -0
- package/dist/templates/locales/pt/templates.js +1060 -0
- package/dist/templates/locales/pt/templates.js.map +1 -0
- package/dist/templates/locales/ru/index.d.ts +15 -0
- package/dist/templates/locales/ru/index.d.ts.map +1 -0
- package/dist/templates/locales/ru/index.js +41 -0
- package/dist/templates/locales/ru/index.js.map +1 -0
- package/dist/templates/locales/ru/sections.d.ts +28 -0
- package/dist/templates/locales/ru/sections.d.ts.map +1 -0
- package/dist/templates/locales/ru/sections.js +57 -0
- package/dist/templates/locales/ru/sections.js.map +1 -0
- package/dist/templates/locales/ru/templates.d.ts +22 -0
- package/dist/templates/locales/ru/templates.d.ts.map +1 -0
- package/dist/templates/locales/ru/templates.js +664 -0
- package/dist/templates/locales/ru/templates.js.map +1 -0
- package/dist/templates/locales/template-provider.d.ts +122 -0
- package/dist/templates/locales/template-provider.d.ts.map +1 -0
- package/dist/templates/locales/template-provider.js +173 -0
- package/dist/templates/locales/template-provider.js.map +1 -0
- package/dist/templates/locales/ukr/index.d.ts +9 -0
- package/dist/templates/locales/ukr/index.d.ts.map +1 -0
- package/dist/templates/locales/ukr/index.js +29 -0
- package/dist/templates/locales/ukr/index.js.map +1 -0
- package/dist/templates/locales/ukr/sections.d.ts +10 -0
- package/dist/templates/locales/ukr/sections.d.ts.map +1 -0
- package/dist/templates/locales/ukr/sections.js +39 -0
- package/dist/templates/locales/ukr/sections.js.map +1 -0
- package/dist/templates/locales/ukr/templates.d.ts +9 -0
- package/dist/templates/locales/ukr/templates.d.ts.map +1 -0
- package/dist/templates/locales/ukr/templates.js +242 -0
- package/dist/templates/locales/ukr/templates.js.map +1 -0
- package/dist/templates/locales/zh/index.d.ts +9 -0
- package/dist/templates/locales/zh/index.d.ts.map +1 -0
- package/dist/templates/locales/zh/index.js +29 -0
- package/dist/templates/locales/zh/index.js.map +1 -0
- package/dist/templates/locales/zh/sections.d.ts +10 -0
- package/dist/templates/locales/zh/sections.d.ts.map +1 -0
- package/dist/templates/locales/zh/sections.js +39 -0
- package/dist/templates/locales/zh/sections.js.map +1 -0
- package/dist/templates/locales/zh/templates.d.ts +9 -0
- package/dist/templates/locales/zh/templates.d.ts.map +1 -0
- package/dist/templates/locales/zh/templates.js +260 -0
- package/dist/templates/locales/zh/templates.js.map +1 -0
- package/dist/tools/arc42-init.d.ts +8 -2
- package/dist/tools/arc42-init.d.ts.map +1 -1
- package/dist/tools/arc42-init.js +67 -97
- package/dist/tools/arc42-init.js.map +1 -1
- package/dist/tools/arc42-status.d.ts +5 -2
- package/dist/tools/arc42-status.d.ts.map +1 -1
- package/dist/tools/arc42-status.js +47 -18
- package/dist/tools/arc42-status.js.map +1 -1
- package/dist/tools/arc42-workflow-guide.d.ts +6 -3
- package/dist/tools/arc42-workflow-guide.d.ts.map +1 -1
- package/dist/tools/arc42-workflow-guide.js +42 -276
- package/dist/tools/arc42-workflow-guide.js.map +1 -1
- package/dist/tools/generate-template.d.ts +7 -3
- package/dist/tools/generate-template.d.ts.map +1 -1
- package/dist/tools/generate-template.js +44 -35
- package/dist/tools/generate-template.js.map +1 -1
- package/dist/tools/get-section.d.ts +7 -3
- package/dist/tools/get-section.d.ts.map +1 -1
- package/dist/tools/get-section.js +38 -38
- package/dist/tools/get-section.js.map +1 -1
- package/dist/tools/index.d.ts +6 -5
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +14 -20
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/update-section.d.ts +9 -3
- package/dist/tools/update-section.d.ts.map +1 -1
- package/dist/tools/update-section.js +12 -44
- package/dist/tools/update-section.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,1060 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spanish Templates
|
|
3
|
+
*
|
|
4
|
+
* Contains all arc42 section templates in Spanish.
|
|
5
|
+
* Based on the official arc42 Spanish template from vendor/arc42-template/ES/.
|
|
6
|
+
*
|
|
7
|
+
* @module templates/locales/es/templates
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Get the Spanish 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. Introducción y Metas
|
|
31
|
+
|
|
32
|
+
## Vista de Requerimientos
|
|
33
|
+
|
|
34
|
+
**Propósito**: Describe los requerimientos relevantes y las directrices que los arquitectos de software y el equipo de desarrollo deben considerar.
|
|
35
|
+
|
|
36
|
+
### Requerimientos Esenciales
|
|
37
|
+
|
|
38
|
+
<!-- Liste los 3-5 requerimientos funcionales principales -->
|
|
39
|
+
|
|
40
|
+
| ID | Requerimiento | Prioridad |
|
|
41
|
+
|----|---------------|-----------|
|
|
42
|
+
| REQ-1 | [Descripción breve] | Alta |
|
|
43
|
+
| REQ-2 | [Descripción breve] | Media |
|
|
44
|
+
|
|
45
|
+
### Características
|
|
46
|
+
|
|
47
|
+
<!-- Características esenciales del sistema -->
|
|
48
|
+
|
|
49
|
+
- Característica 1: [Descripción]
|
|
50
|
+
- Característica 2: [Descripción]
|
|
51
|
+
|
|
52
|
+
## Metas de Calidad
|
|
53
|
+
|
|
54
|
+
**Propósito**: Las tres a cinco metas de calidad principales para la arquitectura, cuyo cumplimiento es de la mayor importancia para las principales partes interesadas.
|
|
55
|
+
|
|
56
|
+
<!-- Basado en ISO 25010, priorice cualidades como: -->
|
|
57
|
+
<!-- Rendimiento, Seguridad, Fiabilidad, Mantenibilidad, Usabilidad, etc. -->
|
|
58
|
+
|
|
59
|
+
| Prioridad | Meta de Calidad | Motivación |
|
|
60
|
+
|-----------|-----------------|------------|
|
|
61
|
+
| 1 | [ej. Rendimiento] | [Por qué es crítico] |
|
|
62
|
+
| 2 | [ej. Seguridad] | [Por qué es crítico] |
|
|
63
|
+
| 3 | [ej. Mantenibilidad] | [Por qué es crítico] |
|
|
64
|
+
|
|
65
|
+
## Partes Interesadas (Stakeholders)
|
|
66
|
+
|
|
67
|
+
**Propósito**: Vista detallada de las partes interesadas del sistema.
|
|
68
|
+
|
|
69
|
+
| Rol/Nombre | Contacto | Expectativas |
|
|
70
|
+
|------------|----------|--------------|
|
|
71
|
+
| Product Owner | [Nombre/Email] | [Expectativas respecto a la arquitectura] |
|
|
72
|
+
| Equipo de Desarrollo | [Nombre del equipo] | [Qué necesitan saber] |
|
|
73
|
+
| Operaciones | [Equipo/Persona] | [Aspectos de despliegue y operación] |
|
|
74
|
+
| Usuarios Finales | [Tipo] | [Expectativas de experiencia de usuario] |
|
|
75
|
+
|
|
76
|
+
## Criterios de Éxito
|
|
77
|
+
|
|
78
|
+
<!-- ¿Qué define el éxito de este sistema? -->
|
|
79
|
+
|
|
80
|
+
- [ ] Criterio 1
|
|
81
|
+
- [ ] Criterio 2
|
|
82
|
+
- [ ] Criterio 3
|
|
83
|
+
`;
|
|
84
|
+
}
|
|
85
|
+
function getArchitectureConstraintsTemplate() {
|
|
86
|
+
return `# 2. Restricciones de la Arquitectura
|
|
87
|
+
|
|
88
|
+
## Restricciones Técnicas
|
|
89
|
+
|
|
90
|
+
**Restricciones de Hardware**
|
|
91
|
+
|
|
92
|
+
| Restricción | Contexto/Motivación |
|
|
93
|
+
|-------------|---------------------|
|
|
94
|
+
| [ej. Plataforma en la nube] | [Por qué existe esta restricción] |
|
|
95
|
+
|
|
96
|
+
**Restricciones de Software/Tecnología**
|
|
97
|
+
|
|
98
|
+
| Restricción | Contexto/Motivación |
|
|
99
|
+
|-------------|---------------------|
|
|
100
|
+
| [ej. Java 17+ requerido] | [Razón de la restricción] |
|
|
101
|
+
| [ej. PostgreSQL requerido] | [Por qué fue elegido] |
|
|
102
|
+
|
|
103
|
+
**Directrices de Programación**
|
|
104
|
+
|
|
105
|
+
- Lenguaje de programación: [Lenguaje]
|
|
106
|
+
- Framework: [Framework y versión]
|
|
107
|
+
- Bibliotecas: [Bibliotecas obligatorias o prohibidas]
|
|
108
|
+
|
|
109
|
+
## Restricciones Organizacionales
|
|
110
|
+
|
|
111
|
+
**Organización y Estructura**
|
|
112
|
+
|
|
113
|
+
| Restricción | Contexto/Motivación |
|
|
114
|
+
|-------------|---------------------|
|
|
115
|
+
| [ej. Estructura del equipo] | [Cómo afecta la arquitectura] |
|
|
116
|
+
| [ej. Metodología ágil] | [Impacto en el proceso de desarrollo] |
|
|
117
|
+
|
|
118
|
+
**Recursos**
|
|
119
|
+
|
|
120
|
+
- Presupuesto: [Restricciones presupuestarias]
|
|
121
|
+
- Tiempo: [Restricciones de cronograma]
|
|
122
|
+
- Equipo: [Tamaño y habilidades del equipo]
|
|
123
|
+
|
|
124
|
+
## Convenciones
|
|
125
|
+
|
|
126
|
+
**Convenciones de Arquitectura y Diseño**
|
|
127
|
+
|
|
128
|
+
- [ej. Patrón de arquitectura de microservicios]
|
|
129
|
+
- [ej. Diseño de API RESTful]
|
|
130
|
+
- [ej. Diseño dirigido por dominio (DDD)]
|
|
131
|
+
|
|
132
|
+
**Convenciones de Codificación**
|
|
133
|
+
|
|
134
|
+
- Estilo de código: [Enlace a guía de estilo]
|
|
135
|
+
- Documentación: [Estándares de documentación]
|
|
136
|
+
- Pruebas: [Requisitos de pruebas]
|
|
137
|
+
|
|
138
|
+
**Requisitos de Cumplimiento**
|
|
139
|
+
|
|
140
|
+
- [ej. Cumplimiento GDPR]
|
|
141
|
+
- [ej. Regulaciones específicas de la industria]
|
|
142
|
+
- [ej. Estándares de accesibilidad]
|
|
143
|
+
`;
|
|
144
|
+
}
|
|
145
|
+
function getContextAndScopeTemplate() {
|
|
146
|
+
return `# 3. Alcance y Contexto del Sistema
|
|
147
|
+
|
|
148
|
+
## Contexto de Negocio
|
|
149
|
+
|
|
150
|
+
**Propósito**: Muestra el entorno de negocio del sistema y las principales dependencias externas.
|
|
151
|
+
|
|
152
|
+
### Diagrama de Contexto
|
|
153
|
+
|
|
154
|
+
\`\`\`
|
|
155
|
+
[Cree un diagrama mostrando su sistema y sistemas/usuarios externos]
|
|
156
|
+
Puede usar:
|
|
157
|
+
- Diagramas Mermaid
|
|
158
|
+
- PlantUML
|
|
159
|
+
- Arte ASCII
|
|
160
|
+
- O referenciar una imagen en /images/
|
|
161
|
+
\`\`\`
|
|
162
|
+
|
|
163
|
+
### Interfaces Externas
|
|
164
|
+
|
|
165
|
+
| Sistema Externo | Interfaz | Propósito |
|
|
166
|
+
|-----------------|----------|-----------|
|
|
167
|
+
| [Sistema externo 1] | [API/Protocolo] | [Qué datos/funciones se intercambian] |
|
|
168
|
+
| [Tipo de usuario 1] | [UI/API] | [Cómo interactúan los usuarios] |
|
|
169
|
+
|
|
170
|
+
### Procesos de Negocio Soportados
|
|
171
|
+
|
|
172
|
+
<!-- ¿Qué procesos de negocio soporta este sistema? -->
|
|
173
|
+
|
|
174
|
+
1. **Proceso 1**: [Descripción]
|
|
175
|
+
- Actores: [Quién está involucrado]
|
|
176
|
+
- Flujo: [Flujo de alto nivel]
|
|
177
|
+
|
|
178
|
+
2. **Proceso 2**: [Descripción]
|
|
179
|
+
|
|
180
|
+
## Contexto Técnico
|
|
181
|
+
|
|
182
|
+
**Propósito**: Muestra las interfaces técnicas y canales entre el sistema y su entorno.
|
|
183
|
+
|
|
184
|
+
### Interfaces Técnicas
|
|
185
|
+
|
|
186
|
+
| Interfaz | Tecnología | Protocolo | Formato |
|
|
187
|
+
|----------|------------|-----------|---------|
|
|
188
|
+
| [API 1] | [API REST] | [HTTPS] | [JSON] |
|
|
189
|
+
| [Base de datos] | [PostgreSQL] | [TCP/IP] | [SQL] |
|
|
190
|
+
|
|
191
|
+
### Canales y Transmisión
|
|
192
|
+
|
|
193
|
+
| Canal | Tecnología | Descripción |
|
|
194
|
+
|-------|------------|-------------|
|
|
195
|
+
| [Cola de mensajes] | [RabbitMQ] | [Comunicación asíncrona entre servicios] |
|
|
196
|
+
|
|
197
|
+
### Mapeo: Negocio a Técnico
|
|
198
|
+
|
|
199
|
+
| Contexto de Negocio | Realización Técnica |
|
|
200
|
+
|---------------------|---------------------|
|
|
201
|
+
| [Interfaz de usuario] | [React SPA sobre HTTPS] |
|
|
202
|
+
| [Sistema externo A] | [API REST sobre HTTPS] |
|
|
203
|
+
`;
|
|
204
|
+
}
|
|
205
|
+
function getSolutionStrategyTemplate() {
|
|
206
|
+
return `# 4. Estrategia de Solución
|
|
207
|
+
|
|
208
|
+
**Propósito**: Resume las decisiones fundamentales y estrategias de solución que dan forma a la arquitectura del sistema.
|
|
209
|
+
|
|
210
|
+
## Decisiones Clave de Solución
|
|
211
|
+
|
|
212
|
+
### Patrones de Arquitectura
|
|
213
|
+
|
|
214
|
+
| Patrón | Motivación | Consecuencias |
|
|
215
|
+
|--------|------------|---------------|
|
|
216
|
+
| [ej. Microservicios] | [Por qué se eligió este patrón] | [Beneficios y compromisos] |
|
|
217
|
+
|
|
218
|
+
### Decisiones Tecnológicas
|
|
219
|
+
|
|
220
|
+
| Componente | Tecnología | Razón |
|
|
221
|
+
|------------|------------|-------|
|
|
222
|
+
| Backend | [ej. Node.js] | [Por qué fue elegido] |
|
|
223
|
+
| Frontend | [ej. React] | [Razones] |
|
|
224
|
+
| Base de datos | [ej. PostgreSQL] | [Razones] |
|
|
225
|
+
|
|
226
|
+
### Descomposición de Alto Nivel
|
|
227
|
+
|
|
228
|
+
<!-- ¿Cómo está estructurado el sistema en el nivel más alto? -->
|
|
229
|
+
|
|
230
|
+
\`\`\`
|
|
231
|
+
[Diagrama de componentes de alto nivel]
|
|
232
|
+
\`\`\`
|
|
233
|
+
|
|
234
|
+
Descripción:
|
|
235
|
+
- Componente 1: [Propósito y responsabilidad]
|
|
236
|
+
- Componente 2: [Propósito y responsabilidad]
|
|
237
|
+
|
|
238
|
+
## Logro de Metas de Calidad
|
|
239
|
+
|
|
240
|
+
### Mapeo: Metas de Calidad a Enfoques de Solución
|
|
241
|
+
|
|
242
|
+
| Meta de Calidad | Enfoque de Solución |
|
|
243
|
+
|-----------------|---------------------|
|
|
244
|
+
| [Rendimiento] | [Estrategia de caché, procesamiento asíncrono, CDN] |
|
|
245
|
+
| [Seguridad] | [Autenticación, autorización, encriptación] |
|
|
246
|
+
| [Escalabilidad] | [Escalamiento horizontal, balanceo de carga] |
|
|
247
|
+
|
|
248
|
+
### Decisiones Clave de Diseño
|
|
249
|
+
|
|
250
|
+
1. **Decisión 1**: [ej. Arquitectura dirigida por eventos]
|
|
251
|
+
- Razón: [Por qué este enfoque]
|
|
252
|
+
- Impacto: [Cómo ayuda a lograr las metas de calidad]
|
|
253
|
+
|
|
254
|
+
2. **Decisión 2**: [Descripción]
|
|
255
|
+
- Razón: [Justificación]
|
|
256
|
+
- Impacto: [Impacto en las metas de calidad]
|
|
257
|
+
|
|
258
|
+
## Estrategia de Desarrollo
|
|
259
|
+
|
|
260
|
+
- Enfoque de desarrollo: [Ágil, Scrum, etc.]
|
|
261
|
+
- Estrategia de despliegue: [CI/CD, Blue-Green, etc.]
|
|
262
|
+
- Estrategia de pruebas: [Unitarias, Integración, E2E]
|
|
263
|
+
`;
|
|
264
|
+
}
|
|
265
|
+
function getBuildingBlockViewTemplate() {
|
|
266
|
+
return `# 5. Vista de Bloques
|
|
267
|
+
|
|
268
|
+
**Propósito**: Descomposición estática del sistema en bloques de construcción y sus relaciones.
|
|
269
|
+
|
|
270
|
+
## Nivel 1: Contexto del Sistema
|
|
271
|
+
|
|
272
|
+
### Caja Blanca: Sistema General
|
|
273
|
+
|
|
274
|
+
**Propósito**: [Qué hace el sistema]
|
|
275
|
+
|
|
276
|
+
\`\`\`
|
|
277
|
+
[Diagrama de componentes con los principales bloques de construcción]
|
|
278
|
+
\`\`\`
|
|
279
|
+
|
|
280
|
+
**Bloques de Construcción Contenidos**:
|
|
281
|
+
|
|
282
|
+
| Componente | Responsabilidad |
|
|
283
|
+
|------------|-----------------|
|
|
284
|
+
| [Componente 1] | [Qué hace] |
|
|
285
|
+
| [Componente 2] | [Qué hace] |
|
|
286
|
+
|
|
287
|
+
**Interfaces Importantes**:
|
|
288
|
+
|
|
289
|
+
| Interfaz | Descripción |
|
|
290
|
+
|----------|-------------|
|
|
291
|
+
| [API 1] | [Propósito y protocolo] |
|
|
292
|
+
|
|
293
|
+
## Nivel 2: Detalles de Componentes
|
|
294
|
+
|
|
295
|
+
### Componente 1 (Caja Blanca)
|
|
296
|
+
|
|
297
|
+
**Propósito**: [Propósito detallado]
|
|
298
|
+
|
|
299
|
+
**Interfaces**:
|
|
300
|
+
- Entrada: [Qué recibe]
|
|
301
|
+
- Salida: [Qué produce]
|
|
302
|
+
|
|
303
|
+
**Estructura Interna**:
|
|
304
|
+
|
|
305
|
+
\`\`\`
|
|
306
|
+
[Diagrama de módulos/clases internas]
|
|
307
|
+
\`\`\`
|
|
308
|
+
|
|
309
|
+
**Elementos Contenidos**:
|
|
310
|
+
|
|
311
|
+
| Elemento | Responsabilidad |
|
|
312
|
+
|----------|-----------------|
|
|
313
|
+
| [Módulo A] | [Propósito] |
|
|
314
|
+
| [Módulo B] | [Propósito] |
|
|
315
|
+
|
|
316
|
+
### Componente 2 (Caja Blanca)
|
|
317
|
+
|
|
318
|
+
[Estructura similar]
|
|
319
|
+
|
|
320
|
+
## Nivel 3: Vistas de Detalle
|
|
321
|
+
|
|
322
|
+
<!-- Solo incluir Nivel 3 para componentes que necesitan detalle adicional -->
|
|
323
|
+
|
|
324
|
+
### Detalles del Módulo A
|
|
325
|
+
|
|
326
|
+
[Diagramas detallados de clases, estructura de paquetes, etc.]
|
|
327
|
+
`;
|
|
328
|
+
}
|
|
329
|
+
function getRuntimeViewTemplate() {
|
|
330
|
+
return `# 6. Vista de Ejecución
|
|
331
|
+
|
|
332
|
+
**Propósito**: Muestra el comportamiento e interacción de los bloques de construcción en tiempo de ejecución.
|
|
333
|
+
|
|
334
|
+
## Escenarios Importantes
|
|
335
|
+
|
|
336
|
+
### Escenario 1: [Nombre, ej. "Inicio de Sesión de Usuario"]
|
|
337
|
+
|
|
338
|
+
**Descripción**: [Qué sucede en este escenario]
|
|
339
|
+
|
|
340
|
+
**Diagrama de Secuencia**:
|
|
341
|
+
|
|
342
|
+
\`\`\`mermaid
|
|
343
|
+
sequenceDiagram
|
|
344
|
+
participant Usuario
|
|
345
|
+
participant Frontend
|
|
346
|
+
participant API
|
|
347
|
+
participant BaseDeDatos
|
|
348
|
+
|
|
349
|
+
Usuario->>Frontend: Ingresar credenciales
|
|
350
|
+
Frontend->>API: POST /login
|
|
351
|
+
API->>BaseDeDatos: Validar credenciales
|
|
352
|
+
BaseDeDatos-->>API: Datos del usuario
|
|
353
|
+
API-->>Frontend: Token JWT
|
|
354
|
+
Frontend-->>Usuario: Inicio de sesión exitoso
|
|
355
|
+
\`\`\`
|
|
356
|
+
|
|
357
|
+
**Pasos**:
|
|
358
|
+
|
|
359
|
+
1. El usuario ingresa sus credenciales
|
|
360
|
+
2. El frontend envía la solicitud de inicio de sesión
|
|
361
|
+
3. La API valida con la base de datos
|
|
362
|
+
4. Se genera y retorna el token
|
|
363
|
+
5. El usuario está autenticado
|
|
364
|
+
|
|
365
|
+
### Escenario 2: [Nombre]
|
|
366
|
+
|
|
367
|
+
[Estructura similar]
|
|
368
|
+
|
|
369
|
+
## Flujo de Datos
|
|
370
|
+
|
|
371
|
+
### Flujo 1: [Nombre]
|
|
372
|
+
|
|
373
|
+
**Propósito**: [Qué datos fluyen hacia dónde]
|
|
374
|
+
|
|
375
|
+
**Diagrama**:
|
|
376
|
+
|
|
377
|
+
\`\`\`
|
|
378
|
+
[Diagrama de flujo de datos]
|
|
379
|
+
\`\`\`
|
|
380
|
+
|
|
381
|
+
**Descripción**:
|
|
382
|
+
- Paso 1: [Qué sucede]
|
|
383
|
+
- Paso 2: [Qué sucede]
|
|
384
|
+
|
|
385
|
+
## Máquinas de Estado
|
|
386
|
+
|
|
387
|
+
### Máquina de Estado para [Entidad]
|
|
388
|
+
|
|
389
|
+
**Estados**:
|
|
390
|
+
- Estado 1: [Descripción]
|
|
391
|
+
- Estado 2: [Descripción]
|
|
392
|
+
|
|
393
|
+
**Transiciones**:
|
|
394
|
+
|
|
395
|
+
| Desde | Evento | Hacia | Acción |
|
|
396
|
+
|-------|--------|-------|--------|
|
|
397
|
+
| [Estado 1] | [Evento] | [Estado 2] | [Qué sucede] |
|
|
398
|
+
`;
|
|
399
|
+
}
|
|
400
|
+
function getDeploymentViewTemplate() {
|
|
401
|
+
return `# 7. Vista de Despliegue
|
|
402
|
+
|
|
403
|
+
**Propósito**: Describe la infraestructura técnica y cómo se distribuye el software.
|
|
404
|
+
|
|
405
|
+
## Visión General de Infraestructura
|
|
406
|
+
|
|
407
|
+
### Diagrama de Despliegue
|
|
408
|
+
|
|
409
|
+
\`\`\`
|
|
410
|
+
[Diagrama con servidores, contenedores, redes]
|
|
411
|
+
\`\`\`
|
|
412
|
+
|
|
413
|
+
## Entornos
|
|
414
|
+
|
|
415
|
+
### Entorno de Producción
|
|
416
|
+
|
|
417
|
+
**Infraestructura**:
|
|
418
|
+
|
|
419
|
+
| Componente | Tecnología | Configuración |
|
|
420
|
+
|------------|------------|---------------|
|
|
421
|
+
| [Servidor de aplicaciones] | [AWS ECS] | [Especificaciones] |
|
|
422
|
+
| [Base de datos] | [RDS PostgreSQL] | [Especificaciones] |
|
|
423
|
+
| [Caché] | [Redis] | [Especificaciones] |
|
|
424
|
+
|
|
425
|
+
**Red**:
|
|
426
|
+
- VPC: [Configuración]
|
|
427
|
+
- Subredes: [Configuración público/privado]
|
|
428
|
+
- Grupos de Seguridad: [Reglas]
|
|
429
|
+
|
|
430
|
+
### Entorno de Staging
|
|
431
|
+
|
|
432
|
+
[Estructura similar]
|
|
433
|
+
|
|
434
|
+
### Entorno de Desarrollo
|
|
435
|
+
|
|
436
|
+
[Estructura similar]
|
|
437
|
+
|
|
438
|
+
## Estrategia de Despliegue
|
|
439
|
+
|
|
440
|
+
### Pipeline CI/CD
|
|
441
|
+
|
|
442
|
+
1. **Build**: [Qué sucede]
|
|
443
|
+
2. **Pruebas**: [Pruebas automatizadas]
|
|
444
|
+
3. **Despliegue**: [Proceso de despliegue]
|
|
445
|
+
|
|
446
|
+
### Estrategia de Rollback
|
|
447
|
+
|
|
448
|
+
[Cómo se revierten los despliegues]
|
|
449
|
+
|
|
450
|
+
## Estrategia de Escalamiento
|
|
451
|
+
|
|
452
|
+
### Escalamiento Horizontal
|
|
453
|
+
|
|
454
|
+
| Componente | Disparador de Escalamiento | Máx. Instancias |
|
|
455
|
+
|------------|---------------------------|-----------------|
|
|
456
|
+
| [Servidor API] | [CPU > 70%] | [10] |
|
|
457
|
+
|
|
458
|
+
### Escalamiento Vertical
|
|
459
|
+
|
|
460
|
+
[Cuándo y cómo escalar verticalmente]
|
|
461
|
+
|
|
462
|
+
## Monitoreo y Operaciones
|
|
463
|
+
|
|
464
|
+
### Health Checks
|
|
465
|
+
|
|
466
|
+
| Componente | Verificación | Umbral |
|
|
467
|
+
|------------|--------------|--------|
|
|
468
|
+
| [API] | [Endpoint /health] | [Tiempo de respuesta < 1s] |
|
|
469
|
+
|
|
470
|
+
### Logging
|
|
471
|
+
|
|
472
|
+
- Agregación de logs: [ELK, CloudWatch, etc.]
|
|
473
|
+
- Retención de logs: [Política]
|
|
474
|
+
|
|
475
|
+
### Métricas
|
|
476
|
+
|
|
477
|
+
- Métricas clave: [CPU, Memoria, Tasa de solicitudes]
|
|
478
|
+
- Alertas: [Condiciones de alerta]
|
|
479
|
+
`;
|
|
480
|
+
}
|
|
481
|
+
function getConceptsTemplate() {
|
|
482
|
+
return `# 8. Conceptos Transversales
|
|
483
|
+
|
|
484
|
+
**Propósito**: Regulaciones y soluciones generales que son relevantes en múltiples partes del sistema.
|
|
485
|
+
|
|
486
|
+
## Modelos de Dominio
|
|
487
|
+
|
|
488
|
+
### Conceptos Centrales del Dominio
|
|
489
|
+
|
|
490
|
+
\`\`\`
|
|
491
|
+
[Diagrama de modelo de dominio o diagrama de clases]
|
|
492
|
+
\`\`\`
|
|
493
|
+
|
|
494
|
+
**Entidades Clave**:
|
|
495
|
+
|
|
496
|
+
| Entidad | Responsabilidad | Relaciones |
|
|
497
|
+
|---------|-----------------|------------|
|
|
498
|
+
| [Entidad 1] | [Propósito] | [Entidades relacionadas] |
|
|
499
|
+
|
|
500
|
+
## Seguridad
|
|
501
|
+
|
|
502
|
+
### Autenticación
|
|
503
|
+
|
|
504
|
+
- Método: [JWT, OAuth2, etc.]
|
|
505
|
+
- Implementación: [Cómo funciona]
|
|
506
|
+
|
|
507
|
+
### Autorización
|
|
508
|
+
|
|
509
|
+
- Modelo: [RBAC, ABAC, etc.]
|
|
510
|
+
- Roles: [Lista de roles y permisos]
|
|
511
|
+
|
|
512
|
+
### Protección de Datos
|
|
513
|
+
|
|
514
|
+
- Encriptación en reposo: [Cómo]
|
|
515
|
+
- Encriptación en tránsito: [Versión TLS]
|
|
516
|
+
- Manejo de datos sensibles: [Enfoque]
|
|
517
|
+
|
|
518
|
+
## Manejo de Errores
|
|
519
|
+
|
|
520
|
+
### Categorías de Errores
|
|
521
|
+
|
|
522
|
+
| Categoría | Estrategia de Manejo |
|
|
523
|
+
|-----------|---------------------|
|
|
524
|
+
| [Errores de validación] | [Retornar 400 con detalles] |
|
|
525
|
+
| [Errores del sistema] | [Registrar y retornar 500] |
|
|
526
|
+
|
|
527
|
+
### Formato de Respuesta de Error
|
|
528
|
+
|
|
529
|
+
\`\`\`json
|
|
530
|
+
{
|
|
531
|
+
"error": {
|
|
532
|
+
"code": "CODIGO_ERROR",
|
|
533
|
+
"message": "Mensaje legible",
|
|
534
|
+
"details": {}
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
\`\`\`
|
|
538
|
+
|
|
539
|
+
## Logging y Monitoreo
|
|
540
|
+
|
|
541
|
+
### Estrategia de Logging
|
|
542
|
+
|
|
543
|
+
- Niveles de log: [DEBUG, INFO, WARN, ERROR]
|
|
544
|
+
- Logging estructurado: [Formato JSON]
|
|
545
|
+
- IDs de correlación: [Para trazabilidad de solicitudes]
|
|
546
|
+
|
|
547
|
+
### Monitoreo
|
|
548
|
+
|
|
549
|
+
- APM: [Herramienta de monitoreo de rendimiento de aplicaciones]
|
|
550
|
+
- Métricas: [Métricas clave de negocio y técnicas]
|
|
551
|
+
|
|
552
|
+
## Gestión de Configuración
|
|
553
|
+
|
|
554
|
+
### Fuentes de Configuración
|
|
555
|
+
|
|
556
|
+
1. Variables de entorno
|
|
557
|
+
2. Archivos de configuración
|
|
558
|
+
3. Gestión de secretos: [Vault, AWS Secrets Manager]
|
|
559
|
+
|
|
560
|
+
### Configuración por Entorno
|
|
561
|
+
|
|
562
|
+
| Configuración | Dev | Staging | Prod |
|
|
563
|
+
|---------------|-----|---------|------|
|
|
564
|
+
| [Nivel de log] | [DEBUG] | [INFO] | [WARN] |
|
|
565
|
+
|
|
566
|
+
## Estrategia de Pruebas
|
|
567
|
+
|
|
568
|
+
### Niveles de Pruebas
|
|
569
|
+
|
|
570
|
+
| Nivel | Cobertura | Herramientas |
|
|
571
|
+
|-------|-----------|--------------|
|
|
572
|
+
| Pruebas unitarias | [Objetivo %] | [Framework] |
|
|
573
|
+
| Pruebas de integración | [Alcance] | [Herramientas] |
|
|
574
|
+
| Pruebas E2E | [Flujos clave] | [Herramientas] |
|
|
575
|
+
|
|
576
|
+
### Gestión de Datos de Prueba
|
|
577
|
+
|
|
578
|
+
[Cómo se crean y gestionan los datos de prueba]
|
|
579
|
+
|
|
580
|
+
## Conceptos de Desarrollo
|
|
581
|
+
|
|
582
|
+
### Organización del Código
|
|
583
|
+
|
|
584
|
+
- Estructura de paquetes: [Enfoque]
|
|
585
|
+
- Convenciones de nomenclatura: [Estándares]
|
|
586
|
+
|
|
587
|
+
### Build y Gestión de Dependencias
|
|
588
|
+
|
|
589
|
+
- Herramienta de build: [Maven, Gradle, npm, etc.]
|
|
590
|
+
- Gestión de dependencias: [Estrategia]
|
|
591
|
+
|
|
592
|
+
## Conceptos de Operación
|
|
593
|
+
|
|
594
|
+
### Backup y Recuperación
|
|
595
|
+
|
|
596
|
+
- Frecuencia de backup: [Diario, por hora, etc.]
|
|
597
|
+
- Retención: [Política]
|
|
598
|
+
- Procedimiento de recuperación: [Pasos]
|
|
599
|
+
|
|
600
|
+
### Recuperación ante Desastres
|
|
601
|
+
|
|
602
|
+
- RTO: [Objetivo de tiempo de recuperación]
|
|
603
|
+
- RPO: [Objetivo de punto de recuperación]
|
|
604
|
+
- Estrategia DR: [Enfoque]
|
|
605
|
+
`;
|
|
606
|
+
}
|
|
607
|
+
function getArchitectureDecisionsTemplate() {
|
|
608
|
+
return `# 9. Decisiones de Diseño
|
|
609
|
+
|
|
610
|
+
**Propósito**: Documenta decisiones arquitectónicas importantes, costosas, críticas o riesgosas incluyendo su justificación.
|
|
611
|
+
|
|
612
|
+
## Formato ADR
|
|
613
|
+
|
|
614
|
+
Cada decisión sigue esta estructura:
|
|
615
|
+
- **Contexto**: ¿Cuál es el problema que estamos abordando?
|
|
616
|
+
- **Decisión**: Qué decidimos hacer
|
|
617
|
+
- **Consecuencias**: Qué se vuelve más fácil o más difícil
|
|
618
|
+
|
|
619
|
+
## Registro de Decisiones
|
|
620
|
+
|
|
621
|
+
### ADR-001: [Título de la Decisión]
|
|
622
|
+
|
|
623
|
+
**Fecha**: [AAAA-MM-DD]
|
|
624
|
+
**Estado**: [Propuesta | Aceptada | Obsoleta | Reemplazada]
|
|
625
|
+
**Decisores**: [Nombres]
|
|
626
|
+
|
|
627
|
+
**Contexto**:
|
|
628
|
+
|
|
629
|
+
[Describe las fuerzas en juego, técnicas, políticas, sociales y específicas del proyecto. Es probable que estas fuerzas estén en tensión y deben ser identificadas como tales.]
|
|
630
|
+
|
|
631
|
+
**Decisión**:
|
|
632
|
+
|
|
633
|
+
[Describe nuestra respuesta a estas fuerzas. Aquí tomamos nuestra decisión.]
|
|
634
|
+
|
|
635
|
+
**Consecuencias**:
|
|
636
|
+
|
|
637
|
+
Positivas:
|
|
638
|
+
- [Beneficio 1]
|
|
639
|
+
- [Beneficio 2]
|
|
640
|
+
|
|
641
|
+
Negativas:
|
|
642
|
+
- [Compromiso 1]
|
|
643
|
+
- [Compromiso 2]
|
|
644
|
+
|
|
645
|
+
Riesgos:
|
|
646
|
+
- [Riesgo 1 y mitigación]
|
|
647
|
+
|
|
648
|
+
### ADR-002: [Otra Decisión]
|
|
649
|
+
|
|
650
|
+
[Estructura similar]
|
|
651
|
+
|
|
652
|
+
## Categorías de Decisiones
|
|
653
|
+
|
|
654
|
+
### Decisiones Estructurales
|
|
655
|
+
|
|
656
|
+
| Decisión | Justificación | Fecha |
|
|
657
|
+
|----------|---------------|-------|
|
|
658
|
+
| [Microservicios vs Monolito] | [Por qué se eligió] | [Fecha] |
|
|
659
|
+
|
|
660
|
+
### Decisiones Tecnológicas
|
|
661
|
+
|
|
662
|
+
| Componente | Tecnología | Alternativas Consideradas | Por qué se Eligió |
|
|
663
|
+
|------------|------------|--------------------------|-------------------|
|
|
664
|
+
| [Backend] | [Node.js] | [Python, Java] | [Razones] |
|
|
665
|
+
|
|
666
|
+
### Decisiones de Proceso
|
|
667
|
+
|
|
668
|
+
| Decisión | Impacto | Fecha |
|
|
669
|
+
|----------|---------|-------|
|
|
670
|
+
| [Metodología ágil] | [Cómo afecta la arquitectura] | [Fecha] |
|
|
671
|
+
|
|
672
|
+
## Decisiones Obsoletas
|
|
673
|
+
|
|
674
|
+
| Decisión | Fecha de Obsolescencia | Razón | Reemplazada Por |
|
|
675
|
+
|----------|------------------------|-------|-----------------|
|
|
676
|
+
| [Decisión antigua] | [Fecha] | [Por qué obsoleta] | [ADR-XXX] |
|
|
677
|
+
`;
|
|
678
|
+
}
|
|
679
|
+
function getQualityRequirementsTemplate() {
|
|
680
|
+
return `# 10. Requerimientos de Calidad
|
|
681
|
+
|
|
682
|
+
**Propósito**: Define los requerimientos de calidad con escenarios concretos.
|
|
683
|
+
|
|
684
|
+
## Árbol de Calidad
|
|
685
|
+
|
|
686
|
+
### Metas de Calidad de Alto Nivel
|
|
687
|
+
|
|
688
|
+
\`\`\`
|
|
689
|
+
Calidad
|
|
690
|
+
├── Rendimiento
|
|
691
|
+
│ ├── Tiempo de Respuesta
|
|
692
|
+
│ └── Throughput
|
|
693
|
+
├── Seguridad
|
|
694
|
+
│ ├── Autenticación
|
|
695
|
+
│ └── Protección de Datos
|
|
696
|
+
├── Fiabilidad
|
|
697
|
+
│ ├── Disponibilidad
|
|
698
|
+
│ └── Tolerancia a Fallos
|
|
699
|
+
└── Mantenibilidad
|
|
700
|
+
├── Testeabilidad
|
|
701
|
+
└── Modificabilidad
|
|
702
|
+
\`\`\`
|
|
703
|
+
|
|
704
|
+
## Escenarios de Calidad
|
|
705
|
+
|
|
706
|
+
### Escenarios de Rendimiento
|
|
707
|
+
|
|
708
|
+
**Escenario 1: Tiempo de Respuesta en Carga Normal**
|
|
709
|
+
|
|
710
|
+
| Aspecto | Descripción |
|
|
711
|
+
|---------|-------------|
|
|
712
|
+
| Escenario | Usuario consulta datos bajo carga normal |
|
|
713
|
+
| Fuente | Usuario final |
|
|
714
|
+
| Estímulo | Solicitud HTTP a la API |
|
|
715
|
+
| Entorno | Operación normal, 100 usuarios concurrentes |
|
|
716
|
+
| Respuesta | El sistema retorna datos |
|
|
717
|
+
| Medida | Tiempo de respuesta percentil 95 < 200ms |
|
|
718
|
+
|
|
719
|
+
**Escenario 2: Manejo de Carga Pico**
|
|
720
|
+
|
|
721
|
+
| Aspecto | Descripción |
|
|
722
|
+
|---------|-------------|
|
|
723
|
+
| Escenario | Sistema bajo carga pico |
|
|
724
|
+
| Fuente | Múltiples usuarios |
|
|
725
|
+
| Estímulo | 1000 solicitudes concurrentes |
|
|
726
|
+
| Entorno | Horas pico |
|
|
727
|
+
| Respuesta | El sistema procesa todas las solicitudes |
|
|
728
|
+
| Medida | Ninguna solicitud falla, tiempo de respuesta < 1s |
|
|
729
|
+
|
|
730
|
+
### Escenarios de Seguridad
|
|
731
|
+
|
|
732
|
+
**Escenario 3: Intento de Acceso No Autorizado**
|
|
733
|
+
|
|
734
|
+
| Aspecto | Descripción |
|
|
735
|
+
|---------|-------------|
|
|
736
|
+
| Escenario | Usuario no autorizado intenta acceder a recurso protegido |
|
|
737
|
+
| Fuente | Atacante externo |
|
|
738
|
+
| Estímulo | Solicitud HTTP sin token válido |
|
|
739
|
+
| Entorno | Operación normal |
|
|
740
|
+
| Respuesta | El sistema deniega el acceso |
|
|
741
|
+
| Medida | Retorna 401, registra el intento, no se exponen datos |
|
|
742
|
+
|
|
743
|
+
### Escenarios de Fiabilidad
|
|
744
|
+
|
|
745
|
+
**Escenario 4: Recuperación de Fallo de Servicio**
|
|
746
|
+
|
|
747
|
+
| Aspecto | Descripción |
|
|
748
|
+
|---------|-------------|
|
|
749
|
+
| Escenario | La conexión a la base de datos falla |
|
|
750
|
+
| Fuente | Fallo de infraestructura |
|
|
751
|
+
| Estímulo | La base de datos no está disponible |
|
|
752
|
+
| Entorno | Operación normal |
|
|
753
|
+
| Respuesta | El sistema continúa funcionando con datos en caché |
|
|
754
|
+
| Medida | Degradación del servicio < 5%, recuperación < 30s |
|
|
755
|
+
|
|
756
|
+
### Escenarios de Mantenibilidad
|
|
757
|
+
|
|
758
|
+
**Escenario 5: Agregar Nueva Funcionalidad**
|
|
759
|
+
|
|
760
|
+
| Aspecto | Descripción |
|
|
761
|
+
|---------|-------------|
|
|
762
|
+
| Escenario | Desarrollador agrega nuevo endpoint de API |
|
|
763
|
+
| Fuente | Equipo de desarrollo |
|
|
764
|
+
| Estímulo | Nuevo requerimiento |
|
|
765
|
+
| Entorno | Desarrollo |
|
|
766
|
+
| Respuesta | La funcionalidad se agrega |
|
|
767
|
+
| Medida | < 2 días, < 5 archivos modificados, las pruebas pasan |
|
|
768
|
+
|
|
769
|
+
## Priorización de Requerimientos de Calidad
|
|
770
|
+
|
|
771
|
+
| Atributo de Calidad | Prioridad | Objetivo |
|
|
772
|
+
|---------------------|-----------|----------|
|
|
773
|
+
| Disponibilidad | Alta | 99.9% uptime |
|
|
774
|
+
| Tiempo de Respuesta | Alta | < 200ms (p95) |
|
|
775
|
+
| Seguridad | Crítica | Cero brechas de datos |
|
|
776
|
+
| Mantenibilidad | Media | Cobertura de pruebas > 80% |
|
|
777
|
+
| Usabilidad | Media | Éxito en tareas de usuario > 95% |
|
|
778
|
+
`;
|
|
779
|
+
}
|
|
780
|
+
function getTechnicalRisksTemplate() {
|
|
781
|
+
return `# 11. Riesgos y Deuda Técnica
|
|
782
|
+
|
|
783
|
+
**Propósito**: Documenta problemas conocidos, riesgos y deuda técnica.
|
|
784
|
+
|
|
785
|
+
## Riesgos
|
|
786
|
+
|
|
787
|
+
### Matriz de Evaluación de Riesgos
|
|
788
|
+
|
|
789
|
+
| Riesgo | Probabilidad | Impacto | Severidad | Estado |
|
|
790
|
+
|--------|--------------|---------|-----------|--------|
|
|
791
|
+
| [Riesgo 1] | [Alta/Media/Baja] | [Alto/Medio/Bajo] | [Crítica/Alta/Media/Baja] | [Abierto/Mitigado] |
|
|
792
|
+
|
|
793
|
+
### Riesgos Detallados
|
|
794
|
+
|
|
795
|
+
**Riesgo 1: [Título del Riesgo]**
|
|
796
|
+
|
|
797
|
+
- **Descripción**: [Cuál es el riesgo]
|
|
798
|
+
- **Probabilidad**: [Alta/Media/Baja]
|
|
799
|
+
- **Impacto**: [Alto/Medio/Bajo - y qué sucede]
|
|
800
|
+
- **Mitigación**: [Qué estamos haciendo al respecto]
|
|
801
|
+
- **Plan de Contingencia**: [Plan si el riesgo ocurre]
|
|
802
|
+
- **Responsable**: [Quién es responsable]
|
|
803
|
+
- **Estado**: [Abierto/En mitigación/Cerrado]
|
|
804
|
+
|
|
805
|
+
**Riesgo 2: [Título]**
|
|
806
|
+
|
|
807
|
+
[Estructura similar]
|
|
808
|
+
|
|
809
|
+
## Deuda Técnica
|
|
810
|
+
|
|
811
|
+
### Entradas de Deuda
|
|
812
|
+
|
|
813
|
+
| Entrada | Tipo | Impacto | Esfuerzo | Prioridad |
|
|
814
|
+
|---------|------|---------|----------|-----------|
|
|
815
|
+
| [Deuda 1] | [Código/Arquitectura/Pruebas] | [Alto/Medio/Bajo] | [Días] | [1-5] |
|
|
816
|
+
|
|
817
|
+
### Entradas de Deuda Detalladas
|
|
818
|
+
|
|
819
|
+
**Deuda 1: [Título]**
|
|
820
|
+
|
|
821
|
+
- **Descripción**: [Qué necesita ser arreglado]
|
|
822
|
+
- **Por qué existe**: [Cómo sucedió]
|
|
823
|
+
- **Impacto**: [Qué problemas causa]
|
|
824
|
+
- **Solución Propuesta**: [Cómo arreglarlo]
|
|
825
|
+
- **Estimación de Esfuerzo**: [Tiempo requerido]
|
|
826
|
+
- **Prioridad**: [Cuándo deberíamos arreglarlo]
|
|
827
|
+
|
|
828
|
+
### Plan de Reducción de Deuda
|
|
829
|
+
|
|
830
|
+
| Trimestre | Deuda a Abordar | Impacto Esperado |
|
|
831
|
+
|-----------|-----------------|------------------|
|
|
832
|
+
| Q1 2024 | [Entradas 1, 2] | [Mejora en X] |
|
|
833
|
+
|
|
834
|
+
## Problemas Conocidos
|
|
835
|
+
|
|
836
|
+
### Problemas Abiertos
|
|
837
|
+
|
|
838
|
+
| Problema | Severidad | Solución Alternativa | Fecha Objetivo de Corrección |
|
|
839
|
+
|----------|-----------|---------------------|------------------------------|
|
|
840
|
+
| [Problema 1] | [Alta/Media/Baja] | [Si existe] | [Fecha] |
|
|
841
|
+
|
|
842
|
+
### Limitaciones
|
|
843
|
+
|
|
844
|
+
| Limitación | Impacto | Justificación | Planes Futuros |
|
|
845
|
+
|------------|---------|---------------|----------------|
|
|
846
|
+
| [Limitación 1] | [Efecto] | [Por qué existe] | [Cuándo/Si se abordará] |
|
|
847
|
+
|
|
848
|
+
## Vulnerabilidades de Seguridad
|
|
849
|
+
|
|
850
|
+
### Vulnerabilidades Conocidas
|
|
851
|
+
|
|
852
|
+
| CVE | Componente | Severidad | Estado | Mitigación |
|
|
853
|
+
|-----|------------|-----------|--------|------------|
|
|
854
|
+
| [CVE-ID] | [Biblioteca] | [Crítica/Alta/Media] | [Abierta/Corregida] | [Acciones tomadas] |
|
|
855
|
+
|
|
856
|
+
## Problemas de Rendimiento
|
|
857
|
+
|
|
858
|
+
| Problema | Impacto | Solución Alternativa | Plan de Resolución |
|
|
859
|
+
|----------|---------|---------------------|-------------------|
|
|
860
|
+
| [Problema] | [Efecto en usuarios] | [Solución temporal] | [Solución permanente] |
|
|
861
|
+
`;
|
|
862
|
+
}
|
|
863
|
+
function getGlossaryTemplate() {
|
|
864
|
+
return `# 12. Glosario
|
|
865
|
+
|
|
866
|
+
**Propósito**: Define los términos técnicos y de dominio más importantes para asegurar una terminología uniforme.
|
|
867
|
+
|
|
868
|
+
## Términos de Dominio
|
|
869
|
+
|
|
870
|
+
| Término | Definición |
|
|
871
|
+
|---------|------------|
|
|
872
|
+
| [Término de dominio 1] | [Definición clara y precisa] |
|
|
873
|
+
| [Término de dominio 2] | [Definición] |
|
|
874
|
+
|
|
875
|
+
## Términos Técnicos
|
|
876
|
+
|
|
877
|
+
| Término | Definición | Sinónimos |
|
|
878
|
+
|---------|------------|-----------|
|
|
879
|
+
| [Término técnico 1] | [Definición] | [Nombres alternativos] |
|
|
880
|
+
| [Término técnico 2] | [Definición] | [Nombres alternativos] |
|
|
881
|
+
|
|
882
|
+
## Abreviaturas y Acrónimos
|
|
883
|
+
|
|
884
|
+
| Abreviatura | Nombre Completo | Contexto |
|
|
885
|
+
|-------------|-----------------|----------|
|
|
886
|
+
| API | Application Programming Interface | [Cuándo/dónde se usa] |
|
|
887
|
+
| SLA | Service Level Agreement | [Contexto] |
|
|
888
|
+
| JWT | JSON Web Token | [Uso] |
|
|
889
|
+
|
|
890
|
+
## Conceptos de Negocio
|
|
891
|
+
|
|
892
|
+
| Concepto | Descripción | Términos Relacionados |
|
|
893
|
+
|----------|-------------|----------------------|
|
|
894
|
+
| [Concepto 1] | [Explicación detallada] | [Conceptos relacionados] |
|
|
895
|
+
|
|
896
|
+
## Términos Específicos del Sistema
|
|
897
|
+
|
|
898
|
+
| Término | Definición | Ejemplo |
|
|
899
|
+
|---------|------------|---------|
|
|
900
|
+
| [Término del sistema 1] | [Qué significa en este sistema] | [Ejemplo de uso] |
|
|
901
|
+
|
|
902
|
+
## Términos Obsoletos
|
|
903
|
+
|
|
904
|
+
| Término Antiguo | Reemplazado Por | Razón |
|
|
905
|
+
|-----------------|-----------------|-------|
|
|
906
|
+
| [Término antiguo] | [Término nuevo] | [Por qué cambió] |
|
|
907
|
+
|
|
908
|
+
---
|
|
909
|
+
|
|
910
|
+
**Nota**: Mantenga este glosario actualizado a medida que surjan nuevos términos. Enlace a esta sección desde otras partes de la documentación cuando se utilicen estos términos.
|
|
911
|
+
`;
|
|
912
|
+
}
|
|
913
|
+
/**
|
|
914
|
+
* Get the Spanish workflow guide
|
|
915
|
+
*/
|
|
916
|
+
export function getWorkflowGuide() {
|
|
917
|
+
return `# Guía de Flujo de Trabajo para Documentación de Arquitectura arc42
|
|
918
|
+
|
|
919
|
+
## Visión General
|
|
920
|
+
|
|
921
|
+
Esta guía le ayuda a documentar su arquitectura de software utilizando la plantilla arc42. La plantilla arc42 es una plantilla práctica y comprobada para la documentación de arquitecturas de software y sistemas.
|
|
922
|
+
|
|
923
|
+
## Idiomas Disponibles
|
|
924
|
+
|
|
925
|
+
Este servidor MCP arc42 soporta múltiples idiomas para la documentación:
|
|
926
|
+
|
|
927
|
+
| Código | Idioma | Nombre Nativo |
|
|
928
|
+
|--------|--------|---------------|
|
|
929
|
+
| EN | Inglés | English |
|
|
930
|
+
| DE | Alemán | Deutsch |
|
|
931
|
+
| CZ | Checo | Čeština |
|
|
932
|
+
| ES | Español | Español |
|
|
933
|
+
| FR | Francés | Français |
|
|
934
|
+
| IT | Italiano | Italiano |
|
|
935
|
+
| NL | Neerlandés | Nederlands |
|
|
936
|
+
| PT | Portugués | Português |
|
|
937
|
+
| RU | Ruso | Русский |
|
|
938
|
+
| UKR | Ucraniano | Українська |
|
|
939
|
+
| ZH | Chino | 中文 |
|
|
940
|
+
|
|
941
|
+
## Primeros Pasos
|
|
942
|
+
|
|
943
|
+
### Paso 1: Inicializar el Espacio de Trabajo
|
|
944
|
+
|
|
945
|
+
Use la herramienta \`arc42-init\` para crear su espacio de trabajo de documentación:
|
|
946
|
+
|
|
947
|
+
\`\`\`
|
|
948
|
+
arc42-init(projectName: "Mi Proyecto", language: "ES")
|
|
949
|
+
\`\`\`
|
|
950
|
+
|
|
951
|
+
Puede especificar un idioma diferente usando el código de idioma ISO.
|
|
952
|
+
|
|
953
|
+
### Paso 2: Verificar el Estado
|
|
954
|
+
|
|
955
|
+
Use \`arc42-status\` para ver el estado actual de su documentación:
|
|
956
|
+
|
|
957
|
+
\`\`\`
|
|
958
|
+
arc42-status()
|
|
959
|
+
\`\`\`
|
|
960
|
+
|
|
961
|
+
### Paso 3: Generar Plantillas de Secciones
|
|
962
|
+
|
|
963
|
+
Use \`generate-template\` para obtener plantillas detalladas para cada sección:
|
|
964
|
+
|
|
965
|
+
\`\`\`
|
|
966
|
+
generate-template(section: "01_introduction_and_goals", language: "ES")
|
|
967
|
+
\`\`\`
|
|
968
|
+
|
|
969
|
+
## Las 12 Secciones de arc42
|
|
970
|
+
|
|
971
|
+
1. **Introducción y Metas** - ¡Comience aquí! Defina qué está construyendo y por qué.
|
|
972
|
+
2. **Restricciones de la Arquitectura** - ¿Qué NO puede hacer?
|
|
973
|
+
3. **Alcance y Contexto del Sistema** - ¿Qué está dentro y qué está fuera?
|
|
974
|
+
4. **Estrategia de Solución** - Enfoque de alto nivel para resolver el problema.
|
|
975
|
+
5. **Vista de Bloques** - Estructura estática de su sistema.
|
|
976
|
+
6. **Vista de Ejecución** - Comportamiento dinámico y escenarios.
|
|
977
|
+
7. **Vista de Despliegue** - ¿Cómo se despliega y opera?
|
|
978
|
+
8. **Conceptos Transversales** - Patrones utilizados en todo el sistema.
|
|
979
|
+
9. **Decisiones de Diseño** - Decisiones importantes y su justificación.
|
|
980
|
+
10. **Requerimientos de Calidad** - Escenarios concretos de calidad.
|
|
981
|
+
11. **Riesgos y Deuda Técnica** - ¿Qué podría salir mal?
|
|
982
|
+
12. **Glosario** - Defina sus términos.
|
|
983
|
+
|
|
984
|
+
## Mejores Prácticas
|
|
985
|
+
|
|
986
|
+
1. **Comience con la Sección 1** - Entender las metas es fundamental
|
|
987
|
+
2. **Manténgalo breve** - arc42 es pragmático, no burocrático
|
|
988
|
+
3. **Use diagramas** - Una imagen vale más que mil palabras
|
|
989
|
+
4. **Documente las decisiones** - Su yo futuro se lo agradecerá
|
|
990
|
+
5. **Itere** - La documentación de arquitectura nunca está "terminada"
|
|
991
|
+
|
|
992
|
+
## Herramientas Disponibles
|
|
993
|
+
|
|
994
|
+
- \`arc42-init\` - Inicializar espacio de trabajo de documentación
|
|
995
|
+
- \`arc42-status\` - Verificar estado de documentación
|
|
996
|
+
- \`generate-template\` - Generar plantillas de secciones
|
|
997
|
+
- \`update-section\` - Actualizar contenido de secciones
|
|
998
|
+
- \`get-section\` - Leer contenido de secciones
|
|
999
|
+
- \`arc42-workflow-guide\` - Mostrar esta guía
|
|
1000
|
+
|
|
1001
|
+
## Recursos
|
|
1002
|
+
|
|
1003
|
+
- [Sitio web de arc42](https://arc42.org/)
|
|
1004
|
+
- [Documentación de arc42](https://docs.arc42.org/)
|
|
1005
|
+
- [Ejemplos de arc42](https://arc42.org/examples)
|
|
1006
|
+
`;
|
|
1007
|
+
}
|
|
1008
|
+
/**
|
|
1009
|
+
* Get the Spanish README content
|
|
1010
|
+
*/
|
|
1011
|
+
export function getReadmeContent(projectName) {
|
|
1012
|
+
const name = projectName || 'Proyecto';
|
|
1013
|
+
return `# ${name} - Documentación de Arquitectura
|
|
1014
|
+
|
|
1015
|
+
Este directorio contiene la documentación de arquitectura para ${name}, basada en la plantilla arc42.
|
|
1016
|
+
|
|
1017
|
+
## Estructura
|
|
1018
|
+
|
|
1019
|
+
- \`sections/\` - Archivos markdown de secciones individuales (12 secciones)
|
|
1020
|
+
- \`images/\` - Diagramas e imágenes
|
|
1021
|
+
- \`arc42-documentation.md\` - Documentación principal combinada
|
|
1022
|
+
- \`config.yaml\` - Configuración
|
|
1023
|
+
|
|
1024
|
+
## Las 12 Secciones de arc42
|
|
1025
|
+
|
|
1026
|
+
1. **Introducción y Metas** - Requerimientos, metas de calidad, partes interesadas
|
|
1027
|
+
2. **Restricciones de la Arquitectura** - Restricciones técnicas y organizacionales
|
|
1028
|
+
3. **Alcance y Contexto del Sistema** - Contexto de negocio y técnico
|
|
1029
|
+
4. **Estrategia de Solución** - Decisiones y estrategias fundamentales
|
|
1030
|
+
5. **Vista de Bloques** - Descomposición estática
|
|
1031
|
+
6. **Vista de Ejecución** - Comportamiento dinámico
|
|
1032
|
+
7. **Vista de Despliegue** - Infraestructura y despliegue
|
|
1033
|
+
8. **Conceptos Transversales** - Regulaciones y enfoques generales
|
|
1034
|
+
9. **Decisiones de Diseño** - Decisiones importantes (ADRs)
|
|
1035
|
+
10. **Requerimientos de Calidad** - Árbol de calidad y escenarios
|
|
1036
|
+
11. **Riesgos y Deuda Técnica** - Problemas conocidos y riesgos
|
|
1037
|
+
12. **Glosario** - Términos importantes
|
|
1038
|
+
|
|
1039
|
+
## Primeros Pasos
|
|
1040
|
+
|
|
1041
|
+
1. Comience con la Sección 1: Introducción y Metas
|
|
1042
|
+
2. Trabaje las secciones de forma iterativa
|
|
1043
|
+
3. Use diagramas para ilustrar conceptos
|
|
1044
|
+
4. Enfóquese en las decisiones, no en los detalles de implementación
|
|
1045
|
+
|
|
1046
|
+
## Generar Documentación
|
|
1047
|
+
|
|
1048
|
+
Use las herramientas MCP para:
|
|
1049
|
+
- Verificar estado: \`arc42-status\`
|
|
1050
|
+
- Generar plantillas: \`generate-template\`
|
|
1051
|
+
- Actualizar secciones: \`update-section\`
|
|
1052
|
+
|
|
1053
|
+
## Recursos
|
|
1054
|
+
|
|
1055
|
+
- [Sitio web de arc42](https://arc42.org/)
|
|
1056
|
+
- [Documentación de arc42](https://docs.arc42.org/)
|
|
1057
|
+
- [Ejemplos de arc42](https://arc42.org/examples)
|
|
1058
|
+
`;
|
|
1059
|
+
}
|
|
1060
|
+
//# sourceMappingURL=templates.js.map
|