@maestro-ai/mcp-server 5.3.6 → 5.3.8
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/flows/classifier.d.ts +12 -0
- package/dist/flows/classifier.d.ts.map +1 -1
- package/dist/flows/classifier.js +12 -0
- package/dist/flows/classifier.js.map +1 -1
- package/dist/handlers/specialist-phase-handler.d.ts.map +1 -1
- package/dist/handlers/specialist-phase-handler.js +187 -40
- package/dist/handlers/specialist-phase-handler.js.map +1 -1
- package/dist/middleware/index.d.ts +1 -0
- package/dist/middleware/index.d.ts.map +1 -1
- package/dist/middleware/index.js +1 -0
- package/dist/middleware/index.js.map +1 -1
- package/dist/middleware/validation.middleware.d.ts +31 -0
- package/dist/middleware/validation.middleware.d.ts.map +1 -0
- package/dist/middleware/validation.middleware.js +75 -0
- package/dist/middleware/validation.middleware.js.map +1 -0
- package/dist/services/auto-classifier.service.d.ts +91 -0
- package/dist/services/auto-classifier.service.d.ts.map +1 -0
- package/dist/services/auto-classifier.service.js +531 -0
- package/dist/services/auto-classifier.service.js.map +1 -0
- package/dist/services/classificacao-progressiva.service.d.ts +69 -0
- package/dist/services/classificacao-progressiva.service.d.ts.map +1 -0
- package/dist/services/classificacao-progressiva.service.js +500 -0
- package/dist/services/classificacao-progressiva.service.js.map +1 -0
- package/dist/services/flow-engine.d.ts.map +1 -1
- package/dist/services/flow-engine.js +32 -20
- package/dist/services/flow-engine.js.map +1 -1
- package/dist/services/prompt-validator.service.d.ts +20 -0
- package/dist/services/prompt-validator.service.d.ts.map +1 -0
- package/dist/services/prompt-validator.service.js +53 -0
- package/dist/services/prompt-validator.service.js.map +1 -0
- package/dist/tests/classificacao-progressiva.test.d.ts +5 -0
- package/dist/tests/classificacao-progressiva.test.d.ts.map +1 -0
- package/dist/tests/classificacao-progressiva.test.js +372 -0
- package/dist/tests/classificacao-progressiva.test.js.map +1 -0
- package/dist/tools/consolidated/avancar.d.ts +6 -0
- package/dist/tools/consolidated/avancar.d.ts.map +1 -1
- package/dist/tools/consolidated/avancar.js +247 -9
- package/dist/tools/consolidated/avancar.js.map +1 -1
- package/dist/tools/proximo.d.ts.map +1 -1
- package/dist/tools/proximo.js +90 -91
- package/dist/tools/proximo.js.map +1 -1
- package/dist/types/index.d.ts +21 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,531 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AutoClassifierService v1.0
|
|
3
|
+
*
|
|
4
|
+
* @deprecated v6.0 - Este serviço foi substituído por ClassificacaoProgressivaService
|
|
5
|
+
* que acumula sinais ao longo de múltiplas fases em vez de classificar apenas no PRD.
|
|
6
|
+
*
|
|
7
|
+
* Mantido para compatibilidade e referência, mas não é mais usado no fluxo principal.
|
|
8
|
+
*
|
|
9
|
+
* Serviço de classificação automática de projetos baseado em análise
|
|
10
|
+
* multi-especialista do PRD.
|
|
11
|
+
*
|
|
12
|
+
* Features:
|
|
13
|
+
* - Análise por múltiplos especialistas virtuais (produto, arquitetura, volume)
|
|
14
|
+
* - Inferência automática de stack, integrações, domínio, volume
|
|
15
|
+
* - Cálculo de confianca por critério
|
|
16
|
+
* - Cache de classificações para evitar reprocessamento
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* Serviço principal de classificação automática
|
|
20
|
+
*/
|
|
21
|
+
export class AutoClassifierService {
|
|
22
|
+
especialistas;
|
|
23
|
+
cache = new Map();
|
|
24
|
+
constructor() {
|
|
25
|
+
this.especialistas = [
|
|
26
|
+
new EspecialistaProduto(),
|
|
27
|
+
new EspecialistaArquitetura(),
|
|
28
|
+
new EspecialistaVolume(),
|
|
29
|
+
];
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Classifica um PRD automaticamente usando análise multi-especialista
|
|
33
|
+
*/
|
|
34
|
+
async classificar(prd, prdHash) {
|
|
35
|
+
// Verificar cache
|
|
36
|
+
const hash = prdHash || this.computeHash(prd);
|
|
37
|
+
if (this.cache.has(hash)) {
|
|
38
|
+
return this.cache.get(hash);
|
|
39
|
+
}
|
|
40
|
+
// Análise por cada especialista
|
|
41
|
+
const analises = this.especialistas.map(e => ({
|
|
42
|
+
nome: e.nome,
|
|
43
|
+
...e.analisar(prd),
|
|
44
|
+
}));
|
|
45
|
+
// Agregar pontuação
|
|
46
|
+
let pontosTotais = 0;
|
|
47
|
+
const todosCriterios = [];
|
|
48
|
+
const inferidoPor = [];
|
|
49
|
+
let confiancaTotal = 0;
|
|
50
|
+
const criteriosConfiantes = [];
|
|
51
|
+
const criteriosDuvidosos = [];
|
|
52
|
+
for (const analise of analises) {
|
|
53
|
+
pontosTotais += analise.pontos * (this.especialistas.find(e => e.nome === analise.nome)?.peso || 1);
|
|
54
|
+
todosCriterios.push(...analise.criterios);
|
|
55
|
+
inferidoPor.push(analise.nome);
|
|
56
|
+
confiancaTotal += analise.confianca;
|
|
57
|
+
// Separar critérios por confianca
|
|
58
|
+
for (const criterio of analise.criterios) {
|
|
59
|
+
if (analise.confianca >= 85) {
|
|
60
|
+
criteriosConfiantes.push(`${analise.nome}: ${criterio}`);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
criteriosDuvidosos.push(`${analise.nome}: ${criterio}`);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
// Normalizar pontuação
|
|
68
|
+
pontosTotais = Math.round(pontosTotais / this.especialistas.length);
|
|
69
|
+
const confiancaMedia = Math.round(confiancaTotal / analises.length);
|
|
70
|
+
// Determinar nível
|
|
71
|
+
let nivel;
|
|
72
|
+
if (pontosTotais <= 10) {
|
|
73
|
+
nivel = "simples";
|
|
74
|
+
}
|
|
75
|
+
else if (pontosTotais <= 20) {
|
|
76
|
+
nivel = "medio";
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
nivel = "complexo";
|
|
80
|
+
}
|
|
81
|
+
// Extrair inferências detalhadas
|
|
82
|
+
const inferencias = this.extrairInferencias(prd);
|
|
83
|
+
const resultado = {
|
|
84
|
+
nivel,
|
|
85
|
+
pontuacao: pontosTotais,
|
|
86
|
+
criterios: [...new Set(todosCriterios)], // deduplicar
|
|
87
|
+
confianca: confiancaMedia,
|
|
88
|
+
criteriosConfiantes,
|
|
89
|
+
criteriosDuvidosos,
|
|
90
|
+
inferidoPor,
|
|
91
|
+
inferencias,
|
|
92
|
+
};
|
|
93
|
+
// Cachear resultado
|
|
94
|
+
this.cache.set(hash, resultado);
|
|
95
|
+
return resultado;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Verifica se a classificação pode ser aplicada automaticamente
|
|
99
|
+
*/
|
|
100
|
+
podeAplicarAutomaticamente(classificacao) {
|
|
101
|
+
return classificacao.confianca >= 85 && classificacao.criteriosDuvidosos.length === 0;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Gera mensagem de confirmação para o usuário
|
|
105
|
+
*/
|
|
106
|
+
gerarMensagemConfirmacao(classificacao) {
|
|
107
|
+
const { nivel, confianca, inferencias, criteriosDuvidosos } = classificacao;
|
|
108
|
+
let mensagem = `## 🔍 Classificação Sugerida: **${nivel.toUpperCase()}**\n\n`;
|
|
109
|
+
mensagem += `**Confiança:** ${confianca}%\n\n`;
|
|
110
|
+
// Mostrar inferências
|
|
111
|
+
mensagem += `### 📊 Detalhes Inferidos:\n\n`;
|
|
112
|
+
if (inferencias.stack) {
|
|
113
|
+
mensagem += `**Stack Sugerida:**\n`;
|
|
114
|
+
if (inferencias.stack.frontend)
|
|
115
|
+
mensagem += `- Frontend: ${inferencias.stack.frontend}\n`;
|
|
116
|
+
if (inferencias.stack.backend)
|
|
117
|
+
mensagem += `- Backend: ${inferencias.stack.backend}\n`;
|
|
118
|
+
if (inferencias.stack.database)
|
|
119
|
+
mensagem += `- Database: ${inferencias.stack.database}\n`;
|
|
120
|
+
mensagem += `\n`;
|
|
121
|
+
}
|
|
122
|
+
if (inferencias.integracoes && inferencias.integracoes.lista.length > 0) {
|
|
123
|
+
mensagem += `**Integrações Detectadas:** ${inferencias.integracoes.lista.join(", ")}\n\n`;
|
|
124
|
+
}
|
|
125
|
+
if (inferencias.volume) {
|
|
126
|
+
mensagem += `**Volume Estimado:**\n`;
|
|
127
|
+
mensagem += `- Usuários: ${inferencias.volume.usuarios}\n`;
|
|
128
|
+
mensagem += `- Dados: ${inferencias.volume.dados}\n\n`;
|
|
129
|
+
}
|
|
130
|
+
if (inferencias.domino) {
|
|
131
|
+
mensagem += `**Domínio:** ${inferencias.domino.tipo}\n\n`;
|
|
132
|
+
}
|
|
133
|
+
// Mostrar critérios duvidosos se houver
|
|
134
|
+
if (criteriosDuvidosos.length > 0) {
|
|
135
|
+
mensagem += `⚠️ **Itens que precisam de confirmação:**\n`;
|
|
136
|
+
for (const criterio of criteriosDuvidosos.slice(0, 3)) {
|
|
137
|
+
mensagem += `- ${criterio}\n`;
|
|
138
|
+
}
|
|
139
|
+
mensagem += `\n`;
|
|
140
|
+
}
|
|
141
|
+
if (this.podeAplicarAutomaticamente(classificacao)) {
|
|
142
|
+
mensagem += `✅ **Esta classificação será aplicada automaticamente.**\n`;
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
mensagem += `🤔 **Por favor, confirme se os detalhes acima estão corretos.**\n`;
|
|
146
|
+
}
|
|
147
|
+
return mensagem;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Extrai inferências detalhadas do PRD
|
|
151
|
+
*/
|
|
152
|
+
extrairInferencias(prd) {
|
|
153
|
+
const inferencias = {};
|
|
154
|
+
// Stack
|
|
155
|
+
const stack = this.inferirStack(prd);
|
|
156
|
+
if (stack) {
|
|
157
|
+
inferencias.stack = { ...stack, confianca: 75 };
|
|
158
|
+
}
|
|
159
|
+
// Integrações
|
|
160
|
+
const integracoes = this.inferirIntegracoes(prd);
|
|
161
|
+
if (integracoes.length > 0) {
|
|
162
|
+
inferencias.integracoes = {
|
|
163
|
+
lista: integracoes,
|
|
164
|
+
confianca: Math.min(70 + integracoes.length * 5, 95),
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
// Volume
|
|
168
|
+
const volume = this.inferirVolume(prd);
|
|
169
|
+
if (volume) {
|
|
170
|
+
inferencias.volume = { ...volume, confianca: 70 };
|
|
171
|
+
}
|
|
172
|
+
// Domínio
|
|
173
|
+
const domino = this.inferirDomino(prd);
|
|
174
|
+
if (domino) {
|
|
175
|
+
inferencias.domino = { ...domino, confianca: 80 };
|
|
176
|
+
}
|
|
177
|
+
// Segurança
|
|
178
|
+
const seguranca = this.inferirSeguranca(prd);
|
|
179
|
+
if (seguranca.length > 0) {
|
|
180
|
+
inferencias.seguranca = {
|
|
181
|
+
requisitos: seguranca,
|
|
182
|
+
confianca: 85,
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
// Equipe
|
|
186
|
+
const equipe = this.inferirEquipe(prd);
|
|
187
|
+
if (equipe) {
|
|
188
|
+
inferencias.equipe = { ...equipe, confianca: 65 };
|
|
189
|
+
}
|
|
190
|
+
return inferencias;
|
|
191
|
+
}
|
|
192
|
+
inferirStack(prd) {
|
|
193
|
+
const stack = {};
|
|
194
|
+
let encontrouAlgo = false;
|
|
195
|
+
// Frontend
|
|
196
|
+
const frontendPatterns = [
|
|
197
|
+
{ pattern: /react|next\.?js/i, name: "React/Next.js" },
|
|
198
|
+
{ pattern: /vue|nuxt\.?js/i, name: "Vue/Nuxt.js" },
|
|
199
|
+
{ pattern: /angular/i, name: "Angular" },
|
|
200
|
+
{ pattern: /flutter|react native|mobile/i, name: "Mobile (Flutter/React Native)" },
|
|
201
|
+
];
|
|
202
|
+
for (const { pattern, name } of frontendPatterns) {
|
|
203
|
+
if (pattern.test(prd)) {
|
|
204
|
+
stack.frontend = name;
|
|
205
|
+
encontrouAlgo = true;
|
|
206
|
+
break;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
// Backend
|
|
210
|
+
const backendPatterns = [
|
|
211
|
+
{ pattern: /node\.?js|express|nestjs/i, name: "Node.js" },
|
|
212
|
+
{ pattern: /python|django|fastapi|flask/i, name: "Python" },
|
|
213
|
+
{ pattern: /java|spring/i, name: "Java/Spring" },
|
|
214
|
+
{ pattern: /go|golang/i, name: "Go" },
|
|
215
|
+
{ pattern: /\.net|csharp|c#/i, name: ".NET/C#" },
|
|
216
|
+
];
|
|
217
|
+
for (const { pattern, name } of backendPatterns) {
|
|
218
|
+
if (pattern.test(prd)) {
|
|
219
|
+
stack.backend = name;
|
|
220
|
+
encontrouAlgo = true;
|
|
221
|
+
break;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
// Database
|
|
225
|
+
const dbPatterns = [
|
|
226
|
+
{ pattern: /postgresql|postgres/i, name: "PostgreSQL" },
|
|
227
|
+
{ pattern: /mongodb|mongo/i, name: "MongoDB" },
|
|
228
|
+
{ pattern: /mysql/i, name: "MySQL" },
|
|
229
|
+
{ pattern: /firebase/i, name: "Firebase" },
|
|
230
|
+
{ pattern: /supabase/i, name: "Supabase" },
|
|
231
|
+
];
|
|
232
|
+
for (const { pattern, name } of dbPatterns) {
|
|
233
|
+
if (pattern.test(prd)) {
|
|
234
|
+
stack.database = name;
|
|
235
|
+
encontrouAlgo = true;
|
|
236
|
+
break;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
return encontrouAlgo ? stack : null;
|
|
240
|
+
}
|
|
241
|
+
inferirIntegracoes(prd) {
|
|
242
|
+
const integracoes = [];
|
|
243
|
+
const patterns = [
|
|
244
|
+
{ pattern: /api|integra|webhook/i, name: "APIs externas" },
|
|
245
|
+
{ pattern: /pagamento|stripe|mercadopago|paypal/i, name: "Gateway de pagamento" },
|
|
246
|
+
{ pattern: /autenticação|auth0|firebase auth|oauth|sso/i, name: "Autenticação social" },
|
|
247
|
+
{ pattern: /email|sendgrid|mailchimp/i, name: "Email/SMTP" },
|
|
248
|
+
{ pattern: /sms|whatsapp|telegram/i, name: "Notificações (SMS/WhatsApp)" },
|
|
249
|
+
{ pattern: /storage|s3|cloudinary|firebase storage/i, name: "Armazenamento de arquivos" },
|
|
250
|
+
{ pattern: /analytics|google analytics|mixpanel/i, name: "Analytics" },
|
|
251
|
+
{ pattern: /maps|google maps|mapbox/i, name: "Maps/Geolocalização" },
|
|
252
|
+
];
|
|
253
|
+
for (const { pattern, name } of patterns) {
|
|
254
|
+
if (pattern.test(prd)) {
|
|
255
|
+
integracoes.push(name);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
return [...new Set(integracoes)]; // deduplicar
|
|
259
|
+
}
|
|
260
|
+
inferirVolume(prd) {
|
|
261
|
+
// Detectar volume de usuários
|
|
262
|
+
const usuarioPatterns = [
|
|
263
|
+
{ pattern: /(\d+)\s*(mil|k|milhões?|mi|m)\s*usuários?/i, type: "explicit" },
|
|
264
|
+
{ pattern: /escala\s*(grande|enterprise|massiva)/i, type: "large" },
|
|
265
|
+
{ pattern: /100\+|milhares|milhões/i, type: "large" },
|
|
266
|
+
{ pattern: /pequena escala|poucos usuários|inicial/i, type: "small" },
|
|
267
|
+
];
|
|
268
|
+
let usuarios = "Não especificado";
|
|
269
|
+
for (const { pattern, type } of usuarioPatterns) {
|
|
270
|
+
if (pattern.test(prd)) {
|
|
271
|
+
usuarios = type === "large" ? "Alto (10k+ usuários)" :
|
|
272
|
+
type === "small" ? "Baixo (< 1k usuários)" : "Médio (1k-10k)";
|
|
273
|
+
break;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
// Detectar volume de dados
|
|
277
|
+
const dadosPatterns = [
|
|
278
|
+
{ pattern: /big data|data warehouse|milhões?\s*de\s*registros?/i, type: "large" },
|
|
279
|
+
{ pattern: /arquivos?|imagens?|vídeos?|mídia/i, type: "media" },
|
|
280
|
+
{ pattern: /transações?|pedidos?|vendas?/i, type: "transactional" },
|
|
281
|
+
];
|
|
282
|
+
let dados = "Padrão";
|
|
283
|
+
for (const { pattern, type } of dadosPatterns) {
|
|
284
|
+
if (pattern.test(prd)) {
|
|
285
|
+
dados = type === "large" ? "Alto volume (Big Data)" :
|
|
286
|
+
type === "media" ? "Mídia/Arquivos" : "Transacional";
|
|
287
|
+
break;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
return { usuarios, dados };
|
|
291
|
+
}
|
|
292
|
+
inferirDomino(prd) {
|
|
293
|
+
const patterns = [
|
|
294
|
+
{ pattern: /e-?commerce|loja|venda|produto|pedido|carrinho/i, type: "E-commerce" },
|
|
295
|
+
{ pattern: /saaS|assinatura|subscription|mensalidade/i, type: "SaaS" },
|
|
296
|
+
{ pattern: /marketplace|multi-?vendor/i, type: "Marketplace" },
|
|
297
|
+
{ pattern: /app|mobile|ios|android/i, type: "Aplicativo Mobile" },
|
|
298
|
+
{ pattern: /dashboard|relatório|bi|analytics/i, type: "Dashboard/BI" },
|
|
299
|
+
{ pattern: /educação|curso|aula|escola|e-?learning/i, type: "EdTech" },
|
|
300
|
+
{ pattern: /saúde|médico|clínica|hospital|paciente/i, type: "HealthTech" },
|
|
301
|
+
{ pattern: /financeiro|banco|fintech|pagamento/i, type: "FinTech" },
|
|
302
|
+
{ pattern: /social|rede|comunidade|chat|mensagem/i, type: "Social/Comunidade" },
|
|
303
|
+
];
|
|
304
|
+
for (const { pattern, type } of patterns) {
|
|
305
|
+
if (pattern.test(prd)) {
|
|
306
|
+
return { tipo: type };
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
return null;
|
|
310
|
+
}
|
|
311
|
+
inferirSeguranca(prd) {
|
|
312
|
+
const requisitos = [];
|
|
313
|
+
const patterns = [
|
|
314
|
+
{ pattern: /lgpd|gdpr|lei\s*de\s*dados/i, name: "LGPD/GDPR" },
|
|
315
|
+
{ pattern: /pci-?dss|cartão|crédito/i, name: "PCI-DSS" },
|
|
316
|
+
{ pattern: /hipaa|saúde|médico/i, name: "HIPAA" },
|
|
317
|
+
{ pattern: /autenticação|autorização|jwt|oauth/i, name: "Autenticação/Autorização" },
|
|
318
|
+
{ pattern: /criptografia|encriptação|ssl|tls/i, name: "Criptografia" },
|
|
319
|
+
{ pattern: /senha|password|hash/i, name: "Gestão de senhas" },
|
|
320
|
+
{ pattern: /2fa|mfa|autenticação\s*em\s*2\s*fatores/i, name: "2FA/MFA" },
|
|
321
|
+
];
|
|
322
|
+
for (const { pattern, name } of patterns) {
|
|
323
|
+
if (pattern.test(prd)) {
|
|
324
|
+
requisitos.push(name);
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
return [...new Set(requisitos)];
|
|
328
|
+
}
|
|
329
|
+
inferirEquipe(prd) {
|
|
330
|
+
const patterns = [
|
|
331
|
+
{ pattern: /(\d+)\s*desenvolvedor/i, type: "explicit" },
|
|
332
|
+
{ pattern: /time\s*(grande|grande\s*equipe)/i, type: "large" },
|
|
333
|
+
{ pattern: /só|individual|freelancer|único/i, type: "solo" },
|
|
334
|
+
{ pattern: /dupla|2\s*pessoas|par/i, type: "small" },
|
|
335
|
+
];
|
|
336
|
+
for (const { pattern, type } of patterns) {
|
|
337
|
+
if (pattern.test(prd)) {
|
|
338
|
+
const tamanho = type === "explicit" ? "Conforme especificado" :
|
|
339
|
+
type === "large" ? "5+ desenvolvedores" :
|
|
340
|
+
type === "solo" ? "1 desenvolvedor" :
|
|
341
|
+
"2-4 desenvolvedores";
|
|
342
|
+
return { tamanhoSugerido: tamanho };
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
return null;
|
|
346
|
+
}
|
|
347
|
+
computeHash(prd) {
|
|
348
|
+
// Hash simples baseado nos primeiros 1000 caracteres + tamanho
|
|
349
|
+
const sample = prd.slice(0, 1000);
|
|
350
|
+
let hash = 0;
|
|
351
|
+
for (let i = 0; i < sample.length; i++) {
|
|
352
|
+
const char = sample.charCodeAt(i);
|
|
353
|
+
hash = ((hash << 5) - hash) + char;
|
|
354
|
+
hash = hash & hash;
|
|
355
|
+
}
|
|
356
|
+
return `${hash}-${prd.length}`;
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
/**
|
|
360
|
+
* Especialista: Produto
|
|
361
|
+
* Analisa complexidade funcional, domínio de negócio
|
|
362
|
+
*/
|
|
363
|
+
class EspecialistaProduto {
|
|
364
|
+
nome = "Produto";
|
|
365
|
+
peso = 1.0;
|
|
366
|
+
analisar(prd) {
|
|
367
|
+
let pontos = 0;
|
|
368
|
+
const criterios = [];
|
|
369
|
+
let confianca = 70; // base
|
|
370
|
+
// Complexidade de funcionalidades
|
|
371
|
+
const funcionalidades = (prd.match(/funcionalidade|feature|capacidade/i) || []).length;
|
|
372
|
+
if (funcionalidades > 15) {
|
|
373
|
+
pontos += 4;
|
|
374
|
+
criterios.push("Muitas funcionalidades complexas");
|
|
375
|
+
confianca += 10;
|
|
376
|
+
}
|
|
377
|
+
else if (funcionalidades > 8) {
|
|
378
|
+
pontos += 2;
|
|
379
|
+
criterios.push("Funcionalidades moderadas");
|
|
380
|
+
confianca += 5;
|
|
381
|
+
}
|
|
382
|
+
else {
|
|
383
|
+
pontos += 1;
|
|
384
|
+
}
|
|
385
|
+
// Personas
|
|
386
|
+
const personas = (prd.match(/persona|usuário|cliente/i) || []).length;
|
|
387
|
+
if (personas > 5) {
|
|
388
|
+
pontos += 2;
|
|
389
|
+
criterios.push("Múltiplas personas complexas");
|
|
390
|
+
}
|
|
391
|
+
// Fluxos de negócio
|
|
392
|
+
const fluxos = (prd.match(/fluxo|workflow|processo|jornada/i) || []).length;
|
|
393
|
+
if (fluxos > 5) {
|
|
394
|
+
pontos += 3;
|
|
395
|
+
criterios.push("Fluxos de negócio complexos");
|
|
396
|
+
confianca += 5;
|
|
397
|
+
}
|
|
398
|
+
// Regras de negócio
|
|
399
|
+
const regras = (prd.match(/regra|condição|validação|cálculo/i) || []).length;
|
|
400
|
+
if (regras > 10) {
|
|
401
|
+
pontos += 3;
|
|
402
|
+
criterios.push("Muitas regras de negócio");
|
|
403
|
+
}
|
|
404
|
+
return { pontos, confianca: Math.min(confianca, 95), criterios };
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
/**
|
|
408
|
+
* Especialista: Arquitetura
|
|
409
|
+
* Analisa integrações, stack, segurança, escala
|
|
410
|
+
*/
|
|
411
|
+
class EspecialistaArquitetura {
|
|
412
|
+
nome = "Arquitetura";
|
|
413
|
+
peso = 1.2; // maior peso pois afeta mais a complexidade técnica
|
|
414
|
+
analisar(prd) {
|
|
415
|
+
let pontos = 0;
|
|
416
|
+
const criterios = [];
|
|
417
|
+
let confianca = 70;
|
|
418
|
+
// Integrações
|
|
419
|
+
const integracoes = [
|
|
420
|
+
/api|integração|webhook/i,
|
|
421
|
+
/pagamento|stripe|paypal/i,
|
|
422
|
+
/autenticação|oauth|sso/i,
|
|
423
|
+
/email|sms|notificação/i,
|
|
424
|
+
];
|
|
425
|
+
let numIntegracoes = 0;
|
|
426
|
+
for (const pattern of integracoes) {
|
|
427
|
+
if (pattern.test(prd))
|
|
428
|
+
numIntegracoes++;
|
|
429
|
+
}
|
|
430
|
+
if (numIntegracoes >= 3) {
|
|
431
|
+
pontos += 4;
|
|
432
|
+
criterios.push("Múltiplas integrações externas");
|
|
433
|
+
confianca += 15;
|
|
434
|
+
}
|
|
435
|
+
else if (numIntegracoes >= 1) {
|
|
436
|
+
pontos += 2;
|
|
437
|
+
criterios.push("Integrações externas presentes");
|
|
438
|
+
confianca += 10;
|
|
439
|
+
}
|
|
440
|
+
// Segurança/compliance
|
|
441
|
+
const seguranca = /lgpd|gdpr|pci|hipaa|compliance|criptografia/i;
|
|
442
|
+
if (seguranca.test(prd)) {
|
|
443
|
+
pontos += 3;
|
|
444
|
+
criterios.push("Requisitos de segurança/compliance");
|
|
445
|
+
confianca += 10;
|
|
446
|
+
}
|
|
447
|
+
// Escala
|
|
448
|
+
const escala = /escala|milhares|milhões|concorrência|performance|latência/i;
|
|
449
|
+
if (escala.test(prd)) {
|
|
450
|
+
pontos += 3;
|
|
451
|
+
criterios.push("Requisitos de escala/performance");
|
|
452
|
+
confianca += 5;
|
|
453
|
+
}
|
|
454
|
+
// Multi-tenant
|
|
455
|
+
const multiTenant = /multi-tenant|multi-inquilino|organizações|empresas/i;
|
|
456
|
+
if (multiTenant.test(prd)) {
|
|
457
|
+
pontos += 2;
|
|
458
|
+
criterios.push("Arquitetura multi-tenant");
|
|
459
|
+
}
|
|
460
|
+
// Tempo/cronograma
|
|
461
|
+
const cronograma = prd.match(/(\d+)\s*(meses?|semanas?)/i);
|
|
462
|
+
if (cronograma) {
|
|
463
|
+
const tempo = parseInt(cronograma[1]);
|
|
464
|
+
const unidade = cronograma[2].toLowerCase();
|
|
465
|
+
const tempoEmMeses = unidade.startsWith("semana") ? tempo / 4 : tempo;
|
|
466
|
+
if (tempoEmMeses > 6) {
|
|
467
|
+
pontos += 3;
|
|
468
|
+
criterios.push("Cronograma longo (>6 meses)");
|
|
469
|
+
}
|
|
470
|
+
else if (tempoEmMeses > 3) {
|
|
471
|
+
pontos += 2;
|
|
472
|
+
criterios.push("Cronograma moderado");
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
return { pontos, confianca: Math.min(confianca, 95), criterios };
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
/**
|
|
479
|
+
* Especialista: Volume
|
|
480
|
+
* Analisa volume de usuários, dados, transações
|
|
481
|
+
*/
|
|
482
|
+
class EspecialistaVolume {
|
|
483
|
+
nome = "Volume";
|
|
484
|
+
peso = 0.8;
|
|
485
|
+
analisar(prd) {
|
|
486
|
+
let pontos = 0;
|
|
487
|
+
const criterios = [];
|
|
488
|
+
let confianca = 65;
|
|
489
|
+
// Volume de usuários
|
|
490
|
+
const usuariosAlto = /100\+|milhares|milhões|massivo|enterprise/i;
|
|
491
|
+
const usuariosMedio = /\d+\s*usuários|escala\s*média/i;
|
|
492
|
+
if (usuariosAlto.test(prd)) {
|
|
493
|
+
pontos += 3;
|
|
494
|
+
criterios.push("Alto volume de usuários");
|
|
495
|
+
confianca += 15;
|
|
496
|
+
}
|
|
497
|
+
else if (usuariosMedio.test(prd)) {
|
|
498
|
+
pontos += 1;
|
|
499
|
+
criterios.push("Volume moderado de usuários");
|
|
500
|
+
confianca += 10;
|
|
501
|
+
}
|
|
502
|
+
// Volume de dados
|
|
503
|
+
const dadosAlto = /big\s*data|terabytes?|petabytes?|data\s*warehouse/i;
|
|
504
|
+
const dadosMedio = /muitos\s*dados|relatórios?\s*complexos?/i;
|
|
505
|
+
if (dadosAlto.test(prd)) {
|
|
506
|
+
pontos += 3;
|
|
507
|
+
criterios.push("Alto volume de dados");
|
|
508
|
+
confianca += 10;
|
|
509
|
+
}
|
|
510
|
+
else if (dadosMedio.test(prd)) {
|
|
511
|
+
pontos += 1;
|
|
512
|
+
}
|
|
513
|
+
// Transações
|
|
514
|
+
const transacoesAlto = /milhares?\s*de\s*transações|transações?\s*por\s*segundo/i;
|
|
515
|
+
if (transacoesAlto.test(prd)) {
|
|
516
|
+
pontos += 2;
|
|
517
|
+
criterios.push("Alto volume de transações");
|
|
518
|
+
}
|
|
519
|
+
// Tempo real
|
|
520
|
+
const tempoReal = /tempo\s*real|real-?time|live|streaming/i;
|
|
521
|
+
if (tempoReal.test(prd)) {
|
|
522
|
+
pontos += 2;
|
|
523
|
+
criterios.push("Requisitos de tempo real");
|
|
524
|
+
confianca += 5;
|
|
525
|
+
}
|
|
526
|
+
return { pontos, confianca: Math.min(confianca, 95), criterios };
|
|
527
|
+
}
|
|
528
|
+
}
|
|
529
|
+
// Singleton export
|
|
530
|
+
export const autoClassifier = new AutoClassifierService();
|
|
531
|
+
//# sourceMappingURL=auto-classifier.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-classifier.service.js","sourceRoot":"","sources":["../../src/services/auto-classifier.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAmDH;;GAEG;AACH,MAAM,OAAO,qBAAqB;IACxB,aAAa,CAAwB;IACrC,KAAK,GAAmC,IAAI,GAAG,EAAE,CAAC;IAE1D;QACE,IAAI,CAAC,aAAa,GAAG;YACnB,IAAI,mBAAmB,EAAE;YACzB,IAAI,uBAAuB,EAAE;YAC7B,IAAI,kBAAkB,EAAE;SACzB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,GAAW,EAAE,OAAgB;QAC7C,kBAAkB;QAClB,MAAM,IAAI,GAAG,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;QAC/B,CAAC;QAED,gCAAgC;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC5C,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;SACnB,CAAC,CAAC,CAAC;QAEJ,oBAAoB;QACpB,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,MAAM,cAAc,GAAa,EAAE,CAAC;QACpC,MAAM,WAAW,GAAa,EAAE,CAAC;QACjC,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,MAAM,mBAAmB,GAAa,EAAE,CAAC;QACzC,MAAM,kBAAkB,GAAa,EAAE,CAAC;QAExC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC;YACpG,cAAc,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;YAC1C,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC/B,cAAc,IAAI,OAAO,CAAC,SAAS,CAAC;YAEpC,kCAAkC;YAClC,KAAK,MAAM,QAAQ,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;gBACzC,IAAI,OAAO,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;oBAC5B,mBAAmB,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC,CAAC;gBAC3D,CAAC;qBAAM,CAAC;oBACN,kBAAkB,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC,CAAC;gBAC1D,CAAC;YACH,CAAC;QACH,CAAC;QAED,uBAAuB;QACvB,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACpE,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;QAEpE,mBAAmB;QACnB,IAAI,KAAwB,CAAC;QAC7B,IAAI,YAAY,IAAI,EAAE,EAAE,CAAC;YACvB,KAAK,GAAG,SAAS,CAAC;QACpB,CAAC;aAAM,IAAI,YAAY,IAAI,EAAE,EAAE,CAAC;YAC9B,KAAK,GAAG,OAAO,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,KAAK,GAAG,UAAU,CAAC;QACrB,CAAC;QAED,iCAAiC;QACjC,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;QAEjD,MAAM,SAAS,GAAsB;YACnC,KAAK;YACL,SAAS,EAAE,YAAY;YACvB,SAAS,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC,EAAE,aAAa;YACtD,SAAS,EAAE,cAAc;YACzB,mBAAmB;YACnB,kBAAkB;YAClB,WAAW;YACX,WAAW;SACZ,CAAC;QAEF,oBAAoB;QACpB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAEhC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,0BAA0B,CAAC,aAAgC;QACzD,OAAO,aAAa,CAAC,SAAS,IAAI,EAAE,IAAI,aAAa,CAAC,kBAAkB,CAAC,MAAM,KAAK,CAAC,CAAC;IACxF,CAAC;IAED;;OAEG;IACH,wBAAwB,CAAC,aAAgC;QACvD,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,kBAAkB,EAAE,GAAG,aAAa,CAAC;QAE5E,IAAI,QAAQ,GAAG,mCAAmC,KAAK,CAAC,WAAW,EAAE,QAAQ,CAAC;QAC9E,QAAQ,IAAI,kBAAkB,SAAS,OAAO,CAAC;QAE/C,sBAAsB;QACtB,QAAQ,IAAI,gCAAgC,CAAC;QAE7C,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC;YACtB,QAAQ,IAAI,uBAAuB,CAAC;YACpC,IAAI,WAAW,CAAC,KAAK,CAAC,QAAQ;gBAAE,QAAQ,IAAI,eAAe,WAAW,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC;YAC1F,IAAI,WAAW,CAAC,KAAK,CAAC,OAAO;gBAAE,QAAQ,IAAI,cAAc,WAAW,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC;YACvF,IAAI,WAAW,CAAC,KAAK,CAAC,QAAQ;gBAAE,QAAQ,IAAI,eAAe,WAAW,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC;YAC1F,QAAQ,IAAI,IAAI,CAAC;QACnB,CAAC;QAED,IAAI,WAAW,CAAC,WAAW,IAAI,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxE,QAAQ,IAAI,+BAA+B,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QAC5F,CAAC;QAED,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;YACvB,QAAQ,IAAI,wBAAwB,CAAC;YACrC,QAAQ,IAAI,eAAe,WAAW,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC;YAC3D,QAAQ,IAAI,YAAY,WAAW,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC;QACzD,CAAC;QAED,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;YACvB,QAAQ,IAAI,gBAAgB,WAAW,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC;QAC5D,CAAC;QAED,wCAAwC;QACxC,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,QAAQ,IAAI,6CAA6C,CAAC;YAC1D,KAAK,MAAM,QAAQ,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBACtD,QAAQ,IAAI,KAAK,QAAQ,IAAI,CAAC;YAChC,CAAC;YACD,QAAQ,IAAI,IAAI,CAAC;QACnB,CAAC;QAED,IAAI,IAAI,CAAC,0BAA0B,CAAC,aAAa,CAAC,EAAE,CAAC;YACnD,QAAQ,IAAI,2DAA2D,CAAC;QAC1E,CAAC;aAAM,CAAC;YACN,QAAQ,IAAI,mEAAmE,CAAC;QAClF,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,GAAW;QACpC,MAAM,WAAW,GAAqC,EAAE,CAAC;QAEzD,QAAQ;QACR,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,KAAK,EAAE,CAAC;YACV,WAAW,CAAC,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;QAClD,CAAC;QAED,cAAc;QACd,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;QACjD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,WAAW,CAAC,WAAW,GAAG;gBACxB,KAAK,EAAE,WAAW;gBAClB,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,CAAC;aACrD,CAAC;QACJ,CAAC;QAED,SAAS;QACT,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,MAAM,EAAE,CAAC;YACX,WAAW,CAAC,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;QACpD,CAAC;QAED,UAAU;QACV,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,MAAM,EAAE,CAAC;YACX,WAAW,CAAC,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;QACpD,CAAC;QAED,YAAY;QACZ,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC7C,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,WAAW,CAAC,SAAS,GAAG;gBACtB,UAAU,EAAE,SAAS;gBACrB,SAAS,EAAE,EAAE;aACd,CAAC;QACJ,CAAC;QAED,SAAS;QACT,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,MAAM,EAAE,CAAC;YACX,WAAW,CAAC,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;QACpD,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,YAAY,CAAC,GAAW;QAC9B,MAAM,KAAK,GAA+D,EAAE,CAAC;QAC7E,IAAI,aAAa,GAAG,KAAK,CAAC;QAE1B,WAAW;QACX,MAAM,gBAAgB,GAAG;YACvB,EAAE,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,eAAe,EAAE;YACtD,EAAE,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,aAAa,EAAE;YAClD,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE;YACxC,EAAE,OAAO,EAAE,8BAA8B,EAAE,IAAI,EAAE,+BAA+B,EAAE;SACnF,CAAC;QAEF,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,gBAAgB,EAAE,CAAC;YACjD,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtB,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACtB,aAAa,GAAG,IAAI,CAAC;gBACrB,MAAM;YACR,CAAC;QACH,CAAC;QAED,UAAU;QACV,MAAM,eAAe,GAAG;YACtB,EAAE,OAAO,EAAE,2BAA2B,EAAE,IAAI,EAAE,SAAS,EAAE;YACzD,EAAE,OAAO,EAAE,8BAA8B,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC3D,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE;YAChD,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE;YACrC,EAAE,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,SAAS,EAAE;SACjD,CAAC;QAEF,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,eAAe,EAAE,CAAC;YAChD,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtB,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;gBACrB,aAAa,GAAG,IAAI,CAAC;gBACrB,MAAM;YACR,CAAC;QACH,CAAC;QAED,WAAW;QACX,MAAM,UAAU,GAAG;YACjB,EAAE,OAAO,EAAE,sBAAsB,EAAE,IAAI,EAAE,YAAY,EAAE;YACvD,EAAE,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,SAAS,EAAE;YAC9C,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;YACpC,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE;YAC1C,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE;SAC3C,CAAC;QAEF,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,UAAU,EAAE,CAAC;YAC3C,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtB,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACtB,aAAa,GAAG,IAAI,CAAC;gBACrB,MAAM;YACR,CAAC;QACH,CAAC;QAED,OAAO,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IACtC,CAAC;IAEO,kBAAkB,CAAC,GAAW;QACpC,MAAM,WAAW,GAAa,EAAE,CAAC;QAEjC,MAAM,QAAQ,GAAG;YACf,EAAE,OAAO,EAAE,sBAAsB,EAAE,IAAI,EAAE,eAAe,EAAE;YAC1D,EAAE,OAAO,EAAE,sCAAsC,EAAE,IAAI,EAAE,sBAAsB,EAAE;YACjF,EAAE,OAAO,EAAE,6CAA6C,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACvF,EAAE,OAAO,EAAE,2BAA2B,EAAE,IAAI,EAAE,YAAY,EAAE;YAC5D,EAAE,OAAO,EAAE,wBAAwB,EAAE,IAAI,EAAE,6BAA6B,EAAE;YAC1E,EAAE,OAAO,EAAE,yCAAyC,EAAE,IAAI,EAAE,2BAA2B,EAAE;YACzF,EAAE,OAAO,EAAE,sCAAsC,EAAE,IAAI,EAAE,WAAW,EAAE;YACtE,EAAE,OAAO,EAAE,0BAA0B,EAAE,IAAI,EAAE,qBAAqB,EAAE;SACrE,CAAC;QAEF,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,QAAQ,EAAE,CAAC;YACzC,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,aAAa;IACjD,CAAC;IAEO,aAAa,CAAC,GAAW;QAC/B,8BAA8B;QAC9B,MAAM,eAAe,GAAG;YACtB,EAAE,OAAO,EAAE,4CAA4C,EAAE,IAAI,EAAE,UAAU,EAAE;YAC3E,EAAE,OAAO,EAAE,uCAAuC,EAAE,IAAI,EAAE,OAAO,EAAE;YACnE,EAAE,OAAO,EAAE,yBAAyB,EAAE,IAAI,EAAE,OAAO,EAAE;YACrD,EAAE,OAAO,EAAE,yCAAyC,EAAE,IAAI,EAAE,OAAO,EAAE;SACtE,CAAC;QAEF,IAAI,QAAQ,GAAG,kBAAkB,CAAC;QAClC,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,eAAe,EAAE,CAAC;YAChD,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtB,QAAQ,GAAG,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC;oBACpD,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,gBAAgB,CAAC;gBAChE,MAAM;YACR,CAAC;QACH,CAAC;QAED,2BAA2B;QAC3B,MAAM,aAAa,GAAG;YACpB,EAAE,OAAO,EAAE,qDAAqD,EAAE,IAAI,EAAE,OAAO,EAAE;YACjF,EAAE,OAAO,EAAE,mCAAmC,EAAE,IAAI,EAAE,OAAO,EAAE;YAC/D,EAAE,OAAO,EAAE,+BAA+B,EAAE,IAAI,EAAE,eAAe,EAAE;SACpE,CAAC;QAEF,IAAI,KAAK,GAAG,QAAQ,CAAC;QACrB,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,aAAa,EAAE,CAAC;YAC9C,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtB,KAAK,GAAG,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC;oBACnD,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,cAAc,CAAC;gBACvD,MAAM;YACR,CAAC;QACH,CAAC;QAED,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAC7B,CAAC;IAEO,aAAa,CAAC,GAAW;QAC/B,MAAM,QAAQ,GAAG;YACf,EAAE,OAAO,EAAE,iDAAiD,EAAE,IAAI,EAAE,YAAY,EAAE;YAClF,EAAE,OAAO,EAAE,2CAA2C,EAAE,IAAI,EAAE,MAAM,EAAE;YACtE,EAAE,OAAO,EAAE,4BAA4B,EAAE,IAAI,EAAE,aAAa,EAAE;YAC9D,EAAE,OAAO,EAAE,yBAAyB,EAAE,IAAI,EAAE,mBAAmB,EAAE;YACjE,EAAE,OAAO,EAAE,mCAAmC,EAAE,IAAI,EAAE,cAAc,EAAE;YACtE,EAAE,OAAO,EAAE,yCAAyC,EAAE,IAAI,EAAE,QAAQ,EAAE;YACtE,EAAE,OAAO,EAAE,yCAAyC,EAAE,IAAI,EAAE,YAAY,EAAE;YAC1E,EAAE,OAAO,EAAE,qCAAqC,EAAE,IAAI,EAAE,SAAS,EAAE;YACnE,EAAE,OAAO,EAAE,uCAAuC,EAAE,IAAI,EAAE,mBAAmB,EAAE;SAChF,CAAC;QAEF,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,QAAQ,EAAE,CAAC;YACzC,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YACxB,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,gBAAgB,CAAC,GAAW;QAClC,MAAM,UAAU,GAAa,EAAE,CAAC;QAEhC,MAAM,QAAQ,GAAG;YACf,EAAE,OAAO,EAAE,6BAA6B,EAAE,IAAI,EAAE,WAAW,EAAE;YAC7D,EAAE,OAAO,EAAE,0BAA0B,EAAE,IAAI,EAAE,SAAS,EAAE;YACxD,EAAE,OAAO,EAAE,qBAAqB,EAAE,IAAI,EAAE,OAAO,EAAE;YACjD,EAAE,OAAO,EAAE,qCAAqC,EAAE,IAAI,EAAE,0BAA0B,EAAE;YACpF,EAAE,OAAO,EAAE,mCAAmC,EAAE,IAAI,EAAE,cAAc,EAAE;YACtE,EAAE,OAAO,EAAE,sBAAsB,EAAE,IAAI,EAAE,kBAAkB,EAAE;YAC7D,EAAE,OAAO,EAAE,0CAA0C,EAAE,IAAI,EAAE,SAAS,EAAE;SACzE,CAAC;QAEF,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,QAAQ,EAAE,CAAC;YACzC,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;IAClC,CAAC;IAEO,aAAa,CAAC,GAAW;QAC/B,MAAM,QAAQ,GAAG;YACf,EAAE,OAAO,EAAE,wBAAwB,EAAE,IAAI,EAAE,UAAU,EAAE;YACvD,EAAE,OAAO,EAAE,kCAAkC,EAAE,IAAI,EAAE,OAAO,EAAE;YAC9D,EAAE,OAAO,EAAE,iCAAiC,EAAE,IAAI,EAAE,MAAM,EAAE;YAC5D,EAAE,OAAO,EAAE,wBAAwB,EAAE,IAAI,EAAE,OAAO,EAAE;SACrD,CAAC;QAEF,KAAK,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,QAAQ,EAAE,CAAC;YACzC,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtB,MAAM,OAAO,GAAG,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC;oBAC7D,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;wBACvC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;4BACnC,qBAAqB,CAAC;gBAC5B,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC;YACtC,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,WAAW,CAAC,GAAW;QAC7B,+DAA+D;QAC/D,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QAClC,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAClC,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;YACnC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;QACrB,CAAC;QACD,OAAO,GAAG,IAAI,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;IACjC,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,mBAAmB;IACvB,IAAI,GAAG,SAAS,CAAC;IACjB,IAAI,GAAG,GAAG,CAAC;IAEX,QAAQ,CAAC,GAAW;QAClB,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,IAAI,SAAS,GAAG,EAAE,CAAC,CAAC,OAAO;QAE3B,kCAAkC;QAClC,MAAM,eAAe,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,oCAAoC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACvF,IAAI,eAAe,GAAG,EAAE,EAAE,CAAC;YACzB,MAAM,IAAI,CAAC,CAAC;YACZ,SAAS,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;YACnD,SAAS,IAAI,EAAE,CAAC;QAClB,CAAC;aAAM,IAAI,eAAe,GAAG,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,CAAC,CAAC;YACZ,SAAS,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;YAC5C,SAAS,IAAI,CAAC,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,CAAC,CAAC;QACd,CAAC;QAED,WAAW;QACX,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,0BAA0B,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACtE,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACjB,MAAM,IAAI,CAAC,CAAC;YACZ,SAAS,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QACjD,CAAC;QAED,oBAAoB;QACpB,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,kCAAkC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QAC5E,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,CAAC;YACZ,SAAS,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YAC9C,SAAS,IAAI,CAAC,CAAC;QACjB,CAAC;QAED,oBAAoB;QACpB,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,mCAAmC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QAC7E,IAAI,MAAM,GAAG,EAAE,EAAE,CAAC;YAChB,MAAM,IAAI,CAAC,CAAC;YACZ,SAAS,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAC7C,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC;IACnE,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,uBAAuB;IAC3B,IAAI,GAAG,aAAa,CAAC;IACrB,IAAI,GAAG,GAAG,CAAC,CAAC,oDAAoD;IAEhE,QAAQ,CAAC,GAAW;QAClB,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,IAAI,SAAS,GAAG,EAAE,CAAC;QAEnB,cAAc;QACd,MAAM,WAAW,GAAG;YAClB,yBAAyB;YACzB,0BAA0B;YAC1B,yBAAyB;YACzB,wBAAwB;SACzB,CAAC;QACF,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE,CAAC;YAClC,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;gBAAE,cAAc,EAAE,CAAC;QAC1C,CAAC;QACD,IAAI,cAAc,IAAI,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,CAAC,CAAC;YACZ,SAAS,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;YACjD,SAAS,IAAI,EAAE,CAAC;QAClB,CAAC;aAAM,IAAI,cAAc,IAAI,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,CAAC,CAAC;YACZ,SAAS,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;YACjD,SAAS,IAAI,EAAE,CAAC;QAClB,CAAC;QAED,uBAAuB;QACvB,MAAM,SAAS,GAAG,8CAA8C,CAAC;QACjE,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,CAAC,CAAC;YACZ,SAAS,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;YACrD,SAAS,IAAI,EAAE,CAAC;QAClB,CAAC;QAED,SAAS;QACT,MAAM,MAAM,GAAG,4DAA4D,CAAC;QAC5E,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,CAAC,CAAC;YACZ,SAAS,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;YACnD,SAAS,IAAI,CAAC,CAAC;QACjB,CAAC;QAED,eAAe;QACf,MAAM,WAAW,GAAG,qDAAqD,CAAC;QAC1E,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,CAAC,CAAC;YACZ,SAAS,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAC7C,CAAC;QAED,mBAAmB;QACnB,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAC3D,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YACtC,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YAC5C,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAEtE,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;gBACrB,MAAM,IAAI,CAAC,CAAC;gBACZ,SAAS,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YAChD,CAAC;iBAAM,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;gBAC5B,MAAM,IAAI,CAAC,CAAC;gBACZ,SAAS,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC;IACnE,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,kBAAkB;IACtB,IAAI,GAAG,QAAQ,CAAC;IAChB,IAAI,GAAG,GAAG,CAAC;IAEX,QAAQ,CAAC,GAAW;QAClB,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,IAAI,SAAS,GAAG,EAAE,CAAC;QAEnB,qBAAqB;QACrB,MAAM,YAAY,GAAG,4CAA4C,CAAC;QAClE,MAAM,aAAa,GAAG,gCAAgC,CAAC;QACvD,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,CAAC,CAAC;YACZ,SAAS,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YAC1C,SAAS,IAAI,EAAE,CAAC;QAClB,CAAC;aAAM,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,CAAC,CAAC;YACZ,SAAS,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;YAC9C,SAAS,IAAI,EAAE,CAAC;QAClB,CAAC;QAED,kBAAkB;QAClB,MAAM,SAAS,GAAG,oDAAoD,CAAC;QACvE,MAAM,UAAU,GAAG,0CAA0C,CAAC;QAC9D,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,CAAC,CAAC;YACZ,SAAS,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACvC,SAAS,IAAI,EAAE,CAAC;QAClB,CAAC;aAAM,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,CAAC;QACd,CAAC;QAED,aAAa;QACb,MAAM,cAAc,GAAG,0DAA0D,CAAC;QAClF,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,CAAC,CAAC;YACZ,SAAS,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAC9C,CAAC;QAED,aAAa;QACb,MAAM,SAAS,GAAG,yCAAyC,CAAC;QAC5D,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,CAAC,CAAC;YACZ,SAAS,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YAC3C,SAAS,IAAI,CAAC,CAAC;QACjB,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC;IACnE,CAAC;CACF;AAED,mBAAmB;AACnB,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,qBAAqB,EAAE,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ClassificacaoProgressivaService v6.0
|
|
3
|
+
*
|
|
4
|
+
* Serviço de classificação progressiva que acumula sinais ao longo das fases
|
|
5
|
+
* e refina a classificação continuamente, em vez de decidir tudo no PRD.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Acumula sinais de múltiplas fases (Produto, Requisitos, Arquitetura)
|
|
9
|
+
* - Recalcula classificação com todos os sinais acumulados
|
|
10
|
+
* - Detecta necessidade de expansão do fluxo (simples → médio → complexo)
|
|
11
|
+
* - Nunca reduz complexidade (proteção contra regressão)
|
|
12
|
+
*/
|
|
13
|
+
import type { NivelComplexidade, SinalClassificacao, Fase } from "../types/index.js";
|
|
14
|
+
/**
|
|
15
|
+
* Serviço principal de classificação progressiva
|
|
16
|
+
*/
|
|
17
|
+
export declare class ClassificacaoProgressivaService {
|
|
18
|
+
/**
|
|
19
|
+
* Registra sinais extraídos do entregável de cada fase
|
|
20
|
+
*/
|
|
21
|
+
registrarSinais(entregavel: string, fase: Fase, sinaisExistentes: SinalClassificacao[]): SinalClassificacao[];
|
|
22
|
+
/**
|
|
23
|
+
* Recalcula classificação com todos os sinais acumulados
|
|
24
|
+
*/
|
|
25
|
+
recalcular(sinais: SinalClassificacao[]): {
|
|
26
|
+
nivel: NivelComplexidade;
|
|
27
|
+
confianca: number;
|
|
28
|
+
criterios: string[];
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Verifica se o nível precisa mudar (expansão)
|
|
32
|
+
*/
|
|
33
|
+
verificarExpansao(nivelAtual: NivelComplexidade, nivelCalculado: NivelComplexidade, faseAtual: number): {
|
|
34
|
+
expandir: boolean;
|
|
35
|
+
de: NivelComplexidade;
|
|
36
|
+
para: NivelComplexidade;
|
|
37
|
+
fasesAdicionadas: number;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Extrai sinais do PRD (Fase 1: Produto)
|
|
41
|
+
*/
|
|
42
|
+
private extrairSinaisProduto;
|
|
43
|
+
/**
|
|
44
|
+
* Extrai sinais do documento de Requisitos (Fase 2)
|
|
45
|
+
*/
|
|
46
|
+
private extrairSinaisRequisitos;
|
|
47
|
+
/**
|
|
48
|
+
* Extrai sinais do documento de Arquitetura (Fase 4+)
|
|
49
|
+
*/
|
|
50
|
+
private extrairSinaisArquitetura;
|
|
51
|
+
/**
|
|
52
|
+
* Extrai sinais do documento de UX/Design (Fase 3)
|
|
53
|
+
*/
|
|
54
|
+
private extrairSinaisUX;
|
|
55
|
+
/**
|
|
56
|
+
* Extrator genérico para outras fases
|
|
57
|
+
*/
|
|
58
|
+
private extrairSinaisGenerico;
|
|
59
|
+
/**
|
|
60
|
+
* Agrupa sinais por categoria
|
|
61
|
+
*/
|
|
62
|
+
private agruparPorCategoria;
|
|
63
|
+
/**
|
|
64
|
+
* Retorna o sinal com maior confiança de um array
|
|
65
|
+
*/
|
|
66
|
+
private melhorSinal;
|
|
67
|
+
}
|
|
68
|
+
export declare const classificacaoProgressiva: ClassificacaoProgressivaService;
|
|
69
|
+
//# sourceMappingURL=classificacao-progressiva.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"classificacao-progressiva.service.d.ts","sourceRoot":"","sources":["../../src/services/classificacao-progressiva.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EACR,iBAAiB,EACjB,kBAAkB,EAElB,IAAI,EACP,MAAM,mBAAmB,CAAC;AAE3B;;GAEG;AACH,qBAAa,+BAA+B;IACxC;;OAEG;IACH,eAAe,CACX,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,IAAI,EACV,gBAAgB,EAAE,kBAAkB,EAAE,GACvC,kBAAkB,EAAE;IAgCvB;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,kBAAkB,EAAE,GAAG;QACtC,KAAK,EAAE,iBAAiB,CAAC;QACzB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,EAAE,CAAA;KACtB;IAmFD;;OAEG;IACH,iBAAiB,CACb,UAAU,EAAE,iBAAiB,EAC7B,cAAc,EAAE,iBAAiB,EACjC,SAAS,EAAE,MAAM,GAClB;QACC,QAAQ,EAAE,OAAO,CAAC;QAClB,EAAE,EAAE,iBAAiB,CAAC;QACtB,IAAI,EAAE,iBAAiB,CAAC;QACxB,gBAAgB,EAAE,MAAM,CAAC;KAC5B;IA4BD;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAgF5B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA+D/B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAyHhC;;OAEG;IACH,OAAO,CAAC,eAAe;IAsDvB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAgB7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAW3B;;OAEG;IACH,OAAO,CAAC,WAAW;CAKtB;AAGD,eAAO,MAAM,wBAAwB,iCAAwC,CAAC"}
|