@planu/cli 0.55.0 → 0.57.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/dist/config/license-plans.json +2 -0
- package/dist/engine/doc-generator/executive-summary/executive-summary-generator.d.ts +7 -1
- package/dist/engine/doc-generator/executive-summary/executive-summary-generator.d.ts.map +1 -1
- package/dist/engine/doc-generator/executive-summary/executive-summary-generator.js +16 -3
- package/dist/engine/doc-generator/executive-summary/executive-summary-generator.js.map +1 -1
- package/dist/engine/doc-generator/executive-summary/html-template.d.ts +5 -2
- package/dist/engine/doc-generator/executive-summary/html-template.d.ts.map +1 -1
- package/dist/engine/doc-generator/executive-summary/html-template.js +7 -3
- package/dist/engine/doc-generator/executive-summary/html-template.js.map +1 -1
- package/dist/engine/doc-generator/per-spec-report/html-wrapper.d.ts +5 -3
- package/dist/engine/doc-generator/per-spec-report/html-wrapper.d.ts.map +1 -1
- package/dist/engine/doc-generator/per-spec-report/html-wrapper.js +27 -6
- package/dist/engine/doc-generator/per-spec-report/html-wrapper.js.map +1 -1
- package/dist/engine/doc-generator/portal/analytics-page.d.ts +8 -0
- package/dist/engine/doc-generator/portal/analytics-page.d.ts.map +1 -0
- package/dist/engine/doc-generator/portal/analytics-page.js +265 -0
- package/dist/engine/doc-generator/portal/analytics-page.js.map +1 -0
- package/dist/engine/doc-generator/portal/architecture-page.d.ts +6 -0
- package/dist/engine/doc-generator/portal/architecture-page.d.ts.map +1 -0
- package/dist/engine/doc-generator/portal/architecture-page.js +250 -0
- package/dist/engine/doc-generator/portal/architecture-page.js.map +1 -0
- package/dist/engine/doc-generator/portal/changelog-page.d.ts +6 -0
- package/dist/engine/doc-generator/portal/changelog-page.d.ts.map +1 -0
- package/dist/engine/doc-generator/portal/changelog-page.js +204 -0
- package/dist/engine/doc-generator/portal/changelog-page.js.map +1 -0
- package/dist/engine/doc-generator/portal/data-aggregators/accuracy-aggregator.d.ts +11 -0
- package/dist/engine/doc-generator/portal/data-aggregators/accuracy-aggregator.d.ts.map +1 -0
- package/dist/engine/doc-generator/portal/data-aggregators/accuracy-aggregator.js +24 -0
- package/dist/engine/doc-generator/portal/data-aggregators/accuracy-aggregator.js.map +1 -0
- package/dist/engine/doc-generator/portal/data-aggregators/bottleneck-detector.d.ts +9 -0
- package/dist/engine/doc-generator/portal/data-aggregators/bottleneck-detector.d.ts.map +1 -0
- package/dist/engine/doc-generator/portal/data-aggregators/bottleneck-detector.js +31 -0
- package/dist/engine/doc-generator/portal/data-aggregators/bottleneck-detector.js.map +1 -0
- package/dist/engine/doc-generator/portal/data-aggregators/burndown-aggregator.d.ts +10 -0
- package/dist/engine/doc-generator/portal/data-aggregators/burndown-aggregator.d.ts.map +1 -0
- package/dist/engine/doc-generator/portal/data-aggregators/burndown-aggregator.js +77 -0
- package/dist/engine/doc-generator/portal/data-aggregators/burndown-aggregator.js.map +1 -0
- package/dist/engine/doc-generator/portal/data-aggregators/velocity-aggregator.d.ts +9 -0
- package/dist/engine/doc-generator/portal/data-aggregators/velocity-aggregator.d.ts.map +1 -0
- package/dist/engine/doc-generator/portal/data-aggregators/velocity-aggregator.js +31 -0
- package/dist/engine/doc-generator/portal/data-aggregators/velocity-aggregator.js.map +1 -0
- package/dist/engine/doc-generator/portal/decision-page.d.ts +6 -0
- package/dist/engine/doc-generator/portal/decision-page.d.ts.map +1 -0
- package/dist/engine/doc-generator/portal/decision-page.js +169 -0
- package/dist/engine/doc-generator/portal/decision-page.js.map +1 -0
- package/dist/engine/doc-generator/portal/decision-timeline-builder.d.ts +8 -0
- package/dist/engine/doc-generator/portal/decision-timeline-builder.d.ts.map +1 -0
- package/dist/engine/doc-generator/portal/decision-timeline-builder.js +131 -0
- package/dist/engine/doc-generator/portal/decision-timeline-builder.js.map +1 -0
- package/dist/engine/doc-generator/portal/index.d.ts +19 -0
- package/dist/engine/doc-generator/portal/index.d.ts.map +1 -0
- package/dist/engine/doc-generator/portal/index.js +21 -0
- package/dist/engine/doc-generator/portal/index.js.map +1 -0
- package/dist/engine/doc-generator/portal/kanban-view-builder.d.ts +8 -0
- package/dist/engine/doc-generator/portal/kanban-view-builder.d.ts.map +1 -0
- package/dist/engine/doc-generator/portal/kanban-view-builder.js +140 -0
- package/dist/engine/doc-generator/portal/kanban-view-builder.js.map +1 -0
- package/dist/engine/doc-generator/portal/portal-breadcrumbs.d.ts +27 -0
- package/dist/engine/doc-generator/portal/portal-breadcrumbs.d.ts.map +1 -0
- package/dist/engine/doc-generator/portal/portal-breadcrumbs.js +139 -0
- package/dist/engine/doc-generator/portal/portal-breadcrumbs.js.map +1 -0
- package/dist/engine/doc-generator/portal/portal-landing-cards.d.ts +8 -0
- package/dist/engine/doc-generator/portal/portal-landing-cards.d.ts.map +1 -0
- package/dist/engine/doc-generator/portal/portal-landing-cards.js +177 -0
- package/dist/engine/doc-generator/portal/portal-landing-cards.js.map +1 -0
- package/dist/engine/doc-generator/portal/portal-navbar.d.ts +15 -0
- package/dist/engine/doc-generator/portal/portal-navbar.d.ts.map +1 -0
- package/dist/engine/doc-generator/portal/portal-navbar.js +143 -0
- package/dist/engine/doc-generator/portal/portal-navbar.js.map +1 -0
- package/dist/engine/doc-generator/portal/portal-page-detector.d.ts +22 -0
- package/dist/engine/doc-generator/portal/portal-page-detector.d.ts.map +1 -0
- package/dist/engine/doc-generator/portal/portal-page-detector.js +58 -0
- package/dist/engine/doc-generator/portal/portal-page-detector.js.map +1 -0
- package/dist/engine/doc-generator/portal/portal-theme.d.ts +7 -0
- package/dist/engine/doc-generator/portal/portal-theme.d.ts.map +1 -0
- package/dist/engine/doc-generator/portal/portal-theme.js +53 -0
- package/dist/engine/doc-generator/portal/portal-theme.js.map +1 -0
- package/dist/engine/doc-generator/portal/risk-gauge-svg.d.ts +5 -0
- package/dist/engine/doc-generator/portal/risk-gauge-svg.d.ts.map +1 -0
- package/dist/engine/doc-generator/portal/risk-gauge-svg.js +80 -0
- package/dist/engine/doc-generator/portal/risk-gauge-svg.js.map +1 -0
- package/dist/engine/doc-generator/portal/risk-matrix-svg.d.ts +11 -0
- package/dist/engine/doc-generator/portal/risk-matrix-svg.d.ts.map +1 -0
- package/dist/engine/doc-generator/portal/risk-matrix-svg.js +181 -0
- package/dist/engine/doc-generator/portal/risk-matrix-svg.js.map +1 -0
- package/dist/engine/doc-generator/portal/risk-page.d.ts +7 -0
- package/dist/engine/doc-generator/portal/risk-page.d.ts.map +1 -0
- package/dist/engine/doc-generator/portal/risk-page.js +219 -0
- package/dist/engine/doc-generator/portal/risk-page.js.map +1 -0
- package/dist/engine/doc-generator/portal/roadmap-page.d.ts +7 -0
- package/dist/engine/doc-generator/portal/roadmap-page.d.ts.map +1 -0
- package/dist/engine/doc-generator/portal/roadmap-page.js +204 -0
- package/dist/engine/doc-generator/portal/roadmap-page.js.map +1 -0
- package/dist/engine/doc-generator/portal/svg-charts/bar-chart.d.ts +4 -0
- package/dist/engine/doc-generator/portal/svg-charts/bar-chart.d.ts.map +1 -0
- package/dist/engine/doc-generator/portal/svg-charts/bar-chart.js +50 -0
- package/dist/engine/doc-generator/portal/svg-charts/bar-chart.js.map +1 -0
- package/dist/engine/doc-generator/portal/svg-charts/chart-utils.d.ts +16 -0
- package/dist/engine/doc-generator/portal/svg-charts/chart-utils.d.ts.map +1 -0
- package/dist/engine/doc-generator/portal/svg-charts/chart-utils.js +45 -0
- package/dist/engine/doc-generator/portal/svg-charts/chart-utils.js.map +1 -0
- package/dist/engine/doc-generator/portal/svg-charts/line-chart.d.ts +16 -0
- package/dist/engine/doc-generator/portal/svg-charts/line-chart.d.ts.map +1 -0
- package/dist/engine/doc-generator/portal/svg-charts/line-chart.js +159 -0
- package/dist/engine/doc-generator/portal/svg-charts/line-chart.js.map +1 -0
- package/dist/engine/doc-generator/portal/svg-charts/pie-chart.d.ts +7 -0
- package/dist/engine/doc-generator/portal/svg-charts/pie-chart.d.ts.map +1 -0
- package/dist/engine/doc-generator/portal/svg-charts/pie-chart.js +52 -0
- package/dist/engine/doc-generator/portal/svg-charts/pie-chart.js.map +1 -0
- package/dist/engine/doc-generator/proposal/proposal-gantt-builder.d.ts +8 -0
- package/dist/engine/doc-generator/proposal/proposal-gantt-builder.d.ts.map +1 -0
- package/dist/engine/doc-generator/proposal/proposal-gantt-builder.js +126 -0
- package/dist/engine/doc-generator/proposal/proposal-gantt-builder.js.map +1 -0
- package/dist/engine/doc-generator/proposal/proposal-generator.d.ts +10 -0
- package/dist/engine/doc-generator/proposal/proposal-generator.d.ts.map +1 -0
- package/dist/engine/doc-generator/proposal/proposal-generator.js +93 -0
- package/dist/engine/doc-generator/proposal/proposal-generator.js.map +1 -0
- package/dist/engine/doc-generator/proposal/proposal-html-wrapper.d.ts +7 -0
- package/dist/engine/doc-generator/proposal/proposal-html-wrapper.d.ts.map +1 -0
- package/dist/engine/doc-generator/proposal/proposal-html-wrapper.js +31 -0
- package/dist/engine/doc-generator/proposal/proposal-html-wrapper.js.map +1 -0
- package/dist/engine/doc-generator/proposal/proposal-i18n.d.ts +12 -0
- package/dist/engine/doc-generator/proposal/proposal-i18n.d.ts.map +1 -0
- package/dist/engine/doc-generator/proposal/proposal-i18n.js +230 -0
- package/dist/engine/doc-generator/proposal/proposal-i18n.js.map +1 -0
- package/dist/engine/doc-generator/proposal/proposal-kpi-builder.d.ts +8 -0
- package/dist/engine/doc-generator/proposal/proposal-kpi-builder.d.ts.map +1 -0
- package/dist/engine/doc-generator/proposal/proposal-kpi-builder.js +32 -0
- package/dist/engine/doc-generator/proposal/proposal-kpi-builder.js.map +1 -0
- package/dist/engine/doc-generator/proposal/proposal-section-builders-advanced.d.ts +14 -0
- package/dist/engine/doc-generator/proposal/proposal-section-builders-advanced.d.ts.map +1 -0
- package/dist/engine/doc-generator/proposal/proposal-section-builders-advanced.js +248 -0
- package/dist/engine/doc-generator/proposal/proposal-section-builders-advanced.js.map +1 -0
- package/dist/engine/doc-generator/proposal/proposal-section-builders.d.ts +13 -0
- package/dist/engine/doc-generator/proposal/proposal-section-builders.d.ts.map +1 -0
- package/dist/engine/doc-generator/proposal/proposal-section-builders.js +423 -0
- package/dist/engine/doc-generator/proposal/proposal-section-builders.js.map +1 -0
- package/dist/engine/doc-generator/proposal/proposal-themes.d.ts +4 -0
- package/dist/engine/doc-generator/proposal/proposal-themes.d.ts.map +1 -0
- package/dist/engine/doc-generator/proposal/proposal-themes.js +194 -0
- package/dist/engine/doc-generator/proposal/proposal-themes.js.map +1 -0
- package/dist/engine/pdf/browser-finder.d.ts +5 -0
- package/dist/engine/pdf/browser-finder.d.ts.map +1 -0
- package/dist/engine/pdf/browser-finder.js +119 -0
- package/dist/engine/pdf/browser-finder.js.map +1 -0
- package/dist/engine/pdf/html-to-pdf.d.ts +3 -0
- package/dist/engine/pdf/html-to-pdf.d.ts.map +1 -0
- package/dist/engine/pdf/html-to-pdf.js +114 -0
- package/dist/engine/pdf/html-to-pdf.js.map +1 -0
- package/dist/engine/pdf/index.d.ts +6 -0
- package/dist/engine/pdf/index.d.ts.map +1 -0
- package/dist/engine/pdf/index.js +4 -0
- package/dist/engine/pdf/index.js.map +1 -0
- package/dist/engine/pdf/pdf-options.d.ts +6 -0
- package/dist/engine/pdf/pdf-options.d.ts.map +1 -0
- package/dist/engine/pdf/pdf-options.js +34 -0
- package/dist/engine/pdf/pdf-options.js.map +1 -0
- package/dist/engine/spec-summary-html.d.ts.map +1 -1
- package/dist/engine/spec-summary-html.js +17 -5
- package/dist/engine/spec-summary-html.js.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/tools/export-pdf.d.ts +3 -0
- package/dist/tools/export-pdf.d.ts.map +1 -0
- package/dist/tools/export-pdf.js +82 -0
- package/dist/tools/export-pdf.js.map +1 -0
- package/dist/tools/generate-proposal.d.ts +3 -0
- package/dist/tools/generate-proposal.d.ts.map +1 -0
- package/dist/tools/generate-proposal.js +166 -0
- package/dist/tools/generate-proposal.js.map +1 -0
- package/dist/types/docs.d.ts +41 -0
- package/dist/types/docs.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/pdf.d.ts +42 -0
- package/dist/types/pdf.d.ts.map +1 -0
- package/dist/types/pdf.js +3 -0
- package/dist/types/pdf.js.map +1 -0
- package/dist/types/portal.d.ts +128 -0
- package/dist/types/portal.d.ts.map +1 -0
- package/dist/types/portal.js +3 -0
- package/dist/types/portal.js.map +1 -0
- package/dist/types/proposal.d.ts +57 -0
- package/dist/types/proposal.d.ts.map +1 -0
- package/dist/types/proposal.js +2 -0
- package/dist/types/proposal.js.map +1 -0
- package/package.json +1 -1
- package/src/config/license-plans.json +2 -0
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
const EN = {
|
|
2
|
+
generatedBy: 'Generated by Planu',
|
|
3
|
+
confidential: 'CONFIDENTIAL',
|
|
4
|
+
expires: 'Valid until',
|
|
5
|
+
executiveSummary: 'Executive Summary',
|
|
6
|
+
totalInvestment: 'Total Investment',
|
|
7
|
+
estimatedHours: 'Estimated Hours',
|
|
8
|
+
totalSpecs: 'Total Specs',
|
|
9
|
+
timeline: 'Timeline',
|
|
10
|
+
avgRisk: 'Avg Risk Score',
|
|
11
|
+
completionRate: 'Completion Rate',
|
|
12
|
+
scope: 'Project Scope',
|
|
13
|
+
inScope: 'In Scope',
|
|
14
|
+
outOfScope: 'Out of Scope',
|
|
15
|
+
specBreakdown: 'Spec Breakdown',
|
|
16
|
+
specId: 'ID',
|
|
17
|
+
title: 'Title',
|
|
18
|
+
type: 'Type',
|
|
19
|
+
difficulty: 'Difficulty',
|
|
20
|
+
risk: 'Risk',
|
|
21
|
+
devHours: 'Dev Hours',
|
|
22
|
+
reviewHours: 'Review Hours',
|
|
23
|
+
cost: 'Cost (USD)',
|
|
24
|
+
status: 'Status',
|
|
25
|
+
subtotal: 'Subtotal',
|
|
26
|
+
total: 'Total',
|
|
27
|
+
timeline_section: 'Timeline & Schedule',
|
|
28
|
+
budget: 'Budget & Costs',
|
|
29
|
+
apiCosts: 'API Costs',
|
|
30
|
+
humanCosts: 'Human Costs',
|
|
31
|
+
infrastructure: 'Infrastructure',
|
|
32
|
+
investmentSummary: 'Investment Summary',
|
|
33
|
+
architecture: 'Project Architecture',
|
|
34
|
+
riskAnalysis: 'Risk Analysis',
|
|
35
|
+
category: 'Category',
|
|
36
|
+
probability: 'Probability',
|
|
37
|
+
impactUsd: 'Impact (USD)',
|
|
38
|
+
impactDays: 'Impact (Days)',
|
|
39
|
+
mitigation: 'Mitigation',
|
|
40
|
+
owner: 'Owner',
|
|
41
|
+
decisions: 'Architectural Decisions',
|
|
42
|
+
what: 'Decision',
|
|
43
|
+
why: 'Rationale',
|
|
44
|
+
alternatives: 'Alternatives',
|
|
45
|
+
decidedBy: 'Decided By',
|
|
46
|
+
impactAnalysis: 'Impact Analysis',
|
|
47
|
+
affectedModules: 'Affected Modules',
|
|
48
|
+
affectedFiles: 'Affected Files',
|
|
49
|
+
breakingChanges: 'Breaking Changes',
|
|
50
|
+
rollbackPlan: 'Rollback Plan',
|
|
51
|
+
teamResources: 'Team & Resources',
|
|
52
|
+
pricingMethodology: 'Pricing Methodology',
|
|
53
|
+
qualityMetrics: 'Quality Metrics',
|
|
54
|
+
accuracyScore: 'Accuracy Score',
|
|
55
|
+
livingSpec: 'Living Spec Status',
|
|
56
|
+
completion: 'Completion',
|
|
57
|
+
driftDetected: 'Drift Detected',
|
|
58
|
+
assumptions: 'Assumptions & Constraints',
|
|
59
|
+
postLaunch: 'Post-Launch Plan',
|
|
60
|
+
moduleMapping: 'Module Mapping',
|
|
61
|
+
module: 'Module',
|
|
62
|
+
files: 'Files',
|
|
63
|
+
coverage: 'Coverage',
|
|
64
|
+
footer: 'Generated by Planu — Spec Driven Development · planu.dev',
|
|
65
|
+
phase: 'Phase',
|
|
66
|
+
noData: 'No data available',
|
|
67
|
+
weeks: 'weeks',
|
|
68
|
+
days: 'days',
|
|
69
|
+
hours: 'hours',
|
|
70
|
+
};
|
|
71
|
+
const ES = {
|
|
72
|
+
generatedBy: 'Generado por Planu',
|
|
73
|
+
confidential: 'CONFIDENCIAL',
|
|
74
|
+
expires: 'Válido hasta',
|
|
75
|
+
executiveSummary: 'Resumen Ejecutivo',
|
|
76
|
+
totalInvestment: 'Inversión Total',
|
|
77
|
+
estimatedHours: 'Horas Estimadas',
|
|
78
|
+
totalSpecs: 'Total de Specs',
|
|
79
|
+
timeline: 'Cronograma',
|
|
80
|
+
avgRisk: 'Riesgo Promedio',
|
|
81
|
+
completionRate: 'Tasa de Completitud',
|
|
82
|
+
scope: 'Alcance del Proyecto',
|
|
83
|
+
inScope: 'En Alcance',
|
|
84
|
+
outOfScope: 'Fuera de Alcance',
|
|
85
|
+
specBreakdown: 'Desglose por Spec',
|
|
86
|
+
specId: 'ID',
|
|
87
|
+
title: 'Título',
|
|
88
|
+
type: 'Tipo',
|
|
89
|
+
difficulty: 'Dificultad',
|
|
90
|
+
risk: 'Riesgo',
|
|
91
|
+
devHours: 'Horas Dev',
|
|
92
|
+
reviewHours: 'Horas Review',
|
|
93
|
+
cost: 'Costo (USD)',
|
|
94
|
+
status: 'Estado',
|
|
95
|
+
subtotal: 'Subtotal',
|
|
96
|
+
total: 'Total',
|
|
97
|
+
timeline_section: 'Cronograma y Timeline',
|
|
98
|
+
budget: 'Presupuesto y Costos',
|
|
99
|
+
apiCosts: 'Costos de API',
|
|
100
|
+
humanCosts: 'Costos Humanos',
|
|
101
|
+
infrastructure: 'Infraestructura',
|
|
102
|
+
investmentSummary: 'Resumen de Inversión',
|
|
103
|
+
architecture: 'Arquitectura del Proyecto',
|
|
104
|
+
riskAnalysis: 'Análisis de Riesgos',
|
|
105
|
+
category: 'Categoría',
|
|
106
|
+
probability: 'Probabilidad',
|
|
107
|
+
impactUsd: 'Impacto (USD)',
|
|
108
|
+
impactDays: 'Impacto (Días)',
|
|
109
|
+
mitigation: 'Mitigación',
|
|
110
|
+
owner: 'Responsable',
|
|
111
|
+
decisions: 'Decisiones Arquitectónicas',
|
|
112
|
+
what: 'Decisión',
|
|
113
|
+
why: 'Justificación',
|
|
114
|
+
alternatives: 'Alternativas',
|
|
115
|
+
decidedBy: 'Decidido por',
|
|
116
|
+
impactAnalysis: 'Análisis de Impacto',
|
|
117
|
+
affectedModules: 'Módulos Afectados',
|
|
118
|
+
affectedFiles: 'Archivos Afectados',
|
|
119
|
+
breakingChanges: 'Cambios Disruptivos',
|
|
120
|
+
rollbackPlan: 'Plan de Rollback',
|
|
121
|
+
teamResources: 'Equipo y Recursos',
|
|
122
|
+
pricingMethodology: 'Metodología de Precios',
|
|
123
|
+
qualityMetrics: 'Métricas de Calidad',
|
|
124
|
+
accuracyScore: 'Score de Precisión',
|
|
125
|
+
livingSpec: 'Estado Living Spec',
|
|
126
|
+
completion: 'Completitud',
|
|
127
|
+
driftDetected: 'Drift Detectado',
|
|
128
|
+
assumptions: 'Supuestos y Restricciones',
|
|
129
|
+
postLaunch: 'Plan Post-Lanzamiento',
|
|
130
|
+
moduleMapping: 'Mapeo de Módulos',
|
|
131
|
+
module: 'Módulo',
|
|
132
|
+
files: 'Archivos',
|
|
133
|
+
coverage: 'Cobertura',
|
|
134
|
+
footer: 'Generado por Planu — Spec Driven Development · planu.dev',
|
|
135
|
+
phase: 'Fase',
|
|
136
|
+
noData: 'Sin datos disponibles',
|
|
137
|
+
weeks: 'semanas',
|
|
138
|
+
days: 'días',
|
|
139
|
+
hours: 'horas',
|
|
140
|
+
};
|
|
141
|
+
const PT = {
|
|
142
|
+
generatedBy: 'Gerado por Planu',
|
|
143
|
+
confidential: 'CONFIDENCIAL',
|
|
144
|
+
expires: 'Válido até',
|
|
145
|
+
executiveSummary: 'Resumo Executivo',
|
|
146
|
+
totalInvestment: 'Investimento Total',
|
|
147
|
+
estimatedHours: 'Horas Estimadas',
|
|
148
|
+
totalSpecs: 'Total de Specs',
|
|
149
|
+
timeline: 'Cronograma',
|
|
150
|
+
avgRisk: 'Risco Médio',
|
|
151
|
+
completionRate: 'Taxa de Conclusão',
|
|
152
|
+
scope: 'Escopo do Projeto',
|
|
153
|
+
inScope: 'No Escopo',
|
|
154
|
+
outOfScope: 'Fora do Escopo',
|
|
155
|
+
specBreakdown: 'Detalhamento por Spec',
|
|
156
|
+
specId: 'ID',
|
|
157
|
+
title: 'Título',
|
|
158
|
+
type: 'Tipo',
|
|
159
|
+
difficulty: 'Dificuldade',
|
|
160
|
+
risk: 'Risco',
|
|
161
|
+
devHours: 'Horas Dev',
|
|
162
|
+
reviewHours: 'Horas Review',
|
|
163
|
+
cost: 'Custo (USD)',
|
|
164
|
+
status: 'Status',
|
|
165
|
+
subtotal: 'Subtotal',
|
|
166
|
+
total: 'Total',
|
|
167
|
+
timeline_section: 'Cronograma e Agenda',
|
|
168
|
+
budget: 'Orçamento e Custos',
|
|
169
|
+
apiCosts: 'Custos de API',
|
|
170
|
+
humanCosts: 'Custos Humanos',
|
|
171
|
+
infrastructure: 'Infraestrutura',
|
|
172
|
+
investmentSummary: 'Resumo do Investimento',
|
|
173
|
+
architecture: 'Arquitetura do Projeto',
|
|
174
|
+
riskAnalysis: 'Análise de Riscos',
|
|
175
|
+
category: 'Categoria',
|
|
176
|
+
probability: 'Probabilidade',
|
|
177
|
+
impactUsd: 'Impacto (USD)',
|
|
178
|
+
impactDays: 'Impacto (Dias)',
|
|
179
|
+
mitigation: 'Mitigação',
|
|
180
|
+
owner: 'Responsável',
|
|
181
|
+
decisions: 'Decisões Arquiteturais',
|
|
182
|
+
what: 'Decisão',
|
|
183
|
+
why: 'Justificativa',
|
|
184
|
+
alternatives: 'Alternativas',
|
|
185
|
+
decidedBy: 'Decidido por',
|
|
186
|
+
impactAnalysis: 'Análise de Impacto',
|
|
187
|
+
affectedModules: 'Módulos Afetados',
|
|
188
|
+
affectedFiles: 'Arquivos Afetados',
|
|
189
|
+
breakingChanges: 'Mudanças Disruptivas',
|
|
190
|
+
rollbackPlan: 'Plano de Rollback',
|
|
191
|
+
teamResources: 'Equipe e Recursos',
|
|
192
|
+
pricingMethodology: 'Metodologia de Preços',
|
|
193
|
+
qualityMetrics: 'Métricas de Qualidade',
|
|
194
|
+
accuracyScore: 'Score de Precisão',
|
|
195
|
+
livingSpec: 'Status Living Spec',
|
|
196
|
+
completion: 'Conclusão',
|
|
197
|
+
driftDetected: 'Drift Detectado',
|
|
198
|
+
assumptions: 'Premissas e Restrições',
|
|
199
|
+
postLaunch: 'Plano Pós-Lançamento',
|
|
200
|
+
moduleMapping: 'Mapeamento de Módulos',
|
|
201
|
+
module: 'Módulo',
|
|
202
|
+
files: 'Arquivos',
|
|
203
|
+
coverage: 'Cobertura',
|
|
204
|
+
footer: 'Gerado por Planu — Spec Driven Development · planu.dev',
|
|
205
|
+
phase: 'Fase',
|
|
206
|
+
noData: 'Sem dados disponíveis',
|
|
207
|
+
weeks: 'semanas',
|
|
208
|
+
days: 'dias',
|
|
209
|
+
hours: 'horas',
|
|
210
|
+
};
|
|
211
|
+
const TRANSLATIONS = {
|
|
212
|
+
en: EN,
|
|
213
|
+
es: ES,
|
|
214
|
+
pt: PT,
|
|
215
|
+
};
|
|
216
|
+
/**
|
|
217
|
+
* Get all translation strings for the given language.
|
|
218
|
+
* Falls back to English for unknown keys.
|
|
219
|
+
*/
|
|
220
|
+
export function getTranslations(lang = 'en') {
|
|
221
|
+
return TRANSLATIONS[lang] ?? EN;
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Translate a single key.
|
|
225
|
+
*/
|
|
226
|
+
export function t(lang, key) {
|
|
227
|
+
const map = TRANSLATIONS[lang] ?? EN;
|
|
228
|
+
return map[key] ?? key;
|
|
229
|
+
}
|
|
230
|
+
//# sourceMappingURL=proposal-i18n.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proposal-i18n.js","sourceRoot":"","sources":["../../../../src/engine/doc-generator/proposal/proposal-i18n.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { KpiItem } from '../../../types/docs.js';
|
|
2
|
+
export type { KpiItem };
|
|
3
|
+
/**
|
|
4
|
+
* Build a responsive KPI grid with large value + small label per card.
|
|
5
|
+
* Uses CSS class `.kpi-grid` and `.kpi-card` from proposal-themes.ts.
|
|
6
|
+
*/
|
|
7
|
+
export declare function buildKpiGrid(kpis: KpiItem[]): string;
|
|
8
|
+
//# sourceMappingURL=proposal-kpi-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proposal-kpi-builder.d.ts","sourceRoot":"","sources":["../../../../src/engine/doc-generator/proposal/proposal-kpi-builder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEtD,YAAY,EAAE,OAAO,EAAE,CAAC;AAExB;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,CAqBpD"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build a responsive KPI grid with large value + small label per card.
|
|
3
|
+
* Uses CSS class `.kpi-grid` and `.kpi-card` from proposal-themes.ts.
|
|
4
|
+
*/
|
|
5
|
+
export function buildKpiGrid(kpis) {
|
|
6
|
+
if (kpis.length === 0) {
|
|
7
|
+
return '';
|
|
8
|
+
}
|
|
9
|
+
const cards = kpis
|
|
10
|
+
.map((kpi) => {
|
|
11
|
+
const valueClass = kpi.variant === 'accent'
|
|
12
|
+
? 'kpi-value accent'
|
|
13
|
+
: kpi.variant === 'secondary'
|
|
14
|
+
? 'kpi-value secondary'
|
|
15
|
+
: 'kpi-value';
|
|
16
|
+
return `<div class="kpi-card">
|
|
17
|
+
<div class="${valueClass}">${escapeHtml(kpi.value)}</div>
|
|
18
|
+
<div class="kpi-label">${escapeHtml(kpi.label)}</div>
|
|
19
|
+
</div>`;
|
|
20
|
+
})
|
|
21
|
+
.join('\n');
|
|
22
|
+
return `<div class="kpi-grid">${cards}</div>`;
|
|
23
|
+
}
|
|
24
|
+
// Internal helper
|
|
25
|
+
function escapeHtml(str) {
|
|
26
|
+
return str
|
|
27
|
+
.replace(/&/g, '&')
|
|
28
|
+
.replace(/</g, '<')
|
|
29
|
+
.replace(/>/g, '>')
|
|
30
|
+
.replace(/"/g, '"');
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=proposal-kpi-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proposal-kpi-builder.js","sourceRoot":"","sources":["../../../../src/engine/doc-generator/proposal/proposal-kpi-builder.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,IAAe;IAC1C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,KAAK,GAAG,IAAI;SACf,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACX,MAAM,UAAU,GACd,GAAG,CAAC,OAAO,KAAK,QAAQ;YACtB,CAAC,CAAC,kBAAkB;YACpB,CAAC,CAAC,GAAG,CAAC,OAAO,KAAK,WAAW;gBAC3B,CAAC,CAAC,qBAAqB;gBACvB,CAAC,CAAC,WAAW,CAAC;QACpB,OAAO;gBACG,UAAU,KAAK,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;2BACzB,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;OACzC,CAAC;IACJ,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO,yBAAyB,KAAK,QAAQ,CAAC;AAChD,CAAC;AAED,kBAAkB;AAClB,SAAS,UAAU,CAAC,GAAW;IAC7B,OAAO,GAAG;SACP,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7B,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ProposalData } from '../../../types/docs.js';
|
|
2
|
+
export declare function buildImpactAnalysisSection(data: ProposalData): string;
|
|
3
|
+
export declare function buildTeamResourcesSection(data: ProposalData): string;
|
|
4
|
+
export declare function buildPricingMethodologySection(data: ProposalData): string;
|
|
5
|
+
export declare function buildQualityMetricsSection(data: ProposalData): string;
|
|
6
|
+
export declare function buildLivingSpecSection(data: ProposalData): string;
|
|
7
|
+
export declare function buildAssumptionsSection(data: ProposalData): string;
|
|
8
|
+
export declare function buildAlternativesSection(data: ProposalData): string;
|
|
9
|
+
export declare function buildPostLaunchSection(data: ProposalData): string;
|
|
10
|
+
export declare function buildModuleMappingSection(data: ProposalData): string;
|
|
11
|
+
export declare function buildFooterSection(data: ProposalData): string;
|
|
12
|
+
export declare function buildGapAnalysisSection(data: ProposalData): string;
|
|
13
|
+
export declare function buildDesignSystemSection(data: ProposalData): string;
|
|
14
|
+
//# sourceMappingURL=proposal-section-builders-advanced.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proposal-section-builders-advanced.d.ts","sourceRoot":"","sources":["../../../../src/engine/doc-generator/proposal/proposal-section-builders-advanced.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AA4B3D,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CA0BrE;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAsBpE;AAED,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAWzE;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAsBrE;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAmBjE;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAalE;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CA0BnE;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAajE;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CA+BpE;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAW7D;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CA8BlE;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CA4BnE"}
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
import { t } from './proposal-i18n.js';
|
|
2
|
+
function escapeHtml(str) {
|
|
3
|
+
return str
|
|
4
|
+
.replace(/&/g, '&')
|
|
5
|
+
.replace(/</g, '<')
|
|
6
|
+
.replace(/>/g, '>')
|
|
7
|
+
.replace(/"/g, '"');
|
|
8
|
+
}
|
|
9
|
+
function sectionTitle(icon, text) {
|
|
10
|
+
return `<h2 class="section-title"><span class="icon">${icon}</span>${escapeHtml(text)}</h2>`;
|
|
11
|
+
}
|
|
12
|
+
function langFrom(data) {
|
|
13
|
+
return (data.config.language ?? 'en');
|
|
14
|
+
}
|
|
15
|
+
function currency(data) {
|
|
16
|
+
return data.config.currency ?? 'USD';
|
|
17
|
+
}
|
|
18
|
+
function formatMoney(amount, curr) {
|
|
19
|
+
return `${curr} ${amount.toLocaleString('en-US', { minimumFractionDigits: 0, maximumFractionDigits: 0 })}`;
|
|
20
|
+
}
|
|
21
|
+
export function buildImpactAnalysisSection(data) {
|
|
22
|
+
const lang = langFrom(data);
|
|
23
|
+
const specs = data.specs;
|
|
24
|
+
const specsWithImpact = specs.filter((s) => s.impactAnalysis !== null);
|
|
25
|
+
if (specsWithImpact.length === 0) {
|
|
26
|
+
return '';
|
|
27
|
+
}
|
|
28
|
+
const allModules = [
|
|
29
|
+
...new Set(specsWithImpact.flatMap((s) => s.impactAnalysis?.affectedModules ?? [])),
|
|
30
|
+
];
|
|
31
|
+
const hasBreaking = specsWithImpact.some((s) => s.impactAnalysis?.breakingChanges);
|
|
32
|
+
const breakingBadge = hasBreaking
|
|
33
|
+
? `<span class="badge badge-risk-high">BREAKING CHANGES</span>`
|
|
34
|
+
: `<span class="badge badge-status-done">No Breaking Changes</span>`;
|
|
35
|
+
const modulesHtml = allModules.length > 0
|
|
36
|
+
? `<p><strong>${t(lang, 'affectedModules')}:</strong> ${allModules.map(escapeHtml).join(', ')}</p>`
|
|
37
|
+
: '';
|
|
38
|
+
return `<section>
|
|
39
|
+
${sectionTitle('🔧', t(lang, 'impactAnalysis'))}
|
|
40
|
+
<div class="card"><p>${breakingBadge}</p>${modulesHtml}</div>
|
|
41
|
+
</section>`;
|
|
42
|
+
}
|
|
43
|
+
export function buildTeamResourcesSection(data) {
|
|
44
|
+
const lang = langFrom(data);
|
|
45
|
+
const specs = data.specs;
|
|
46
|
+
if (specs.length === 0) {
|
|
47
|
+
return '';
|
|
48
|
+
}
|
|
49
|
+
const hourlyRate = data.config.hourlyRate;
|
|
50
|
+
const devHours = specs.reduce((s, sp) => s + sp.estimation.devHours, 0);
|
|
51
|
+
const reviewHours = specs.reduce((s, sp) => s + sp.estimation.reviewHours, 0);
|
|
52
|
+
const rateHtml = hourlyRate
|
|
53
|
+
? `<p><strong>Hourly Rate:</strong> ${formatMoney(hourlyRate, currency(data))}/hr</p>`
|
|
54
|
+
: '';
|
|
55
|
+
return `<section>
|
|
56
|
+
${sectionTitle('👥', t(lang, 'teamResources'))}
|
|
57
|
+
<div class="card">
|
|
58
|
+
<p><strong>${t(lang, 'devHours')}:</strong> ${String(devHours)}h</p>
|
|
59
|
+
<p><strong>${t(lang, 'reviewHours')}:</strong> ${String(reviewHours)}h</p>
|
|
60
|
+
${rateHtml}
|
|
61
|
+
</div>
|
|
62
|
+
</section>`;
|
|
63
|
+
}
|
|
64
|
+
export function buildPricingMethodologySection(data) {
|
|
65
|
+
const lang = langFrom(data);
|
|
66
|
+
const hourlyRate = data.config.hourlyRate;
|
|
67
|
+
return `<section>
|
|
68
|
+
${sectionTitle('💲', t(lang, 'pricingMethodology'))}
|
|
69
|
+
<div class="card">
|
|
70
|
+
<p>All estimates are calculated using the Planu estimation engine.</p>
|
|
71
|
+
${hourlyRate ? `<p><strong>Rate:</strong> ${formatMoney(hourlyRate, currency(data))}/hr</p>` : ''}
|
|
72
|
+
<p>Each spec includes dev hours and review hours (QA, code review, documentation).</p>
|
|
73
|
+
</div>
|
|
74
|
+
</section>`;
|
|
75
|
+
}
|
|
76
|
+
export function buildQualityMetricsSection(data) {
|
|
77
|
+
const lang = langFrom(data);
|
|
78
|
+
const metrics = data.metrics;
|
|
79
|
+
if (!metrics || metrics.entries.length === 0) {
|
|
80
|
+
return '';
|
|
81
|
+
}
|
|
82
|
+
const entries = metrics.entries.slice(-10);
|
|
83
|
+
const avgAccuracy = entries.length > 0
|
|
84
|
+
? Math.round(entries.reduce((s, e) => s + e.accuracyScore, 0) / entries.length)
|
|
85
|
+
: 0;
|
|
86
|
+
return `<section>
|
|
87
|
+
${sectionTitle('📈', t(lang, 'qualityMetrics'))}
|
|
88
|
+
<div class="card">
|
|
89
|
+
<p><strong>${t(lang, 'accuracyScore')}:</strong> ${String(avgAccuracy)}/100 (avg of last ${String(entries.length)} specs)</p>
|
|
90
|
+
<div class="progress-track" style="margin-top:8px;">
|
|
91
|
+
<div class="progress-bar ${avgAccuracy >= 80 ? 'high' : avgAccuracy >= 60 ? 'medium' : 'low'}" style="width:${String(avgAccuracy)}%;"></div>
|
|
92
|
+
</div>
|
|
93
|
+
</div>
|
|
94
|
+
</section>`;
|
|
95
|
+
}
|
|
96
|
+
export function buildLivingSpecSection(data) {
|
|
97
|
+
const lang = langFrom(data);
|
|
98
|
+
const specs = data.specs;
|
|
99
|
+
if (specs.length === 0) {
|
|
100
|
+
return '';
|
|
101
|
+
}
|
|
102
|
+
const doneCount = specs.filter((s) => s.status === 'done').length;
|
|
103
|
+
const pct = Math.round((doneCount / specs.length) * 100);
|
|
104
|
+
return `<section>
|
|
105
|
+
${sectionTitle('🌟', t(lang, 'livingSpec'))}
|
|
106
|
+
<div class="card">
|
|
107
|
+
<p><strong>${t(lang, 'completion')}:</strong> ${String(pct)}% (${String(doneCount)} / ${String(specs.length)} specs)</p>
|
|
108
|
+
<div class="progress-track" style="margin-top:8px;">
|
|
109
|
+
<div class="progress-bar ${pct >= 80 ? 'high' : pct >= 50 ? 'medium' : 'low'}" style="width:${String(pct)}%;"></div>
|
|
110
|
+
</div>
|
|
111
|
+
</div>
|
|
112
|
+
</section>`;
|
|
113
|
+
}
|
|
114
|
+
export function buildAssumptionsSection(data) {
|
|
115
|
+
const lang = langFrom(data);
|
|
116
|
+
return `<section>
|
|
117
|
+
${sectionTitle('📜', t(lang, 'assumptions'))}
|
|
118
|
+
<div class="card">
|
|
119
|
+
<ul>
|
|
120
|
+
<li>All estimations assume a senior engineer profile unless otherwise specified.</li>
|
|
121
|
+
<li>Specs marked as "draft" are subject to change and may affect final costs.</li>
|
|
122
|
+
<li>Infrastructure and third-party service costs are estimated and may vary.</li>
|
|
123
|
+
<li>Timeline assumes no major blocking dependencies or team changes.</li>
|
|
124
|
+
</ul>
|
|
125
|
+
</div>
|
|
126
|
+
</section>`;
|
|
127
|
+
}
|
|
128
|
+
export function buildAlternativesSection(data) {
|
|
129
|
+
const lang = langFrom(data);
|
|
130
|
+
const decisions = data.decisions;
|
|
131
|
+
if (!decisions || decisions.length === 0) {
|
|
132
|
+
return '';
|
|
133
|
+
}
|
|
134
|
+
const archDecisions = decisions.filter((d) => d.category === 'architecture' && d.alternatives.length > 0);
|
|
135
|
+
if (archDecisions.length === 0) {
|
|
136
|
+
return '';
|
|
137
|
+
}
|
|
138
|
+
const items = archDecisions
|
|
139
|
+
.slice(0, 8)
|
|
140
|
+
.map((d) => `<div class="card">
|
|
141
|
+
<h3>${escapeHtml(d.what)}</h3>
|
|
142
|
+
<p><strong>Chosen:</strong> ${escapeHtml(d.why)}</p>
|
|
143
|
+
<p><strong>${t(lang, 'alternatives')}:</strong> ${d.alternatives.map(escapeHtml).join(', ')}</p>
|
|
144
|
+
</div>`)
|
|
145
|
+
.join('');
|
|
146
|
+
return `<section>${sectionTitle('🔄', 'Alternatives Considered')}${items}</section>`;
|
|
147
|
+
}
|
|
148
|
+
export function buildPostLaunchSection(data) {
|
|
149
|
+
const lang = langFrom(data);
|
|
150
|
+
return `<section>
|
|
151
|
+
${sectionTitle('🚀', t(lang, 'postLaunch'))}
|
|
152
|
+
<div class="card">
|
|
153
|
+
<ul>
|
|
154
|
+
<li>Living spec monitoring via Planu drift detection</li>
|
|
155
|
+
<li>Quarterly spec review and reconciliation cycle</li>
|
|
156
|
+
<li>Knowledge base maintenance for onboarding new team members</li>
|
|
157
|
+
<li>Automated quality metrics tracking via metrics-store</li>
|
|
158
|
+
</ul>
|
|
159
|
+
</div>
|
|
160
|
+
</section>`;
|
|
161
|
+
}
|
|
162
|
+
export function buildModuleMappingSection(data) {
|
|
163
|
+
const lang = langFrom(data);
|
|
164
|
+
const knowledge = data.knowledge;
|
|
165
|
+
if (!knowledge || knowledge.apps.length === 0) {
|
|
166
|
+
return '';
|
|
167
|
+
}
|
|
168
|
+
const rows = knowledge.apps
|
|
169
|
+
.slice(0, 15)
|
|
170
|
+
.map((app) => {
|
|
171
|
+
const relatedSpecs = data.specs.filter((s) => s.impactAnalysis?.affectedModules.includes(app.name));
|
|
172
|
+
return `<tr>
|
|
173
|
+
<td><strong>${escapeHtml(app.name)}</strong></td>
|
|
174
|
+
<td>${escapeHtml(app.type)}</td>
|
|
175
|
+
<td>${escapeHtml(app.language)}</td>
|
|
176
|
+
<td>${String(relatedSpecs.length)} specs</td>
|
|
177
|
+
</tr>`;
|
|
178
|
+
})
|
|
179
|
+
.join('');
|
|
180
|
+
return `<section>
|
|
181
|
+
${sectionTitle('📚', t(lang, 'moduleMapping'))}
|
|
182
|
+
<div class="table-wrap"><table class="spec-table">
|
|
183
|
+
<thead><tr>
|
|
184
|
+
<th>${t(lang, 'module')}</th><th>${t(lang, 'type')}</th><th>Language</th><th>Specs</th>
|
|
185
|
+
</tr></thead>
|
|
186
|
+
<tbody>${rows}</tbody>
|
|
187
|
+
</table></div>
|
|
188
|
+
</section>`;
|
|
189
|
+
}
|
|
190
|
+
export function buildFooterSection(data) {
|
|
191
|
+
const lang = langFrom(data);
|
|
192
|
+
const date = new Date().toISOString();
|
|
193
|
+
const confidentialNote = data.config.confidential
|
|
194
|
+
? `<span>🔒 ${t(lang, 'confidential')}</span>`
|
|
195
|
+
: '';
|
|
196
|
+
return `<footer class="footer">
|
|
197
|
+
<span>${t(lang, 'footer')}</span>
|
|
198
|
+
<span>${escapeHtml(date.slice(0, 10))}</span>
|
|
199
|
+
${confidentialNote}
|
|
200
|
+
</footer>`;
|
|
201
|
+
}
|
|
202
|
+
export function buildGapAnalysisSection(data) {
|
|
203
|
+
const specs = data.specs;
|
|
204
|
+
const specsWithImpact = specs.filter((s) => s.impactAnalysis !== null);
|
|
205
|
+
if (specsWithImpact.length === 0) {
|
|
206
|
+
return '';
|
|
207
|
+
}
|
|
208
|
+
const allFiles = [
|
|
209
|
+
...new Set(specsWithImpact.flatMap((s) => s.impactAnalysis?.affectedFiles ?? [])),
|
|
210
|
+
];
|
|
211
|
+
const dbFiles = allFiles.filter((f) => /migrat|schema|sql|db/i.test(f));
|
|
212
|
+
if (dbFiles.length === 0) {
|
|
213
|
+
return '';
|
|
214
|
+
}
|
|
215
|
+
const items = dbFiles
|
|
216
|
+
.slice(0, 10)
|
|
217
|
+
.map((f) => `<li style="border-left:3px solid #d97706;padding-left:8px;margin:4px 0;"><code>${escapeHtml(f)}</code></li>`)
|
|
218
|
+
.join('');
|
|
219
|
+
return `<section>
|
|
220
|
+
${sectionTitle('🗃', 'Gap Analysis — DB & Infra')}
|
|
221
|
+
<div class="card">
|
|
222
|
+
<p>Database and infrastructure files requiring changes:</p>
|
|
223
|
+
<ul style="list-style:none;padding:0;margin-top:8px;">${items}</ul>
|
|
224
|
+
</div>
|
|
225
|
+
</section>`;
|
|
226
|
+
}
|
|
227
|
+
export function buildDesignSystemSection(data) {
|
|
228
|
+
const knowledge = data.knowledge;
|
|
229
|
+
if (!knowledge) {
|
|
230
|
+
return '';
|
|
231
|
+
}
|
|
232
|
+
const toolEntries = Object.entries(knowledge.tooling ?? {});
|
|
233
|
+
if (toolEntries.length === 0) {
|
|
234
|
+
return '';
|
|
235
|
+
}
|
|
236
|
+
const badges = toolEntries
|
|
237
|
+
.slice(0, 8)
|
|
238
|
+
.map(([key, val]) => `<span class="badge badge-status-draft">${escapeHtml(key)}: ${escapeHtml(val)}</span>`)
|
|
239
|
+
.join(' ');
|
|
240
|
+
return `<section>
|
|
241
|
+
${sectionTitle('🎨', 'Design System & Reuse')}
|
|
242
|
+
<div class="card">
|
|
243
|
+
<p><strong>Tooling detected:</strong> ${badges}</p>
|
|
244
|
+
<p>Component reuse is estimated to reduce implementation time by 15-30% for UI-heavy specs.</p>
|
|
245
|
+
</div>
|
|
246
|
+
</section>`;
|
|
247
|
+
}
|
|
248
|
+
//# sourceMappingURL=proposal-section-builders-advanced.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proposal-section-builders-advanced.js","sourceRoot":"","sources":["../../../../src/engine/doc-generator/proposal/proposal-section-builders-advanced.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ProposalData } from '../../../types/docs.js';
|
|
2
|
+
export declare function buildHeroSection(data: ProposalData): string;
|
|
3
|
+
export declare function buildExecutiveSummarySection(data: ProposalData): string;
|
|
4
|
+
export declare function buildScopeSection(data: ProposalData): string;
|
|
5
|
+
export declare function buildSpecBreakdownSection(data: ProposalData): string;
|
|
6
|
+
export declare function buildTimelineSection(data: ProposalData): string;
|
|
7
|
+
export declare function buildBudgetSection(data: ProposalData): string;
|
|
8
|
+
export declare function buildInvestmentSummarySection(data: ProposalData): string;
|
|
9
|
+
export declare function buildArchitectureSection(data: ProposalData): string;
|
|
10
|
+
export declare function buildRiskSection(data: ProposalData): string;
|
|
11
|
+
export declare function buildDecisionsSection(data: ProposalData): string;
|
|
12
|
+
export { buildImpactAnalysisSection, buildTeamResourcesSection, buildPricingMethodologySection, buildQualityMetricsSection, buildLivingSpecSection, buildAssumptionsSection, buildAlternativesSection, buildPostLaunchSection, buildModuleMappingSection, buildFooterSection, buildGapAnalysisSection, buildDesignSystemSection, } from './proposal-section-builders-advanced.js';
|
|
13
|
+
//# sourceMappingURL=proposal-section-builders.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proposal-section-builders.d.ts","sourceRoot":"","sources":["../../../../src/engine/doc-generator/proposal/proposal-section-builders.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAiD3D,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAiD3D;AAED,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAuEvE;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CA6B5D;AA0CD,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAgDpE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAgB/D;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CA2C7D;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAiBxE;AAID,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAwCnE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CA+C3D;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAsChE;AAED,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,8BAA8B,EAC9B,0BAA0B,EAC1B,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,EACxB,sBAAsB,EACtB,yBAAyB,EACzB,kBAAkB,EAClB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,yCAAyC,CAAC"}
|