@donartcha/openlag 0.1.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/LICENSE +373 -0
- package/README.md +82 -0
- package/bin/openlag.js +2 -0
- package/dist/assets/arc-4YUHkXo3.js +1 -0
- package/dist/assets/architectureDiagram-3BPJPVTR-WeGmL7HM.js +36 -0
- package/dist/assets/blockDiagram-GPEHLZMM-CtV7ubAx.js +132 -0
- package/dist/assets/c4Diagram-AAUBKEIU-DqYDW5c3.js +10 -0
- package/dist/assets/channel-Tsel3-MK.js +1 -0
- package/dist/assets/chunk-2J33WTMH-BE8P9tjh.js +1 -0
- package/dist/assets/chunk-4BX2VUAB-Bi7oLGF5.js +1 -0
- package/dist/assets/chunk-55IACEB6-D9Xhxp_r.js +1 -0
- package/dist/assets/chunk-727SXJPM-Dz8jKE60.js +206 -0
- package/dist/assets/chunk-AQP2D5EJ-BzmM0IeH.js +231 -0
- package/dist/assets/chunk-FMBD7UC4-Cvl5dpcx.js +15 -0
- package/dist/assets/chunk-ND2GUHAM-Dz2efqnq.js +1 -0
- package/dist/assets/chunk-QZHKN3VN-CwblgSnQ.js +1 -0
- package/dist/assets/classDiagram-4FO5ZUOK-Bgm-_cW8.js +1 -0
- package/dist/assets/classDiagram-v2-Q7XG4LA2-Bgm-_cW8.js +1 -0
- package/dist/assets/cose-bilkent-S5V4N54A-h_A3nZUx.js +1 -0
- package/dist/assets/cytoscape.esm-D_LviqZs.js +331 -0
- package/dist/assets/dagre-BM42HDAG-CN_B2Doz.js +4 -0
- package/dist/assets/defaultLocale-DX6XiGOO.js +1 -0
- package/dist/assets/diagram-2AECGRRQ-C9TAFwjG.js +43 -0
- package/dist/assets/diagram-5GNKFQAL-BThljQLo.js +10 -0
- package/dist/assets/diagram-KO2AKTUF-bRPq25Se.js +3 -0
- package/dist/assets/diagram-LMA3HP47-BubLCIus.js +24 -0
- package/dist/assets/diagram-OG6HWLK6-CJpfhIsS.js +24 -0
- package/dist/assets/erDiagram-TEJ5UH35-6Xkza9wL.js +85 -0
- package/dist/assets/flowDiagram-I6XJVG4X-Bq_to3hX.js +162 -0
- package/dist/assets/ganttDiagram-6RSMTGT7-C3CmvYl7.js +292 -0
- package/dist/assets/gitGraphDiagram-PVQCEYII-C93LTfrl.js +106 -0
- package/dist/assets/graph-CAnANduQ.js +1 -0
- package/dist/assets/index-0RMQQ34p.css +1 -0
- package/dist/assets/index-ByxguSZe.js +729 -0
- package/dist/assets/infoDiagram-5YYISTIA-CMfuwygl.js +2 -0
- package/dist/assets/init-Gi6I4Gst.js +1 -0
- package/dist/assets/ishikawaDiagram-YF4QCWOH-CbJ5ojDF.js +70 -0
- package/dist/assets/journeyDiagram-JHISSGLW-C_Xz8YyT.js +139 -0
- package/dist/assets/kanban-definition-UN3LZRKU-GVv_iRMq.js +89 -0
- package/dist/assets/katex-DkKDou_j.js +257 -0
- package/dist/assets/layout-DGIYPm2g.js +1 -0
- package/dist/assets/linear-BNEtUH2J.js +1 -0
- package/dist/assets/mindmap-definition-RKZ34NQL-DIsL0XSF.js +96 -0
- package/dist/assets/ordinal-Cboi1Yqb.js +1 -0
- package/dist/assets/pieDiagram-4H26LBE5-CSCTSOjk.js +30 -0
- package/dist/assets/quadrantDiagram-W4KKPZXB-CQQ9OaFY.js +7 -0
- package/dist/assets/requirementDiagram-4Y6WPE33-Cjn3la_S.js +84 -0
- package/dist/assets/sankeyDiagram-5OEKKPKP-DoVspvVc.js +40 -0
- package/dist/assets/sequenceDiagram-3UESZ5HK-UsoGmL4w.js +162 -0
- package/dist/assets/stateDiagram-AJRCARHV-DLmf7Dc8.js +1 -0
- package/dist/assets/stateDiagram-v2-BHNVJYJU-jkiDZ_3u.js +1 -0
- package/dist/assets/timeline-definition-PNZ67QCA-HfyRxZ8p.js +120 -0
- package/dist/assets/vennDiagram-CIIHVFJN-B6pM3L33.js +34 -0
- package/dist/assets/wardley-L42UT6IY-B-LdKtrI.js +173 -0
- package/dist/assets/wardleyDiagram-YWT4CUSO-BD45zhOu.js +78 -0
- package/dist/assets/xychartDiagram-2RQKCTM6-zsDMbUiS.js +7 -0
- package/dist/cli/openlag.js +1793 -0
- package/dist/index.html +14 -0
- package/index.html +13 -0
- package/package.json +84 -0
- package/scripts/cli/build.ts +34 -0
- package/scripts/cli/dev.ts +35 -0
- package/scripts/cli/generate.ts +92 -0
- package/scripts/cli/init.ts +427 -0
- package/scripts/cli/lint.ts +29 -0
- package/scripts/cli/openlag.ts +110 -0
- package/scripts/cli/vite-bin.ts +8 -0
- package/scripts/core/parser/diagnostic.ts +34 -0
- package/scripts/core/parser/normalizer.ts +27 -0
- package/scripts/core/parser/scanner.ts +30 -0
- package/scripts/core/parser/schemas.ts +23 -0
- package/scripts/core/parser/types.ts +30 -0
- package/scripts/core/parser.ts +127 -0
- package/scripts/generate-relations.ts +53 -0
- package/scripts/lint/lint-engine.ts +85 -0
- package/scripts/lint/lint-profiles.ts +49 -0
- package/scripts/lint/lint-rules.ts +174 -0
- package/scripts/lint/lint-types.ts +43 -0
- package/src/App.tsx +164 -0
- package/src/components/DocumentationView.tsx +905 -0
- package/src/components/GraphView.tsx +529 -0
- package/src/components/GuideView.tsx +535 -0
- package/src/components/ImpactView.tsx +365 -0
- package/src/components/MarkdownRenderer.tsx +120 -0
- package/src/components/OrphansView.tsx +360 -0
- package/src/components/SettingsView.tsx +146 -0
- package/src/core/generated/relation-definitions.ts +622 -0
- package/src/core/graph/GraphQueryLayer.ts +194 -0
- package/src/core/registry/ArtifactRegistry.ts +19 -0
- package/src/core/registry/RelationRegistry.ts +27 -0
- package/src/core/semantic/artifact-layers.ts +43 -0
- package/src/core/semantic/ownership-rules.ts +13 -0
- package/src/core/semantic/types.ts +11 -0
- package/src/index.css +121 -0
- package/src/lib/reportUtils.ts +59 -0
- package/src/main.tsx +10 -0
- package/src/store.ts +146 -0
- package/src/types.ts +77 -0
- package/vite.config.ts +31 -0
|
@@ -0,0 +1,535 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { BookOpen, FileCode, GitBranch, Share2, Layers, AlertTriangle, CheckCircle2, Terminal, Info, Globe, Link2, Unlink } from 'lucide-react';
|
|
3
|
+
import { useStore } from '../store';
|
|
4
|
+
|
|
5
|
+
export const GuideView: React.FC = () => {
|
|
6
|
+
const { settings } = useStore();
|
|
7
|
+
const lang = settings.language || 'EN';
|
|
8
|
+
|
|
9
|
+
const t = {
|
|
10
|
+
EN: {
|
|
11
|
+
title: "Management Guide",
|
|
12
|
+
desc: "Instructions for maintaining the architectural graph, documenting artifacts, and managing the project lifecycle according to OpenLAG v0.1 Specification.",
|
|
13
|
+
langBtn: "Switch to Spanish",
|
|
14
|
+
layerTaxonomy: "Layer Taxonomy & Artifacts",
|
|
15
|
+
layerTaxonomyDesc: "OpenLAG classifies artifacts into semantic layers to understand their abstraction level and valid relations.",
|
|
16
|
+
businessLayer: "Business Layer",
|
|
17
|
+
businessLayerDesc: "Defines what to build and why. Align business goals without dictating implementation.",
|
|
18
|
+
architectureLayer: "Architecture Layer",
|
|
19
|
+
architectureLayerDesc: "Defines technical design and constraints of the system.",
|
|
20
|
+
implementationLayer: "Implementation Layer",
|
|
21
|
+
implementationLayerDesc: "Models code, tests, databases and its traceability.",
|
|
22
|
+
operationsLayer: "Operations Layer",
|
|
23
|
+
operationsLayerDesc: "Models infrastructure, deployment, and runtime health observability.",
|
|
24
|
+
docsLayer: "Documentation Layer",
|
|
25
|
+
docsLayerDesc: "Cross-cutting knowledge context.",
|
|
26
|
+
relations: "Relationship Semantics & Strength",
|
|
27
|
+
relationsDesc: "Relations define a semantic weight (Strength) and category purpose between artifacts.",
|
|
28
|
+
strongRelations: "Strong",
|
|
29
|
+
strongRelationsDesc: "Direct coupling: IMPLEMENTS, TESTS, DEPENDS_ON, BLOCKS, BREAKS, DEFINES, VALIDATES, REPLACES",
|
|
30
|
+
mediumRelations: "Medium",
|
|
31
|
+
mediumRelationsDesc: "Descriptive/Flow: DERIVES_FROM, USES, IMPACTS, JUSTIFIES, REFINES, MONITORS, DEPLOYS",
|
|
32
|
+
weakRelations: "Weak",
|
|
33
|
+
weakRelationsDesc: "Semantic/Loose: RELATES_TO, DOCUMENTS",
|
|
34
|
+
changeTypes: "Change Types",
|
|
35
|
+
changeTypesDesc: "Defines the nature of an architectural change or modification:",
|
|
36
|
+
error: { label: "ERROR", desc: "Fixes for bugs or critical technical debt." },
|
|
37
|
+
feature: { label: "FEATURE", desc: "New capabilities impacting architecture." },
|
|
38
|
+
evolution: { label: "EVOLUTION", desc: "Gradual improvements, security or compliance updates." },
|
|
39
|
+
refactor: { label: "REFACTOR", desc: "Code restructurings without changing external behavior." },
|
|
40
|
+
adaptation: { label: "ADAPTATION", desc: "Changes to adjust to new environmental/integration constraints." },
|
|
41
|
+
frontmatter: "Official Markdown Format",
|
|
42
|
+
frontmatterDesc: "Each artifact requires a YAML frontmatter. Mandatory fields: id, type, status, title.",
|
|
43
|
+
statusFlow: "Lifecycle Status Flow",
|
|
44
|
+
statusFlowDesc: "Evolution of artifacts. The system tolerates missing relations in 'draft', but expects full traceability in 'closed'.",
|
|
45
|
+
versions: "Project & System Versions",
|
|
46
|
+
versionsDesc: "The docs/versions/ directory controls the global timeline and component versions.",
|
|
47
|
+
bestPractices: "Best Practices & ID Conventions",
|
|
48
|
+
bestPracticesDesc: "IDs must be unique and stable (e.g. REQ-001, CODE-023). Prefix defines the logical type.",
|
|
49
|
+
tutorialTitle: "Step-by-Step Tutorial",
|
|
50
|
+
tutorialDesc: "Follow these steps to structure a complete project using the OpenLAG specification.",
|
|
51
|
+
step1Title: "Step 1: The Global Versions",
|
|
52
|
+
step1Desc: "Always start by defining global versions of the project creating separate files inside docs/versions/ (e.g. docs/versions/v-1.md).",
|
|
53
|
+
step2Title: "Step 2: Business Requirements",
|
|
54
|
+
step2Desc: "Create the Business Layer artifacts (e.g., REQ-001) defining what needs to be built.",
|
|
55
|
+
step3Title: "Step 3: Architecture & Design",
|
|
56
|
+
step3Desc: "Define the Architecture Layer (e.g., DESIGN-001) and link it to the Business requirement.",
|
|
57
|
+
step4Title: "Step 4: Implementation & Operations",
|
|
58
|
+
step4Desc: "Finally, define Code and Infra (e.g., CODE-001, INFRA-001) linking them back up the chain.",
|
|
59
|
+
step5Title: "Step 5: System Versions",
|
|
60
|
+
step5Desc: "Document external libraries and components in individual files inside docs/versions/ (e.g. sv-lib-1.md) using SYSTEM_VERSION artifacts.",
|
|
61
|
+
step6Title: "Step 6: Changes & Tracking",
|
|
62
|
+
step6Desc: "Add CHANGE type artifacts inside docs/changes/ to govern modifications, bugs, or major refactors affecting the graph.",
|
|
63
|
+
},
|
|
64
|
+
ES: {
|
|
65
|
+
title: "Guía de Gestión",
|
|
66
|
+
desc: "Instrucciones para mantener el grafo arquitectónico, documentar artefactos y gestionar el ciclo de vida según la Especificación OpenLAG v0.1.",
|
|
67
|
+
langBtn: "Cambiar a Inglés",
|
|
68
|
+
layerTaxonomy: "Taxonomía de Capas y Artefactos",
|
|
69
|
+
layerTaxonomyDesc: "OpenLAG clasifica los artefactos en capas semánticas para entender su nivel de abstracción y relaciones válidas.",
|
|
70
|
+
businessLayer: "Business Layer",
|
|
71
|
+
businessLayerDesc: "Define qué construir y por qué. Alinea negocio sin dictar implementación.",
|
|
72
|
+
architectureLayer: "Architecture Layer",
|
|
73
|
+
architectureLayerDesc: "Define el diseño y los límites técnicos del sistema.",
|
|
74
|
+
implementationLayer: "Implementation Layer",
|
|
75
|
+
implementationLayerDesc: "Modela código, tests, bases de datos y su trazabilidad.",
|
|
76
|
+
operationsLayer: "Operations Layer",
|
|
77
|
+
operationsLayerDesc: "Modela infraestructura, despliegue y estado de ejecución/observabilidad.",
|
|
78
|
+
docsLayer: "Documentation Layer",
|
|
79
|
+
docsLayerDesc: "Contexto y conocimiento transversal.",
|
|
80
|
+
relations: "Semántica y Peso de Relaciones",
|
|
81
|
+
relationsDesc: "Las relaciones definen un peso semántico (Strength) y categoría entre los artefactos.",
|
|
82
|
+
strongRelations: "Fuerte (Strong)",
|
|
83
|
+
strongRelationsDesc: "Acoplamiento directo: IMPLEMENTS, TESTS, DEPENDS_ON, BLOCKS, BREAKS, DEFINES, VALIDATES, REPLACES",
|
|
84
|
+
mediumRelations: "Media (Medium)",
|
|
85
|
+
mediumRelationsDesc: "Descriptivas o de flujo: DERIVES_FROM, USES, IMPACTS, JUSTIFIES, REFINES, MONITORS, DEPLOYS",
|
|
86
|
+
weakRelations: "Débil (Weak)",
|
|
87
|
+
weakRelationsDesc: "Semánticas y laxas: RELATES_TO, DOCUMENTS",
|
|
88
|
+
changeTypes: "Tipos de Cambios (Change Types)",
|
|
89
|
+
changeTypesDesc: "Naturaleza de una modificación arquitectónica:",
|
|
90
|
+
error: { label: "ERROR", desc: "Corrección de fallos o deuda técnica crítica." },
|
|
91
|
+
feature: { label: "FEATURE", desc: "Nuevas capacidades con impacto en la arquitectura." },
|
|
92
|
+
evolution: { label: "EVOLUTION", desc: "Mejoras graduales, seguridad o actualizaciones de cumplimiento." },
|
|
93
|
+
refactor: { label: "REFACTOR", desc: "Reestructuraciones sin alterar el comportamiento externo." },
|
|
94
|
+
adaptation: { label: "ADAPTATION", desc: "Ajustes para nuevas integraciones o restricciones del entorno." },
|
|
95
|
+
frontmatter: "Formato Oficial Markdown",
|
|
96
|
+
frontmatterDesc: "Cada artefacto requiere un YAML frontmatter. Campos obligatorios: id, type, status, title.",
|
|
97
|
+
statusFlow: "Estados y Ciclo de Vida",
|
|
98
|
+
statusFlowDesc: "En estado 'draft' se permiten huérfanos, pero en 'closed' se exige trazabilidad completa.",
|
|
99
|
+
versions: "Versiones del Sistema y Proyecto",
|
|
100
|
+
versionsDesc: "El directorio docs/versions/ define las versiones temporales globales y de componentes.",
|
|
101
|
+
bestPractices: "Buenas Prácticas y Convención de IDs",
|
|
102
|
+
bestPracticesDesc: "Los IDs deben ser únicos y estables (Ej: REQ-001). El prefijo define su tipo lógico de forma clara.",
|
|
103
|
+
tutorialTitle: "Tutorial Paso a Paso",
|
|
104
|
+
tutorialDesc: "Sigue estos pasos para estructurar un proyecto completo usando la especificación OpenLAG.",
|
|
105
|
+
step1Title: "Paso 1: Versiones Globales",
|
|
106
|
+
step1Desc: "Comienza siempre definiendo versiones a nivel global del proyecto creando archivos separados en docs/versions/ (ej. docs/versions/v-1.md).",
|
|
107
|
+
step2Title: "Paso 2: Requisitos de Negocio",
|
|
108
|
+
step2Desc: "Crea los artefactos de la Capa de Negocio (Ej. REQ-001) para definir qué se debe construir.",
|
|
109
|
+
step3Title: "Paso 3: Arquitectura y Diseño",
|
|
110
|
+
step3Desc: "Define la Capa de Arquitectura (Ej. DESIGN-001) y enlaza con los requisitos de negocio.",
|
|
111
|
+
step4Title: "Paso 4: Implementación y Operaciones",
|
|
112
|
+
step4Desc: "Finalmente, documenta Código e Infra (Ej. CODE-001, INFRA-001) trazando los enlaces hacia arriba.",
|
|
113
|
+
step5Title: "Paso 5: Versiones de Sistemas",
|
|
114
|
+
step5Desc: "Documenta en archivos individuales dentro de docs/versions/ (ej. sv-lib-1.md) los componentes y librerías externas mediante artefactos de tipo SYSTEM_VERSION.",
|
|
115
|
+
step6Title: "Paso 6: Registro de Cambios",
|
|
116
|
+
step6Desc: "Añade en docs/changes/ artefactos de tipo CHANGE para gobernar las modificaciones, errores o refactors mayores que afecten el grafo.",
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
const c = t[lang];
|
|
121
|
+
|
|
122
|
+
return (
|
|
123
|
+
<div className="h-full w-full bg-[#0a0a0a] flex flex-col overflow-hidden">
|
|
124
|
+
<div className="p-8 lg:px-16 pt-12 shrink-0 border-b border-white/5 bg-[#0c0c0c]/30">
|
|
125
|
+
<div className="flex items-center justify-between mb-2">
|
|
126
|
+
<div className="flex items-center gap-3">
|
|
127
|
+
<h1 className="text-3xl font-serif italic tracking-tight">{c.title}</h1>
|
|
128
|
+
<div className="flex items-center gap-1.5 px-2 py-0.5 bg-blue-500/10 border border-blue-500/20 text-blue-400 text-[10px] font-mono rounded uppercase tracking-widest">
|
|
129
|
+
<Globe size={12} />
|
|
130
|
+
{lang === 'EN' ? 'English' : 'Español'}
|
|
131
|
+
</div>
|
|
132
|
+
</div>
|
|
133
|
+
</div>
|
|
134
|
+
<p className="text-xs text-white/40 max-w-2xl leading-relaxed">
|
|
135
|
+
{c.desc}
|
|
136
|
+
</p>
|
|
137
|
+
</div>
|
|
138
|
+
|
|
139
|
+
<div className="flex-1 overflow-y-auto p-8 lg:px-16 pb-20 custom-scrollbar space-y-16">
|
|
140
|
+
|
|
141
|
+
{/* Section: Layers & Artifacts */}
|
|
142
|
+
<section>
|
|
143
|
+
<div className="flex items-center gap-3 mb-6">
|
|
144
|
+
<div className="p-2 bg-pink-500/10 rounded border border-pink-500/20">
|
|
145
|
+
<Layers size={18} className="text-pink-400" />
|
|
146
|
+
</div>
|
|
147
|
+
<h2 className="text-xl font-medium tracking-tight">{c.layerTaxonomy}</h2>
|
|
148
|
+
</div>
|
|
149
|
+
<p className="text-sm text-white/50 mb-8 leading-relaxed max-w-3xl">
|
|
150
|
+
{c.layerTaxonomyDesc}
|
|
151
|
+
</p>
|
|
152
|
+
|
|
153
|
+
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
|
|
154
|
+
<div className="bg-[#0c0c0c] border border-white/5 p-6 rounded relative overflow-hidden group">
|
|
155
|
+
<h3 className="text-sm font-bold text-white/80 mb-2 uppercase tracking-widest">{c.businessLayer}</h3>
|
|
156
|
+
<p className="text-[11px] text-white/40 leading-relaxed mb-4">{c.businessLayerDesc}</p>
|
|
157
|
+
<div className="flex flex-wrap gap-2">
|
|
158
|
+
{['PROJECT', 'EPIC', 'FEATURE', 'REQUIREMENT', 'BUSINESS_RULE', 'USE_CASE'].map(t => (
|
|
159
|
+
<span key={t} className="text-[9px] bg-white/5 px-1.5 py-0.5 rounded text-white/60">{t}</span>
|
|
160
|
+
))}
|
|
161
|
+
</div>
|
|
162
|
+
</div>
|
|
163
|
+
<div className="bg-[#0c0c0c] border border-white/5 p-6 rounded relative overflow-hidden group">
|
|
164
|
+
<h3 className="text-sm font-bold text-white/80 mb-2 uppercase tracking-widest">{c.architectureLayer}</h3>
|
|
165
|
+
<p className="text-[11px] text-white/40 leading-relaxed mb-4">{c.architectureLayerDesc}</p>
|
|
166
|
+
<div className="flex flex-wrap gap-2">
|
|
167
|
+
{['DESIGN', 'DECISION', 'COMPONENT', 'API'].map(t => (
|
|
168
|
+
<span key={t} className="text-[9px] bg-white/5 px-1.5 py-0.5 rounded text-white/60">{t}</span>
|
|
169
|
+
))}
|
|
170
|
+
</div>
|
|
171
|
+
</div>
|
|
172
|
+
<div className="bg-[#0c0c0c] border border-white/5 p-6 rounded relative overflow-hidden group">
|
|
173
|
+
<h3 className="text-sm font-bold text-white/80 mb-2 uppercase tracking-widest">{c.implementationLayer}</h3>
|
|
174
|
+
<p className="text-[11px] text-white/40 leading-relaxed mb-4">{c.implementationLayerDesc}</p>
|
|
175
|
+
<div className="flex flex-wrap gap-2">
|
|
176
|
+
{['CODE_ENTITY', 'TEST_CASE', 'DATABASE_ENTITY', 'CHANGE', 'BUG', 'RISK', 'TEST'].map(t => (
|
|
177
|
+
<span key={t} className="text-[9px] bg-white/5 px-1.5 py-0.5 rounded text-white/60">{t}</span>
|
|
178
|
+
))}
|
|
179
|
+
</div>
|
|
180
|
+
</div>
|
|
181
|
+
<div className="bg-[#0c0c0c] border border-white/5 p-6 rounded relative overflow-hidden group">
|
|
182
|
+
<h3 className="text-sm font-bold text-white/80 mb-2 uppercase tracking-widest">{c.operationsLayer}</h3>
|
|
183
|
+
<p className="text-[11px] text-white/40 leading-relaxed mb-4">{c.operationsLayerDesc}</p>
|
|
184
|
+
<div className="flex flex-wrap gap-2">
|
|
185
|
+
{['INFRASTRUCTURE', 'DEPLOYMENT', 'MONITORING', 'INCIDENT', 'MAINTENANCE'].map(t => (
|
|
186
|
+
<span key={t} className="text-[9px] bg-white/5 px-1.5 py-0.5 rounded text-white/60">{t}</span>
|
|
187
|
+
))}
|
|
188
|
+
</div>
|
|
189
|
+
</div>
|
|
190
|
+
<div className="bg-[#0c0c0c] border border-white/5 p-6 rounded relative overflow-hidden group">
|
|
191
|
+
<h3 className="text-sm font-bold text-white/80 mb-2 uppercase tracking-widest">{c.docsLayer}</h3>
|
|
192
|
+
<p className="text-[11px] text-white/40 leading-relaxed mb-4">{c.docsLayerDesc}</p>
|
|
193
|
+
<div className="flex flex-wrap gap-2">
|
|
194
|
+
{['GLOSSARY_TERM', 'DOCUMENTATION'].map(t => (
|
|
195
|
+
<span key={t} className="text-[9px] bg-white/5 px-1.5 py-0.5 rounded text-white/60">{t}</span>
|
|
196
|
+
))}
|
|
197
|
+
</div>
|
|
198
|
+
</div>
|
|
199
|
+
</div>
|
|
200
|
+
</section>
|
|
201
|
+
|
|
202
|
+
{/* Section: Relations */}
|
|
203
|
+
<section>
|
|
204
|
+
<div className="flex items-center gap-3 mb-6">
|
|
205
|
+
<div className="p-2 bg-indigo-500/10 rounded border border-indigo-500/20">
|
|
206
|
+
<Link2 size={18} className="text-indigo-400" />
|
|
207
|
+
</div>
|
|
208
|
+
<h2 className="text-xl font-medium tracking-tight">{c.relations}</h2>
|
|
209
|
+
</div>
|
|
210
|
+
<p className="text-sm text-white/50 mb-8 leading-relaxed max-w-3xl">
|
|
211
|
+
{c.relationsDesc}
|
|
212
|
+
</p>
|
|
213
|
+
|
|
214
|
+
<div className="space-y-4">
|
|
215
|
+
<div className="bg-[#0c0c0c] border border-white/5 p-5 rounded flex items-start gap-4">
|
|
216
|
+
<div className="w-2 h-2 rounded-full bg-red-500 mt-1.5 shrink-0" />
|
|
217
|
+
<div>
|
|
218
|
+
<h4 className="text-sm font-bold text-white mb-1">{c.strongRelations}</h4>
|
|
219
|
+
<p className="text-xs text-white/60 font-mono leading-relaxed">{c.strongRelationsDesc}</p>
|
|
220
|
+
</div>
|
|
221
|
+
</div>
|
|
222
|
+
<div className="bg-[#0c0c0c] border border-white/5 p-5 rounded flex items-start gap-4">
|
|
223
|
+
<div className="w-2 h-2 rounded-full bg-amber-500 mt-1.5 shrink-0" />
|
|
224
|
+
<div>
|
|
225
|
+
<h4 className="text-sm font-bold text-white mb-1">{c.mediumRelations}</h4>
|
|
226
|
+
<p className="text-xs text-white/60 font-mono leading-relaxed">{c.mediumRelationsDesc}</p>
|
|
227
|
+
</div>
|
|
228
|
+
</div>
|
|
229
|
+
<div className="bg-[#0c0c0c] border border-white/5 p-5 rounded flex items-start gap-4">
|
|
230
|
+
<div className="w-2 h-2 rounded-full bg-blue-500 mt-1.5 shrink-0" />
|
|
231
|
+
<div>
|
|
232
|
+
<h4 className="text-sm font-bold text-white mb-1">{c.weakRelations}</h4>
|
|
233
|
+
<p className="text-xs text-white/60 font-mono leading-relaxed">{c.weakRelationsDesc}</p>
|
|
234
|
+
</div>
|
|
235
|
+
</div>
|
|
236
|
+
</div>
|
|
237
|
+
</section>
|
|
238
|
+
|
|
239
|
+
{/* Section: Change Types */}
|
|
240
|
+
<section>
|
|
241
|
+
<div className="flex items-center gap-3 mb-6">
|
|
242
|
+
<div className="p-2 bg-indigo-500/10 rounded border border-indigo-500/20">
|
|
243
|
+
<Terminal size={18} className="text-indigo-400" />
|
|
244
|
+
</div>
|
|
245
|
+
<h2 className="text-xl font-medium tracking-tight">{c.changeTypes}</h2>
|
|
246
|
+
</div>
|
|
247
|
+
<p className="text-sm text-white/50 mb-8 leading-relaxed max-w-3xl">
|
|
248
|
+
{c.changeTypesDesc}
|
|
249
|
+
</p>
|
|
250
|
+
|
|
251
|
+
<div className="space-y-4">
|
|
252
|
+
<div className="bg-[#0c0c0c] border border-white/5 p-5 rounded">
|
|
253
|
+
<ul className="space-y-3">
|
|
254
|
+
<li className="text-sm text-white/80 font-mono"><span className="text-rose-400 font-bold p-1 bg-rose-500/10 rounded mr-2">{c.error.label}</span> {c.error.desc}</li>
|
|
255
|
+
<li className="text-sm text-white/80 font-mono"><span className="text-emerald-400 font-bold p-1 bg-emerald-500/10 rounded mr-2">{c.feature.label}</span> {c.feature.desc}</li>
|
|
256
|
+
<li className="text-sm text-white/80 font-mono"><span className="text-blue-400 font-bold p-1 bg-blue-500/10 rounded mr-2">{c.evolution.label}</span> {c.evolution.desc}</li>
|
|
257
|
+
<li className="text-sm text-white/80 font-mono"><span className="text-amber-400 font-bold p-1 bg-amber-500/10 rounded mr-2">{c.refactor.label}</span> {c.refactor.desc}</li>
|
|
258
|
+
<li className="text-sm text-white/80 font-mono"><span className="text-purple-400 font-bold p-1 bg-purple-500/10 rounded mr-2">{c.adaptation.label}</span> {c.adaptation.desc}</li>
|
|
259
|
+
</ul>
|
|
260
|
+
</div>
|
|
261
|
+
</div>
|
|
262
|
+
</section>
|
|
263
|
+
|
|
264
|
+
{/* Section: Lifecycle Status */}
|
|
265
|
+
<section>
|
|
266
|
+
<div className="flex items-center gap-3 mb-6">
|
|
267
|
+
<div className="p-2 bg-emerald-500/10 rounded border border-emerald-500/20">
|
|
268
|
+
<GitBranch size={18} className="text-emerald-400" />
|
|
269
|
+
</div>
|
|
270
|
+
<h2 className="text-xl font-medium tracking-tight">{c.statusFlow}</h2>
|
|
271
|
+
</div>
|
|
272
|
+
<p className="text-sm text-white/50 mb-8 leading-relaxed max-w-3xl">
|
|
273
|
+
{c.statusFlowDesc}
|
|
274
|
+
</p>
|
|
275
|
+
|
|
276
|
+
<div className="flex flex-col md:flex-row items-center gap-4">
|
|
277
|
+
{['draft', 'in_progress', 'ready', 'closed', 'deprecated'].map((status, index) => (
|
|
278
|
+
<React.Fragment key={status}>
|
|
279
|
+
<div className="bg-[#0c0c0c] border border-white/10 px-4 py-2 rounded text-xs font-mono text-white/80">
|
|
280
|
+
{status}
|
|
281
|
+
</div>
|
|
282
|
+
{index < 4 && <div className="h-4 w-px md:h-px md:w-8 md:flex-1 bg-white/20" />}
|
|
283
|
+
</React.Fragment>
|
|
284
|
+
))}
|
|
285
|
+
</div>
|
|
286
|
+
</section>
|
|
287
|
+
|
|
288
|
+
{/* Section: YAML Frontmatter */}
|
|
289
|
+
<section>
|
|
290
|
+
<div className="flex items-center gap-3 mb-6">
|
|
291
|
+
<div className="p-2 bg-purple-500/10 rounded border border-purple-500/20">
|
|
292
|
+
<Terminal size={18} className="text-purple-400" />
|
|
293
|
+
</div>
|
|
294
|
+
<h2 className="text-xl font-medium tracking-tight">{c.frontmatter}</h2>
|
|
295
|
+
</div>
|
|
296
|
+
<p className="text-sm text-white/50 mb-8 leading-relaxed max-w-3xl">
|
|
297
|
+
{c.frontmatterDesc}
|
|
298
|
+
</p>
|
|
299
|
+
|
|
300
|
+
<div className="bg-black/40 border border-white/5 rounded-lg overflow-hidden">
|
|
301
|
+
<div className="p-4 bg-white/[0.03] border-b border-white/5 flex items-center justify-between">
|
|
302
|
+
<span className="text-[10px] font-mono text-white/40 italic">docs/requirements/REQ-001.md</span>
|
|
303
|
+
</div>
|
|
304
|
+
<div className="p-6">
|
|
305
|
+
<pre className="text-[11px] font-mono leading-relaxed text-white/60 select-all">
|
|
306
|
+
{`---
|
|
307
|
+
id: REQ-001
|
|
308
|
+
type: REQUIREMENT
|
|
309
|
+
status: draft
|
|
310
|
+
layer: BUSINESS
|
|
311
|
+
title: Generar graph-data.json
|
|
312
|
+
version: v1
|
|
313
|
+
ownership:
|
|
314
|
+
owner: dony
|
|
315
|
+
team: architecture
|
|
316
|
+
maintainers:
|
|
317
|
+
- backend-team
|
|
318
|
+
tags:
|
|
319
|
+
- parser
|
|
320
|
+
- graph
|
|
321
|
+
relations:
|
|
322
|
+
- type: IMPLEMENTS
|
|
323
|
+
target: CODE-001
|
|
324
|
+
strength: STRONG
|
|
325
|
+
category: TRACEABILITY
|
|
326
|
+
---
|
|
327
|
+
|
|
328
|
+
# Generar graph-data.json
|
|
329
|
+
...contenido descriptivo...`}
|
|
330
|
+
</pre>
|
|
331
|
+
</div>
|
|
332
|
+
</div>
|
|
333
|
+
</section>
|
|
334
|
+
|
|
335
|
+
{/* Section: Best Practices */}
|
|
336
|
+
<section>
|
|
337
|
+
<div className="flex items-center gap-3 mb-6">
|
|
338
|
+
<div className="p-2 bg-amber-500/10 rounded border border-amber-500/20">
|
|
339
|
+
<AlertTriangle size={18} className="text-amber-400" />
|
|
340
|
+
</div>
|
|
341
|
+
<h2 className="text-xl font-medium tracking-tight">{c.bestPractices}</h2>
|
|
342
|
+
</div>
|
|
343
|
+
<p className="text-sm text-white/50 mb-8 leading-relaxed max-w-3xl">
|
|
344
|
+
{c.bestPracticesDesc}
|
|
345
|
+
</p>
|
|
346
|
+
</section>
|
|
347
|
+
|
|
348
|
+
{/* Section: Step-by-Step Tutorial */}
|
|
349
|
+
<section className="border-t border-white/5 pt-16">
|
|
350
|
+
<div className="flex items-center gap-3 mb-6">
|
|
351
|
+
<div className="p-2 bg-blue-500/10 rounded border border-blue-500/20">
|
|
352
|
+
<CheckCircle2 size={18} className="text-blue-400" />
|
|
353
|
+
</div>
|
|
354
|
+
<h2 className="text-xl font-medium tracking-tight">{c.tutorialTitle}</h2>
|
|
355
|
+
</div>
|
|
356
|
+
<p className="text-sm text-white/50 mb-8 leading-relaxed max-w-3xl">
|
|
357
|
+
{c.tutorialDesc}
|
|
358
|
+
</p>
|
|
359
|
+
|
|
360
|
+
<div className="space-y-8">
|
|
361
|
+
{/* Step 1 */}
|
|
362
|
+
<div className="bg-[#0c0c0c] border border-white/5 rounded-lg overflow-hidden flex flex-col">
|
|
363
|
+
<div className="p-4 bg-white/[0.03] border-b border-white/5 flex items-center justify-between">
|
|
364
|
+
<h4 className="text-sm font-bold text-white/80">{c.step1Title}</h4>
|
|
365
|
+
<span className="text-[10px] font-mono text-white/40 italic">docs/versions/v-1.md</span>
|
|
366
|
+
</div>
|
|
367
|
+
<div className="p-6">
|
|
368
|
+
<p className="text-xs text-white/50 mb-4">{c.step1Desc}</p>
|
|
369
|
+
<pre className="text-[11px] font-mono leading-relaxed text-white/60 bg-black/40 p-4 rounded border border-white/5 overflow-x-auto">
|
|
370
|
+
{`---
|
|
371
|
+
id: v-1
|
|
372
|
+
type: VERSION
|
|
373
|
+
name: "1.0.0"
|
|
374
|
+
timestamp: "2026-05-06"
|
|
375
|
+
parentVersion: null
|
|
376
|
+
layer: DOCUMENTATION
|
|
377
|
+
title: "Project Release v1.0.0"
|
|
378
|
+
description: "Initial stable release of the project architecture and features."
|
|
379
|
+
ownership:
|
|
380
|
+
owner: pcaro
|
|
381
|
+
team: architecture
|
|
382
|
+
relations:
|
|
383
|
+
- type: DOCUMENTS
|
|
384
|
+
to: req-func-1
|
|
385
|
+
---`}
|
|
386
|
+
</pre>
|
|
387
|
+
</div>
|
|
388
|
+
</div>
|
|
389
|
+
|
|
390
|
+
{/* Step 2 */}
|
|
391
|
+
<div className="bg-[#0c0c0c] border border-white/5 rounded-lg overflow-hidden flex flex-col">
|
|
392
|
+
<div className="p-4 bg-white/[0.03] border-b border-white/5 flex items-center justify-between">
|
|
393
|
+
<h4 className="text-sm font-bold text-white/80">{c.step2Title}</h4>
|
|
394
|
+
<span className="text-[10px] font-mono text-white/40 italic">docs/requirements/REQ-001.md</span>
|
|
395
|
+
</div>
|
|
396
|
+
<div className="p-6">
|
|
397
|
+
<p className="text-xs text-white/50 mb-4">{c.step2Desc}</p>
|
|
398
|
+
<pre className="text-[11px] font-mono leading-relaxed text-blue-400/80 bg-black/40 p-4 rounded border border-white/5 overflow-x-auto">
|
|
399
|
+
{`---
|
|
400
|
+
id: REQ-001
|
|
401
|
+
type: REQUIREMENT
|
|
402
|
+
status: ready
|
|
403
|
+
layer: BUSINESS
|
|
404
|
+
title: User Authentication
|
|
405
|
+
version: v1
|
|
406
|
+
---
|
|
407
|
+
|
|
408
|
+
# Authentication Requirement
|
|
409
|
+
The system must allow users to log in securely.`}
|
|
410
|
+
</pre>
|
|
411
|
+
</div>
|
|
412
|
+
</div>
|
|
413
|
+
|
|
414
|
+
{/* Step 3 */}
|
|
415
|
+
<div className="bg-[#0c0c0c] border border-white/5 rounded-lg overflow-hidden flex flex-col">
|
|
416
|
+
<div className="p-4 bg-white/[0.03] border-b border-white/5 flex items-center justify-between">
|
|
417
|
+
<h4 className="text-sm font-bold text-white/80">{c.step3Title}</h4>
|
|
418
|
+
<span className="text-[10px] font-mono text-white/40 italic">docs/architecture/DESIGN-auth.md</span>
|
|
419
|
+
</div>
|
|
420
|
+
<div className="p-6">
|
|
421
|
+
<p className="text-xs text-white/50 mb-4">{c.step3Desc}</p>
|
|
422
|
+
<pre className="text-[11px] font-mono leading-relaxed text-purple-400/80 bg-black/40 p-4 rounded border border-white/5 overflow-x-auto">
|
|
423
|
+
{`---
|
|
424
|
+
id: DESIGN-auth
|
|
425
|
+
type: DESIGN
|
|
426
|
+
status: ready
|
|
427
|
+
layer: ARCHITECTURE
|
|
428
|
+
title: Auth Architecture
|
|
429
|
+
version: v1
|
|
430
|
+
relations:
|
|
431
|
+
- type: IMPLEMENTS
|
|
432
|
+
target: REQ-001
|
|
433
|
+
strength: STRONG
|
|
434
|
+
category: TRACEABILITY
|
|
435
|
+
---
|
|
436
|
+
|
|
437
|
+
# Auth Design
|
|
438
|
+
We will use JWT tokens for authentication...`}
|
|
439
|
+
</pre>
|
|
440
|
+
</div>
|
|
441
|
+
</div>
|
|
442
|
+
|
|
443
|
+
{/* Step 4 */}
|
|
444
|
+
<div className="bg-[#0c0c0c] border border-white/5 rounded-lg overflow-hidden flex flex-col">
|
|
445
|
+
<div className="p-4 bg-white/[0.03] border-b border-white/5 flex items-center justify-between">
|
|
446
|
+
<h4 className="text-sm font-bold text-white/80">{c.step4Title}</h4>
|
|
447
|
+
<span className="text-[10px] font-mono text-white/40 italic">docs/implementation/CODE-auth-service.md</span>
|
|
448
|
+
</div>
|
|
449
|
+
<div className="p-6">
|
|
450
|
+
<p className="text-xs text-white/50 mb-4">{c.step4Desc}</p>
|
|
451
|
+
<pre className="text-[11px] font-mono leading-relaxed text-emerald-400/80 bg-black/40 p-4 rounded border border-white/5 overflow-x-auto">
|
|
452
|
+
{`---
|
|
453
|
+
id: CODE-auth-service
|
|
454
|
+
type: CODE_ENTITY
|
|
455
|
+
status: in_progress
|
|
456
|
+
layer: IMPLEMENTATION
|
|
457
|
+
title: AuthService.ts
|
|
458
|
+
version: v1
|
|
459
|
+
relations:
|
|
460
|
+
- type: IMPLEMENTS
|
|
461
|
+
target: DESIGN-auth
|
|
462
|
+
strength: STRONG
|
|
463
|
+
category: TRACEABILITY
|
|
464
|
+
---
|
|
465
|
+
|
|
466
|
+
# AuthService
|
|
467
|
+
Implementation of the login endpoint...`}
|
|
468
|
+
</pre>
|
|
469
|
+
</div>
|
|
470
|
+
</div>
|
|
471
|
+
|
|
472
|
+
{/* Step 5 */}
|
|
473
|
+
<div className="bg-[#0c0c0c] border border-white/5 rounded-lg overflow-hidden flex flex-col">
|
|
474
|
+
<div className="p-4 bg-white/[0.03] border-b border-white/5 flex items-center justify-between">
|
|
475
|
+
<h4 className="text-sm font-bold text-white/80">{c.step5Title}</h4>
|
|
476
|
+
<span className="text-[10px] font-mono text-white/40 italic">docs/versions/sv-db-1.md</span>
|
|
477
|
+
</div>
|
|
478
|
+
<div className="p-6">
|
|
479
|
+
<p className="text-xs text-white/50 mb-4">{c.step5Desc}</p>
|
|
480
|
+
<pre className="text-[11px] font-mono leading-relaxed text-yellow-400/80 bg-black/40 p-4 rounded border border-white/5 overflow-x-auto">
|
|
481
|
+
{`---
|
|
482
|
+
id: sv-db-pg-15
|
|
483
|
+
type: SYSTEM_VERSION
|
|
484
|
+
component: PostgreSQL Engine
|
|
485
|
+
version: 15.4
|
|
486
|
+
releaseDate: "2023-08-10"
|
|
487
|
+
layer: OPERATIONS
|
|
488
|
+
title: "PostgreSQL Database Engine"
|
|
489
|
+
description: "Used for primary relational data storage."
|
|
490
|
+
ownership:
|
|
491
|
+
owner: pcaro
|
|
492
|
+
team: architecture
|
|
493
|
+
relations:
|
|
494
|
+
- type: RELATES_TO
|
|
495
|
+
to: arch-overview
|
|
496
|
+
---
|
|
497
|
+
|
|
498
|
+
# PostgreSQL Engine
|
|
499
|
+
Used for primary relational data storage.`}
|
|
500
|
+
</pre>
|
|
501
|
+
</div>
|
|
502
|
+
</div>
|
|
503
|
+
|
|
504
|
+
{/* Step 6 */}
|
|
505
|
+
<div className="bg-[#0c0c0c] border border-white/5 rounded-lg overflow-hidden flex flex-col">
|
|
506
|
+
<div className="p-4 bg-white/[0.03] border-b border-white/5 flex items-center justify-between">
|
|
507
|
+
<h4 className="text-sm font-bold text-white/80">{c.step6Title}</h4>
|
|
508
|
+
<span className="text-[10px] font-mono text-white/40 italic">docs/changes/ch-auth-pool.md</span>
|
|
509
|
+
</div>
|
|
510
|
+
<div className="p-6">
|
|
511
|
+
<p className="text-xs text-white/50 mb-4">{c.step6Desc}</p>
|
|
512
|
+
<pre className="text-[11px] font-mono leading-relaxed text-rose-400/80 bg-black/40 p-4 rounded border border-white/5 overflow-x-auto">
|
|
513
|
+
{`---
|
|
514
|
+
id: ch-auth-pool
|
|
515
|
+
type: CHANGE
|
|
516
|
+
changeType: ERROR
|
|
517
|
+
title: Resolve Auth API Timeouts
|
|
518
|
+
affects: ["CODE-auth-service", "sv-db-pg-15"]
|
|
519
|
+
versionFrom: "v-1"
|
|
520
|
+
versionTo: "v-2"
|
|
521
|
+
---
|
|
522
|
+
|
|
523
|
+
# Auth Pool Issue
|
|
524
|
+
Database connection pool was insufficient for v1 traffic volume.`}
|
|
525
|
+
</pre>
|
|
526
|
+
</div>
|
|
527
|
+
</div>
|
|
528
|
+
</div>
|
|
529
|
+
</section>
|
|
530
|
+
|
|
531
|
+
</div>
|
|
532
|
+
</div>
|
|
533
|
+
);
|
|
534
|
+
};
|
|
535
|
+
|