@maestro-ai/mcp-server 1.1.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/skill-adapter.d.ts +57 -0
- package/dist/adapters/skill-adapter.d.ts.map +1 -0
- package/dist/adapters/skill-adapter.js +272 -0
- package/dist/adapters/skill-adapter.js.map +1 -0
- package/dist/content/rules/GEMINI.md +79 -27
- package/dist/content/rules/RULES.md +6 -0
- package/dist/content/skills/specialist-acessibilidade/MCP_INTEGRATION.md +698 -0
- package/dist/content/skills/specialist-acessibilidade/README.md +292 -0
- package/dist/content/skills/specialist-acessibilidade/SKILL.md +202 -0
- package/dist/content/skills/specialist-acessibilidade/mcp_functions/init_accessibility_audit.py +675 -0
- package/dist/content/skills/specialist-acessibilidade/mcp_functions/validate_wcag_compliance.py +587 -0
- package/dist/content/skills/specialist-acessibilidade/resources/checklists/accessibility-validation.md +457 -0
- package/dist/content/skills/specialist-acessibilidade/resources/examples/accessibility-examples.md +863 -0
- package/dist/content/skills/specialist-acessibilidade/resources/reference/wcag-guide.md +359 -0
- package/dist/content/skills/specialist-acessibilidade/resources/templates/checklist-acessibilidade.md +435 -0
- package/dist/content/skills/specialist-acessibilidade/resources/templates/relatorio-acessibilidade.md +490 -0
- package/dist/content/skills/specialist-analise-testes/MCP_INTEGRATION.md +569 -0
- package/dist/content/skills/specialist-analise-testes/README.md +42 -0
- package/dist/content/skills/specialist-analise-testes/SKILL.md +258 -0
- package/dist/content/skills/specialist-analise-testes/mcp_functions/README.md +794 -0
- package/dist/content/skills/specialist-analise-testes/resources/checklists/testing-validation.md +305 -0
- package/dist/content/skills/specialist-analise-testes/resources/examples/testing-examples.md +395 -0
- package/dist/content/skills/specialist-analise-testes/resources/reference/testing-guide.md +1024 -0
- package/dist/content/skills/specialist-arquitetura-avancada/MCP_INTEGRATION.md +440 -0
- package/dist/content/skills/specialist-arquitetura-avancada/README.md +298 -0
- package/dist/content/skills/specialist-arquitetura-avancada/SKILL.md +295 -0
- package/dist/content/skills/specialist-arquitetura-avancada/mcp_functions/README.md +573 -0
- package/dist/content/skills/specialist-arquitetura-avancada/resources/checklists/architecture-validation.md +385 -0
- package/dist/content/skills/specialist-arquitetura-avancada/resources/examples/architecture-examples.md +743 -0
- package/dist/content/skills/specialist-arquitetura-avancada/resources/reference/architecture-guide.md +680 -0
- package/dist/content/skills/specialist-arquitetura-avancada/resources/templates/bounded-context.md +333 -0
- package/dist/content/skills/specialist-arquitetura-avancada/resources/templates/cqrs-implementation.md +495 -0
- package/dist/content/skills/specialist-arquitetura-avancada/resources/templates/event-sourcing.md +571 -0
- package/dist/content/skills/specialist-arquitetura-avancada/resources/templates/microservices-strategy.md +647 -0
- package/dist/content/skills/specialist-arquitetura-software/MCP_INTEGRATION.md +483 -0
- package/dist/content/skills/specialist-arquitetura-software/README.md +306 -0
- package/dist/content/skills/specialist-arquitetura-software/SKILL.md +194 -0
- package/dist/content/skills/specialist-arquitetura-software/mcp_functions/init_architecture.py +137 -0
- package/dist/content/skills/specialist-arquitetura-software/mcp_functions/process_architecture.py +279 -0
- package/dist/content/skills/specialist-arquitetura-software/mcp_functions/validate_architecture.py +302 -0
- package/dist/content/skills/specialist-arquitetura-software/resources/checklists/architecture-validation.md +180 -0
- package/dist/content/skills/specialist-arquitetura-software/resources/examples/architecture-examples.md +239 -0
- package/dist/content/skills/specialist-arquitetura-software/resources/reference/architecture-guide.md +489 -0
- package/dist/content/skills/specialist-arquitetura-software/resources/templates/adr.md +61 -0
- package/dist/content/skills/specialist-arquitetura-software/resources/templates/arquitetura.md +192 -0
- package/dist/content/skills/specialist-arquitetura-software/resources/templates/slo-sli.md +153 -0
- package/dist/content/skills/specialist-banco-dados/MCP_INTEGRATION.md +390 -0
- package/dist/content/skills/specialist-banco-dados/README.md +323 -0
- package/dist/content/skills/specialist-banco-dados/SKILL.md +221 -0
- package/dist/content/skills/specialist-banco-dados/mcp_functions/init_database.py +720 -0
- package/dist/content/skills/specialist-banco-dados/mcp_functions/process_database.py +386 -0
- package/dist/content/skills/specialist-banco-dados/mcp_functions/validate_database.py +551 -0
- package/dist/content/skills/specialist-banco-dados/resources/checklists/database-validation.md +434 -0
- package/dist/content/skills/specialist-banco-dados/resources/examples/database-examples.md +857 -0
- package/dist/content/skills/specialist-banco-dados/resources/reference/database-guide.md +708 -0
- package/dist/content/skills/specialist-banco-dados/resources/templates/constraints.md +935 -0
- package/dist/content/skills/specialist-banco-dados/resources/templates/design-banco.md +509 -0
- package/dist/content/skills/specialist-banco-dados/resources/templates/indices.md +553 -0
- package/dist/content/skills/specialist-banco-dados/resources/templates/migracoes.md +777 -0
- package/dist/content/skills/specialist-contrato-api/MCP_INTEGRATION.md +152 -0
- package/dist/content/skills/specialist-contrato-api/README.md +183 -0
- package/dist/content/skills/specialist-contrato-api/SKILL.md +317 -0
- package/dist/content/skills/specialist-contrato-api/mcp_functions/README.md +17 -0
- package/dist/content/skills/specialist-contrato-api/resources/checklists/api-validation.md +44 -0
- package/dist/content/skills/specialist-contrato-api/resources/examples/api-examples.md +137 -0
- package/dist/content/skills/specialist-contrato-api/resources/reference/api-guide.md +96 -0
- package/dist/content/skills/specialist-contrato-api/resources/templates/contrato-api.md +165 -0
- package/dist/content/skills/specialist-dados-analytics-ia/MCP_INTEGRATION.md +398 -0
- package/dist/content/skills/specialist-dados-analytics-ia/README.md +224 -0
- package/dist/content/skills/specialist-dados-analytics-ia/SKILL.md +160 -0
- package/dist/content/skills/specialist-dados-analytics-ia/mcp_functions/generate_insights_dashboard.py +669 -0
- package/dist/content/skills/specialist-dados-analytics-ia/mcp_functions/init_analytics_pipeline.py +626 -0
- package/dist/content/skills/specialist-dados-analytics-ia/mcp_functions/validate_analytics_quality.py +772 -0
- package/dist/content/skills/specialist-dados-analytics-ia/resources/checklists/analytics-validation.md +519 -0
- package/dist/content/skills/specialist-dados-analytics-ia/resources/examples/analytics-examples.md +646 -0
- package/dist/content/skills/specialist-dados-analytics-ia/resources/reference/analytics-guide.md +1111 -0
- package/dist/content/skills/specialist-dados-analytics-ia/resources/templates/feature.md +419 -0
- package/dist/content/skills/specialist-dados-analytics-ia/resources/templates/requisitos.md +384 -0
- package/dist/content/skills/specialist-dados-analytics-ia/resources/templates/slo-sli.md +381 -0
- package/dist/content/skills/specialist-debugging-troubleshooting/MCP_INTEGRATION.md +340 -0
- package/dist/content/skills/specialist-debugging-troubleshooting/README.md +218 -0
- package/dist/content/skills/specialist-debugging-troubleshooting/SKILL.md +194 -0
- package/dist/content/skills/specialist-debugging-troubleshooting/resources/checklists/debugging-validation.md +319 -0
- package/dist/content/skills/specialist-debugging-troubleshooting/resources/examples/debugging-examples.md +480 -0
- package/dist/content/skills/specialist-debugging-troubleshooting/resources/prompts/analise-bugs.md +527 -0
- package/dist/content/skills/specialist-debugging-troubleshooting/resources/reference/debugging-guide.md +392 -0
- package/dist/content/skills/specialist-debugging-troubleshooting/resources/templates/bug-report.md +192 -0
- package/dist/content/skills/specialist-debugging-troubleshooting/resources/templates/post-mortem.md +241 -0
- package/dist/content/skills/specialist-debugging-troubleshooting/scripts/README.md +64 -0
- package/dist/content/skills/specialist-desenvolvimento-backend/MCP_INTEGRATION.md +98 -0
- package/dist/content/skills/specialist-desenvolvimento-backend/README.md +167 -0
- package/dist/content/skills/specialist-desenvolvimento-backend/SKILL.md +288 -0
- package/dist/content/skills/specialist-desenvolvimento-backend/mcp_functions/README.md +17 -0
- package/dist/content/skills/specialist-desenvolvimento-backend/resources/checklists/backend-validation.md +44 -0
- package/dist/content/skills/specialist-desenvolvimento-backend/resources/examples/backend-examples.md +109 -0
- package/dist/content/skills/specialist-desenvolvimento-backend/resources/reference/backend-guide.md +86 -0
- package/dist/content/skills/specialist-desenvolvimento-frontend/MCP_INTEGRATION.md +914 -0
- package/dist/content/skills/specialist-desenvolvimento-frontend/README.md +261 -0
- package/dist/content/skills/specialist-desenvolvimento-frontend/SKILL.md +220 -0
- package/dist/content/skills/specialist-desenvolvimento-frontend/mcp_functions/init_frontend.py +861 -0
- package/dist/content/skills/specialist-desenvolvimento-frontend/mcp_functions/process_frontend.py +1003 -0
- package/dist/content/skills/specialist-desenvolvimento-frontend/mcp_functions/validate_frontend.py +766 -0
- package/dist/content/skills/specialist-desenvolvimento-frontend/resources/checklists/frontend-validation.md +365 -0
- package/dist/content/skills/specialist-desenvolvimento-frontend/resources/examples/frontend-examples.md +1125 -0
- package/dist/content/skills/specialist-desenvolvimento-frontend/resources/reference/frontend-guide.md +1055 -0
- package/dist/content/skills/specialist-desenvolvimento-frontend/resources/templates/component-story.md +530 -0
- package/dist/content/skills/specialist-desenvolvimento-frontend/resources/templates/historia-frontend.md +243 -0
- package/dist/content/skills/specialist-desenvolvimento-frontend/resources/templates/ui-guidelines.md +725 -0
- package/dist/content/skills/specialist-desenvolvimento-mobile/MCP_INTEGRATION.md +87 -0
- package/dist/content/skills/specialist-desenvolvimento-mobile/README.md +149 -0
- package/dist/content/skills/specialist-desenvolvimento-mobile/SKILL.md +360 -0
- package/dist/content/skills/specialist-desenvolvimento-mobile/mcp_functions/README.md +17 -0
- package/dist/content/skills/specialist-desenvolvimento-mobile/resources/checklists/mobile-validation.md +330 -0
- package/dist/content/skills/specialist-desenvolvimento-mobile/resources/examples/mobile-examples.md +966 -0
- package/dist/content/skills/specialist-desenvolvimento-mobile/resources/reference/android-guide.md +546 -0
- package/dist/content/skills/specialist-desenvolvimento-mobile/resources/reference/flutter-guide.md +500 -0
- package/dist/content/skills/specialist-desenvolvimento-mobile/resources/reference/ios-guide.md +518 -0
- package/dist/content/skills/specialist-desenvolvimento-mobile/resources/reference/mobile-guide.md +76 -0
- package/dist/content/skills/specialist-desenvolvimento-mobile/resources/reference/react-native-guide.md +659 -0
- package/dist/content/skills/specialist-desenvolvimento-mobile/resources/templates/historia-mobile.md +284 -0
- package/dist/content/skills/specialist-desenvolvimento-mobile/resources/templates/mobile-checklist.md +239 -0
- package/dist/content/skills/specialist-desenvolvimento-mobile/resources/templates/platform-selection.md +302 -0
- package/dist/content/skills/specialist-devops-infra/MCP_INTEGRATION.md +471 -0
- package/dist/content/skills/specialist-devops-infra/README.md +234 -0
- package/dist/content/skills/specialist-devops-infra/SKILL.md +162 -0
- package/dist/content/skills/specialist-devops-infra/mcp_functions/generate_ci_cd_pipeline.py +870 -0
- package/dist/content/skills/specialist-devops-infra/mcp_functions/init_infrastructure_structure.py +704 -0
- package/dist/content/skills/specialist-devops-infra/mcp_functions/validate_infrastructure_quality.py +745 -0
- package/dist/content/skills/specialist-devops-infra/resources/checklists/devops-validation.md +427 -0
- package/dist/content/skills/specialist-devops-infra/resources/examples/devops-examples.md +652 -0
- package/dist/content/skills/specialist-devops-infra/resources/reference/devops-guide.md +1244 -0
- package/dist/content/skills/specialist-devops-infra/resources/templates/ci-cd-pipeline.yml +40 -0
- package/dist/content/skills/specialist-documentacao-tecnica/MCP_INTEGRATION.md +797 -0
- package/dist/content/skills/specialist-documentacao-tecnica/README.md +304 -0
- package/dist/content/skills/specialist-documentacao-tecnica/SKILL.md +202 -0
- package/dist/content/skills/specialist-documentacao-tecnica/mcp_functions/init_documentation_structure.py +733 -0
- package/dist/content/skills/specialist-documentacao-tecnica/mcp_functions/process_documentation_for_publishing.py +888 -0
- package/dist/content/skills/specialist-documentacao-tecnica/mcp_functions/validate_documentation_quality.py +775 -0
- package/dist/content/skills/specialist-documentacao-tecnica/resources/checklists/documentation-validation.md +296 -0
- package/dist/content/skills/specialist-documentacao-tecnica/resources/examples/documentation-examples.md +515 -0
- package/dist/content/skills/specialist-documentacao-tecnica/resources/reference/documentation-guide.md +798 -0
- package/dist/content/skills/specialist-documentacao-tecnica/resources/templates/api-docs.md +619 -0
- package/dist/content/skills/specialist-documentacao-tecnica/resources/templates/design-doc.md +250 -0
- package/dist/content/skills/specialist-documentacao-tecnica/resources/templates/guia-tecnico.md +383 -0
- package/dist/content/skills/specialist-documentacao-tecnica/resources/templates/readme-template.md +462 -0
- package/dist/content/skills/specialist-engenharia-requisitos-ia/MCP_INTEGRATION.md +457 -0
- package/dist/content/skills/specialist-engenharia-requisitos-ia/README.md +295 -0
- package/dist/content/skills/specialist-engenharia-requisitos-ia/SKILL.md +214 -0
- package/dist/content/skills/specialist-engenharia-requisitos-ia/mcp_functions/init_requirements.py +152 -0
- package/dist/content/skills/specialist-engenharia-requisitos-ia/mcp_functions/process_requirements.py +445 -0
- package/dist/content/skills/specialist-engenharia-requisitos-ia/mcp_functions/validate_requirements.py +475 -0
- package/dist/content/skills/specialist-engenharia-requisitos-ia/resources/checklists/requirements-validation.md +258 -0
- package/dist/content/skills/specialist-engenharia-requisitos-ia/resources/examples/requirements-examples.md +316 -0
- package/dist/content/skills/specialist-engenharia-requisitos-ia/resources/reference/requirements-guide.md +651 -0
- package/dist/content/skills/specialist-engenharia-requisitos-ia/resources/templates/criterios-aceite.md +484 -0
- package/dist/content/skills/specialist-engenharia-requisitos-ia/resources/templates/matriz-rastreabilidade.md +246 -0
- package/dist/content/skills/specialist-engenharia-requisitos-ia/resources/templates/requisitos.md +244 -0
- package/dist/content/skills/specialist-exploracao-codebase/MCP_INTEGRATION.md +155 -0
- package/dist/content/skills/specialist-exploracao-codebase/README.md +320 -0
- package/dist/content/skills/specialist-exploracao-codebase/SKILL.md +194 -0
- package/dist/content/skills/specialist-exploracao-codebase/mcp_functions/README.md +39 -0
- package/dist/content/skills/specialist-exploracao-codebase/resources/checklists/exploration-validation.md +51 -0
- package/dist/content/skills/specialist-exploracao-codebase/resources/examples/exploration-examples.md +106 -0
- package/dist/content/skills/specialist-exploracao-codebase/resources/reference/exploration-guide.md +111 -0
- package/dist/content/skills/specialist-exploracao-codebase/resources/templates/codebase-map.md +129 -0
- package/dist/content/skills/specialist-exploracao-codebase/resources/templates/refactoring-plan.md +96 -0
- package/dist/content/skills/specialist-exploracao-codebase/resources/templates/technical-debt-report.md +69 -0
- package/dist/content/skills/specialist-gestao-produto/MCP_INTEGRATION.md +436 -0
- package/dist/content/skills/specialist-gestao-produto/README.md +202 -0
- package/dist/content/skills/specialist-gestao-produto/SKILL.md +174 -0
- package/dist/content/skills/specialist-gestao-produto/resources/checklists/prd-validation.md +165 -0
- package/dist/content/skills/specialist-gestao-produto/resources/examples/prd-examples.md +231 -0
- package/dist/content/skills/specialist-gestao-produto/resources/reference/product-guide.md +416 -0
- package/dist/content/skills/specialist-gestao-produto/resources/templates/PRD.md +212 -0
- package/dist/content/skills/specialist-gestao-produto/scripts/init_prd.py +170 -0
- package/dist/content/skills/specialist-gestao-produto/scripts/process_prd.py +388 -0
- package/dist/content/skills/specialist-gestao-produto/scripts/validate_prd.py +406 -0
- package/dist/content/skills/specialist-migracao-modernizacao/MCP_INTEGRATION.md +17 -0
- package/dist/content/skills/specialist-migracao-modernizacao/README.md +46 -0
- package/dist/content/skills/specialist-migracao-modernizacao/SKILL.md +485 -0
- package/dist/content/skills/specialist-migracao-modernizacao/mcp_functions/README.md +10 -0
- package/dist/content/skills/specialist-migracao-modernizacao/resources/checklists/migration-validation.md +23 -0
- package/dist/content/skills/specialist-migracao-modernizacao/resources/examples/migration-examples.md +30 -0
- package/dist/content/skills/specialist-migracao-modernizacao/resources/reference/migration-guide.md +27 -0
- package/dist/content/skills/specialist-migracao-modernizacao/resources/templates/migration-assessment.md +391 -0
- package/dist/content/skills/specialist-migracao-modernizacao/resources/templates/modernization-roadmap.md +479 -0
- package/dist/content/skills/specialist-migracao-modernizacao/resources/templates/risk-analysis.md +527 -0
- package/dist/content/skills/specialist-mobile-design-avancado/MCP_INTEGRATION.md +17 -0
- package/dist/content/skills/specialist-mobile-design-avancado/README.md +46 -0
- package/dist/content/skills/specialist-mobile-design-avancado/SKILL.md +567 -0
- package/dist/content/skills/specialist-mobile-design-avancado/mcp_functions/README.md +10 -0
- package/dist/content/skills/specialist-mobile-design-avancado/resources/checklists/design-validation.md +23 -0
- package/dist/content/skills/specialist-mobile-design-avancado/resources/examples/design-examples.md +46 -0
- package/dist/content/skills/specialist-mobile-design-avancado/resources/reference/design-guide.md +23 -0
- package/dist/content/skills/specialist-modelagem-dominio/MCP_INTEGRATION.md +336 -0
- package/dist/content/skills/specialist-modelagem-dominio/README.md +314 -0
- package/dist/content/skills/specialist-modelagem-dominio/SKILL.md +241 -0
- package/dist/content/skills/specialist-modelagem-dominio/mcp_functions/init_domain.py +479 -0
- package/dist/content/skills/specialist-modelagem-dominio/mcp_functions/process_domain.py +526 -0
- package/dist/content/skills/specialist-modelagem-dominio/mcp_functions/validate_domain.py +569 -0
- package/dist/content/skills/specialist-modelagem-dominio/resources/checklists/domain-validation.md +341 -0
- package/dist/content/skills/specialist-modelagem-dominio/resources/examples/domain-examples.md +505 -0
- package/dist/content/skills/specialist-modelagem-dominio/resources/reference/domain-guide.md +601 -0
- package/dist/content/skills/specialist-modelagem-dominio/resources/reference/domain-modeling-complete-guide.md +1126 -0
- package/dist/content/skills/specialist-modelagem-dominio/resources/templates/arquitetura-c4.md +477 -0
- package/dist/content/skills/specialist-modelagem-dominio/resources/templates/casos-uso.md +395 -0
- package/dist/content/skills/specialist-modelagem-dominio/resources/templates/entidades-relacionamentos.md +368 -0
- package/dist/content/skills/specialist-modelagem-dominio/resources/templates/modelo-dominio.md +311 -0
- package/dist/content/skills/specialist-observabilidade/SKILL.md +462 -0
- package/dist/content/skills/specialist-performance-escalabilidade/SKILL.md +329 -0
- package/dist/content/skills/specialist-plano-execucao-ia/MCP_INTEGRATION.md +371 -0
- package/dist/content/skills/specialist-plano-execucao-ia/README.md +194 -0
- package/dist/content/skills/specialist-plano-execucao-ia/SKILL.md +271 -0
- package/dist/content/skills/specialist-plano-execucao-ia/mcp_functions/README.md +38 -0
- package/dist/content/skills/specialist-plano-execucao-ia/resources/checklists/planning-validation.md +144 -0
- package/dist/content/skills/specialist-plano-execucao-ia/resources/examples/planning-examples.md +203 -0
- package/dist/content/skills/specialist-plano-execucao-ia/resources/reference/planning-guide.md +316 -0
- package/dist/content/skills/specialist-plano-execucao-ia/resources/templates/backlog.md +146 -0
- package/dist/content/skills/specialist-plano-execucao-ia/resources/templates/historia-backend.md +157 -0
- package/dist/content/skills/specialist-plano-execucao-ia/resources/templates/historia-frontend.md +116 -0
- package/dist/content/skills/specialist-plano-execucao-ia/resources/templates/historia-usuario.md +66 -0
- package/dist/content/skills/specialist-prototipagem-stitch/MCP_INTEGRATION.md +533 -0
- package/dist/content/skills/specialist-prototipagem-stitch/README.md +321 -0
- package/dist/content/skills/specialist-prototipagem-stitch/SKILL.md +194 -0
- package/dist/content/skills/specialist-prototipagem-stitch/mcp_functions/README.md +239 -0
- package/dist/content/skills/specialist-prototipagem-stitch/resources/checklists/stitch-validation.md +357 -0
- package/dist/content/skills/specialist-prototipagem-stitch/resources/examples/stitch-examples.md +372 -0
- package/dist/content/skills/specialist-prototipagem-stitch/resources/reference/stitch-guide.md +517 -0
- package/dist/content/skills/specialist-prototipagem-stitch/resources/templates/prompt-stitch.md +429 -0
- package/dist/content/skills/specialist-prototipagem-stitch/resources/templates/prototipo-stitch.md +317 -0
- package/dist/content/skills/specialist-seguranca-informacao/MCP_INTEGRATION.md +466 -0
- package/dist/content/skills/specialist-seguranca-informacao/README.md +245 -0
- package/dist/content/skills/specialist-seguranca-informacao/SKILL.md +343 -0
- package/dist/content/skills/specialist-seguranca-informacao/mcp_functions/init_security.py +405 -0
- package/dist/content/skills/specialist-seguranca-informacao/mcp_functions/process_security.py +611 -0
- package/dist/content/skills/specialist-seguranca-informacao/mcp_functions/validate_security.py +468 -0
- package/dist/content/skills/specialist-seguranca-informacao/resources/checklists/security-validation.md +368 -0
- package/dist/content/skills/specialist-seguranca-informacao/resources/examples/security-examples.md +358 -0
- package/dist/content/skills/specialist-seguranca-informacao/resources/reference/security-guide.md +757 -0
- package/dist/content/skills/specialist-seguranca-informacao/resources/templates/checklist-seguranca.md +383 -0
- package/dist/content/skills/specialist-seguranca-informacao/resources/templates/slo-sli.md +244 -0
- package/dist/content/skills/specialist-seguranca-informacao/resources/templates/threat-modeling.md +161 -0
- package/dist/content/skills/specialist-ux-design/MCP_INTEGRATION.md +294 -0
- package/dist/content/skills/specialist-ux-design/README.md +304 -0
- package/dist/content/skills/specialist-ux-design/SKILL.md +212 -0
- package/dist/content/skills/specialist-ux-design/mcp_functions/init_ux.py +126 -0
- package/dist/content/skills/specialist-ux-design/mcp_functions/process_ux.py +408 -0
- package/dist/content/skills/specialist-ux-design/mcp_functions/validate_ux.py +379 -0
- package/dist/content/skills/specialist-ux-design/resources/checklists/ux-validation.md +77 -0
- package/dist/content/skills/specialist-ux-design/resources/examples/ux-examples.md +161 -0
- package/dist/content/skills/specialist-ux-design/resources/reference/ux-guide.md +184 -0
- package/dist/content/skills/specialist-ux-design/resources/templates/design-doc.md +160 -0
- package/dist/content/skills/specialist-ux-design/resources/templates/jornada-usuario.md +126 -0
- package/dist/content/skills/specialist-ux-design/resources/templates/wireframes.md +155 -0
- package/dist/core/adr/ADRGenerator.d.ts +28 -0
- package/dist/core/adr/ADRGenerator.d.ts.map +1 -0
- package/dist/core/adr/ADRGenerator.js +63 -0
- package/dist/core/adr/ADRGenerator.js.map +1 -0
- package/dist/core/adr/index.d.ts +2 -0
- package/dist/core/adr/index.d.ts.map +1 -0
- package/dist/core/adr/index.js +2 -0
- package/dist/core/adr/index.js.map +1 -0
- package/dist/core/architecture/FitnessFunctions.d.ts +67 -0
- package/dist/core/architecture/FitnessFunctions.d.ts.map +1 -0
- package/dist/core/architecture/FitnessFunctions.js +292 -0
- package/dist/core/architecture/FitnessFunctions.js.map +1 -0
- package/dist/core/architecture/index.d.ts +3 -0
- package/dist/core/architecture/index.d.ts.map +1 -0
- package/dist/core/architecture/index.js +3 -0
- package/dist/core/architecture/index.js.map +1 -0
- package/dist/core/architecture/types.d.ts +42 -0
- package/dist/core/architecture/types.d.ts.map +1 -0
- package/dist/core/architecture/types.js +5 -0
- package/dist/core/architecture/types.js.map +1 -0
- package/dist/core/atam/ATAMAnalyzer.d.ts +19 -0
- package/dist/core/atam/ATAMAnalyzer.d.ts.map +1 -0
- package/dist/core/atam/ATAMAnalyzer.js +206 -0
- package/dist/core/atam/ATAMAnalyzer.js.map +1 -0
- package/dist/core/atam/ATAMReporter.d.ts +16 -0
- package/dist/core/atam/ATAMReporter.d.ts.map +1 -0
- package/dist/core/atam/ATAMReporter.js +175 -0
- package/dist/core/atam/ATAMReporter.js.map +1 -0
- package/dist/core/atam/QualityScenarios.d.ts +16 -0
- package/dist/core/atam/QualityScenarios.d.ts.map +1 -0
- package/dist/core/atam/QualityScenarios.js +149 -0
- package/dist/core/atam/QualityScenarios.js.map +1 -0
- package/dist/core/atam/RiskRegistry.d.ts +21 -0
- package/dist/core/atam/RiskRegistry.d.ts.map +1 -0
- package/dist/core/atam/RiskRegistry.js +83 -0
- package/dist/core/atam/RiskRegistry.js.map +1 -0
- package/dist/core/atam/index.d.ts +6 -0
- package/dist/core/atam/index.d.ts.map +1 -0
- package/dist/core/atam/index.js +6 -0
- package/dist/core/atam/index.js.map +1 -0
- package/dist/core/atam/types.d.ts +86 -0
- package/dist/core/atam/types.d.ts.map +1 -0
- package/dist/core/atam/types.js +5 -0
- package/dist/core/atam/types.js.map +1 -0
- package/dist/core/authority/AuthorityManager.d.ts +19 -0
- package/dist/core/authority/AuthorityManager.d.ts.map +1 -0
- package/dist/core/authority/AuthorityManager.js +66 -0
- package/dist/core/authority/AuthorityManager.js.map +1 -0
- package/dist/core/authority/index.d.ts +2 -0
- package/dist/core/authority/index.d.ts.map +1 -0
- package/dist/core/authority/index.js +2 -0
- package/dist/core/authority/index.js.map +1 -0
- package/dist/core/autofix/AutoFixEngine.d.ts +17 -0
- package/dist/core/autofix/AutoFixEngine.d.ts.map +1 -0
- package/dist/core/autofix/AutoFixEngine.js +46 -0
- package/dist/core/autofix/AutoFixEngine.js.map +1 -0
- package/dist/core/autofix/index.d.ts +2 -0
- package/dist/core/autofix/index.d.ts.map +1 -0
- package/dist/core/autofix/index.js +2 -0
- package/dist/core/autofix/index.js.map +1 -0
- package/dist/core/automation/AutoExecutor.d.ts +20 -0
- package/dist/core/automation/AutoExecutor.d.ts.map +1 -0
- package/dist/core/automation/AutoExecutor.js +38 -0
- package/dist/core/automation/AutoExecutor.js.map +1 -0
- package/dist/core/automation/index.d.ts +2 -0
- package/dist/core/automation/index.d.ts.map +1 -0
- package/dist/core/automation/index.js +2 -0
- package/dist/core/automation/index.js.map +1 -0
- package/dist/core/checkpoint/CheckpointManager.d.ts +43 -0
- package/dist/core/checkpoint/CheckpointManager.d.ts.map +1 -0
- package/dist/core/checkpoint/CheckpointManager.js +158 -0
- package/dist/core/checkpoint/CheckpointManager.js.map +1 -0
- package/dist/core/checkpoint/RollbackEngine.d.ts +31 -0
- package/dist/core/checkpoint/RollbackEngine.d.ts.map +1 -0
- package/dist/core/checkpoint/RollbackEngine.js +176 -0
- package/dist/core/checkpoint/RollbackEngine.js.map +1 -0
- package/dist/core/checkpoint/index.d.ts +4 -0
- package/dist/core/checkpoint/index.d.ts.map +1 -0
- package/dist/core/checkpoint/index.js +4 -0
- package/dist/core/checkpoint/index.js.map +1 -0
- package/dist/core/checkpoint/types.d.ts +33 -0
- package/dist/core/checkpoint/types.d.ts.map +1 -0
- package/dist/core/checkpoint/types.js +2 -0
- package/dist/core/checkpoint/types.js.map +1 -0
- package/dist/core/consistency/ConsistencyAnalyzer.d.ts +12 -0
- package/dist/core/consistency/ConsistencyAnalyzer.d.ts.map +1 -0
- package/dist/core/consistency/ConsistencyAnalyzer.js +79 -0
- package/dist/core/consistency/ConsistencyAnalyzer.js.map +1 -0
- package/dist/core/consistency/index.d.ts +3 -0
- package/dist/core/consistency/index.d.ts.map +1 -0
- package/dist/core/consistency/index.js +3 -0
- package/dist/core/consistency/index.js.map +1 -0
- package/dist/core/consistency/types.d.ts +43 -0
- package/dist/core/consistency/types.d.ts.map +1 -0
- package/dist/core/consistency/types.js +5 -0
- package/dist/core/consistency/types.js.map +1 -0
- package/dist/core/context/ContextDetector.d.ts +14 -0
- package/dist/core/context/ContextDetector.d.ts.map +1 -0
- package/dist/core/context/ContextDetector.js +58 -0
- package/dist/core/context/ContextDetector.js.map +1 -0
- package/dist/core/context/index.d.ts +3 -0
- package/dist/core/context/index.d.ts.map +1 -0
- package/dist/core/context/index.js +3 -0
- package/dist/core/context/index.js.map +1 -0
- package/dist/core/context/types.d.ts +41 -0
- package/dist/core/context/types.d.ts.map +1 -0
- package/dist/core/context/types.js +5 -0
- package/dist/core/context/types.js.map +1 -0
- package/dist/core/decision/AlternativeGenerator.d.ts +32 -0
- package/dist/core/decision/AlternativeGenerator.d.ts.map +1 -0
- package/dist/core/decision/AlternativeGenerator.js +155 -0
- package/dist/core/decision/AlternativeGenerator.js.map +1 -0
- package/dist/core/decision/ConfidenceCalculator.d.ts +42 -0
- package/dist/core/decision/ConfidenceCalculator.d.ts.map +1 -0
- package/dist/core/decision/ConfidenceCalculator.js +114 -0
- package/dist/core/decision/ConfidenceCalculator.js.map +1 -0
- package/dist/core/decision/DecisionEngine.d.ts +42 -0
- package/dist/core/decision/DecisionEngine.d.ts.map +1 -0
- package/dist/core/decision/DecisionEngine.js +144 -0
- package/dist/core/decision/DecisionEngine.js.map +1 -0
- package/dist/core/decision/DecisionMatrix.d.ts +29 -0
- package/dist/core/decision/DecisionMatrix.d.ts.map +1 -0
- package/dist/core/decision/DecisionMatrix.js +66 -0
- package/dist/core/decision/DecisionMatrix.js.map +1 -0
- package/dist/core/decision/index.d.ts +6 -0
- package/dist/core/decision/index.d.ts.map +1 -0
- package/dist/core/decision/index.js +6 -0
- package/dist/core/decision/index.js.map +1 -0
- package/dist/core/decision/types.d.ts +40 -0
- package/dist/core/decision/types.d.ts.map +1 -0
- package/dist/core/decision/types.js +5 -0
- package/dist/core/decision/types.js.map +1 -0
- package/dist/core/discovery/CodebaseDiscovery.d.ts +19 -0
- package/dist/core/discovery/CodebaseDiscovery.d.ts.map +1 -0
- package/dist/core/discovery/CodebaseDiscovery.js +83 -0
- package/dist/core/discovery/CodebaseDiscovery.js.map +1 -0
- package/dist/core/discovery/index.d.ts +2 -0
- package/dist/core/discovery/index.d.ts.map +1 -0
- package/dist/core/discovery/index.js +2 -0
- package/dist/core/discovery/index.js.map +1 -0
- package/dist/core/feedback/FeedbackLoop.d.ts +21 -0
- package/dist/core/feedback/FeedbackLoop.d.ts.map +1 -0
- package/dist/core/feedback/FeedbackLoop.js +45 -0
- package/dist/core/feedback/FeedbackLoop.js.map +1 -0
- package/dist/core/feedback/index.d.ts +2 -0
- package/dist/core/feedback/index.d.ts.map +1 -0
- package/dist/core/feedback/index.js +2 -0
- package/dist/core/feedback/index.js.map +1 -0
- package/dist/core/growth/GrowthProjector.d.ts +12 -0
- package/dist/core/growth/GrowthProjector.d.ts.map +1 -0
- package/dist/core/growth/GrowthProjector.js +93 -0
- package/dist/core/growth/GrowthProjector.js.map +1 -0
- package/dist/core/growth/index.d.ts +3 -0
- package/dist/core/growth/index.d.ts.map +1 -0
- package/dist/core/growth/index.js +3 -0
- package/dist/core/growth/index.js.map +1 -0
- package/dist/core/growth/types.d.ts +40 -0
- package/dist/core/growth/types.d.ts.map +1 -0
- package/dist/core/growth/types.js +5 -0
- package/dist/core/growth/types.js.map +1 -0
- package/dist/core/impact/ImpactAnalyzer.d.ts +22 -0
- package/dist/core/impact/ImpactAnalyzer.d.ts.map +1 -0
- package/dist/core/impact/ImpactAnalyzer.js +43 -0
- package/dist/core/impact/ImpactAnalyzer.js.map +1 -0
- package/dist/core/impact/index.d.ts +2 -0
- package/dist/core/impact/index.d.ts.map +1 -0
- package/dist/core/impact/index.js +2 -0
- package/dist/core/impact/index.js.map +1 -0
- package/dist/core/knowledge/ADRManager.d.ts +22 -0
- package/dist/core/knowledge/ADRManager.d.ts.map +1 -0
- package/dist/core/knowledge/ADRManager.js +82 -0
- package/dist/core/knowledge/ADRManager.js.map +1 -0
- package/dist/core/knowledge/ContextLoader.d.ts +18 -0
- package/dist/core/knowledge/ContextLoader.d.ts.map +1 -0
- package/dist/core/knowledge/ContextLoader.js +48 -0
- package/dist/core/knowledge/ContextLoader.js.map +1 -0
- package/dist/core/knowledge/KnowledgeBase.d.ts +35 -0
- package/dist/core/knowledge/KnowledgeBase.d.ts.map +1 -0
- package/dist/core/knowledge/KnowledgeBase.js +143 -0
- package/dist/core/knowledge/KnowledgeBase.js.map +1 -0
- package/dist/core/knowledge/PatternRegistry.d.ts +22 -0
- package/dist/core/knowledge/PatternRegistry.d.ts.map +1 -0
- package/dist/core/knowledge/PatternRegistry.js +56 -0
- package/dist/core/knowledge/PatternRegistry.js.map +1 -0
- package/dist/core/knowledge/index.d.ts +6 -0
- package/dist/core/knowledge/index.d.ts.map +1 -0
- package/dist/core/knowledge/index.js +6 -0
- package/dist/core/knowledge/index.js.map +1 -0
- package/dist/core/knowledge/types.d.ts +60 -0
- package/dist/core/knowledge/types.d.ts.map +1 -0
- package/dist/core/knowledge/types.js +2 -0
- package/dist/core/knowledge/types.js.map +1 -0
- package/dist/core/metrics/MetricsCollector.d.ts +21 -0
- package/dist/core/metrics/MetricsCollector.d.ts.map +1 -0
- package/dist/core/metrics/MetricsCollector.js +20 -0
- package/dist/core/metrics/MetricsCollector.js.map +1 -0
- package/dist/core/metrics/index.d.ts +2 -0
- package/dist/core/metrics/index.d.ts.map +1 -0
- package/dist/core/metrics/index.js +2 -0
- package/dist/core/metrics/index.js.map +1 -0
- package/dist/core/notification/NotificationManager.d.ts +20 -0
- package/dist/core/notification/NotificationManager.d.ts.map +1 -0
- package/dist/core/notification/NotificationManager.js +16 -0
- package/dist/core/notification/NotificationManager.js.map +1 -0
- package/dist/core/notification/index.d.ts +2 -0
- package/dist/core/notification/index.d.ts.map +1 -0
- package/dist/core/notification/index.js +2 -0
- package/dist/core/notification/index.js.map +1 -0
- package/dist/core/risk/RiskEvaluator.d.ts +11 -0
- package/dist/core/risk/RiskEvaluator.d.ts.map +1 -0
- package/dist/core/risk/RiskEvaluator.js +83 -0
- package/dist/core/risk/RiskEvaluator.js.map +1 -0
- package/dist/core/risk/index.d.ts +3 -0
- package/dist/core/risk/index.d.ts.map +1 -0
- package/dist/core/risk/index.js +3 -0
- package/dist/core/risk/index.js.map +1 -0
- package/dist/core/risk/types.d.ts +19 -0
- package/dist/core/risk/types.d.ts.map +1 -0
- package/dist/core/risk/types.js +2 -0
- package/dist/core/risk/types.js.map +1 -0
- package/dist/core/roadmap/RoadmapManager.d.ts +14 -0
- package/dist/core/roadmap/RoadmapManager.d.ts.map +1 -0
- package/dist/core/roadmap/RoadmapManager.js +81 -0
- package/dist/core/roadmap/RoadmapManager.js.map +1 -0
- package/dist/core/roadmap/index.d.ts +3 -0
- package/dist/core/roadmap/index.d.ts.map +1 -0
- package/dist/core/roadmap/index.js +3 -0
- package/dist/core/roadmap/index.js.map +1 -0
- package/dist/core/roadmap/types.d.ts +64 -0
- package/dist/core/roadmap/types.d.ts.map +1 -0
- package/dist/core/roadmap/types.js +5 -0
- package/dist/core/roadmap/types.js.map +1 -0
- package/dist/core/strangler/StranglerOrchestrator.d.ts +14 -0
- package/dist/core/strangler/StranglerOrchestrator.d.ts.map +1 -0
- package/dist/core/strangler/StranglerOrchestrator.js +87 -0
- package/dist/core/strangler/StranglerOrchestrator.js.map +1 -0
- package/dist/core/strangler/index.d.ts +3 -0
- package/dist/core/strangler/index.d.ts.map +1 -0
- package/dist/core/strangler/index.js +3 -0
- package/dist/core/strangler/index.js.map +1 -0
- package/dist/core/strangler/types.d.ts +70 -0
- package/dist/core/strangler/types.d.ts.map +1 -0
- package/dist/core/strangler/types.js +5 -0
- package/dist/core/strangler/types.js.map +1 -0
- package/dist/core/testing/TestRunner.d.ts +17 -0
- package/dist/core/testing/TestRunner.d.ts.map +1 -0
- package/dist/core/testing/TestRunner.js +22 -0
- package/dist/core/testing/TestRunner.js.map +1 -0
- package/dist/core/testing/index.d.ts +2 -0
- package/dist/core/testing/index.d.ts.map +1 -0
- package/dist/core/testing/index.js +2 -0
- package/dist/core/testing/index.js.map +1 -0
- package/dist/core/tradeoff/TradeoffAnalyzer.d.ts +24 -0
- package/dist/core/tradeoff/TradeoffAnalyzer.d.ts.map +1 -0
- package/dist/core/tradeoff/TradeoffAnalyzer.js +51 -0
- package/dist/core/tradeoff/TradeoffAnalyzer.js.map +1 -0
- package/dist/core/tradeoff/index.d.ts +2 -0
- package/dist/core/tradeoff/index.d.ts.map +1 -0
- package/dist/core/tradeoff/index.js +2 -0
- package/dist/core/tradeoff/index.js.map +1 -0
- package/dist/core/validation/DependencyValidator.d.ts +28 -0
- package/dist/core/validation/DependencyValidator.d.ts.map +1 -0
- package/dist/core/validation/DependencyValidator.js +188 -0
- package/dist/core/validation/DependencyValidator.js.map +1 -0
- package/dist/core/validation/SecurityValidator.d.ts +44 -0
- package/dist/core/validation/SecurityValidator.d.ts.map +1 -0
- package/dist/core/validation/SecurityValidator.js +248 -0
- package/dist/core/validation/SecurityValidator.js.map +1 -0
- package/dist/core/validation/ValidationPipeline.d.ts +62 -0
- package/dist/core/validation/ValidationPipeline.d.ts.map +1 -0
- package/dist/core/validation/ValidationPipeline.js +216 -0
- package/dist/core/validation/ValidationPipeline.js.map +1 -0
- package/dist/core/validation/index.d.ts +4 -0
- package/dist/core/validation/index.d.ts.map +1 -0
- package/dist/core/validation/index.js +4 -0
- package/dist/core/validation/index.js.map +1 -0
- package/dist/core/validation/layers/ArchitectureValidator.d.ts +21 -0
- package/dist/core/validation/layers/ArchitectureValidator.d.ts.map +1 -0
- package/dist/core/validation/layers/ArchitectureValidator.js +226 -0
- package/dist/core/validation/layers/ArchitectureValidator.js.map +1 -0
- package/dist/core/validation/layers/QualityValidator.d.ts +23 -0
- package/dist/core/validation/layers/QualityValidator.d.ts.map +1 -0
- package/dist/core/validation/layers/QualityValidator.js +259 -0
- package/dist/core/validation/layers/QualityValidator.js.map +1 -0
- package/dist/core/validation/layers/SecurityValidatorWrapper.d.ts +12 -0
- package/dist/core/validation/layers/SecurityValidatorWrapper.d.ts.map +1 -0
- package/dist/core/validation/layers/SecurityValidatorWrapper.js +54 -0
- package/dist/core/validation/layers/SecurityValidatorWrapper.js.map +1 -0
- package/dist/core/validation/layers/SemanticValidator.d.ts +21 -0
- package/dist/core/validation/layers/SemanticValidator.d.ts.map +1 -0
- package/dist/core/validation/layers/SemanticValidator.js +182 -0
- package/dist/core/validation/layers/SemanticValidator.js.map +1 -0
- package/dist/core/validation/layers/SyntacticValidator.d.ts +17 -0
- package/dist/core/validation/layers/SyntacticValidator.d.ts.map +1 -0
- package/dist/core/validation/layers/SyntacticValidator.js +194 -0
- package/dist/core/validation/layers/SyntacticValidator.js.map +1 -0
- package/dist/core/validation/types.d.ts +90 -0
- package/dist/core/validation/types.d.ts.map +1 -0
- package/dist/core/validation/types.js +24 -0
- package/dist/core/validation/types.js.map +1 -0
- package/dist/frontend-first/contract-generator.d.ts +47 -0
- package/dist/frontend-first/contract-generator.d.ts.map +1 -0
- package/dist/frontend-first/contract-generator.js +312 -0
- package/dist/frontend-first/contract-generator.js.map +1 -0
- package/dist/frontend-first/mock-generator.d.ts +23 -0
- package/dist/frontend-first/mock-generator.d.ts.map +1 -0
- package/dist/frontend-first/mock-generator.js +186 -0
- package/dist/frontend-first/mock-generator.js.map +1 -0
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/optimization/batch-prompts.d.ts +27 -0
- package/dist/optimization/batch-prompts.d.ts.map +1 -0
- package/dist/optimization/batch-prompts.js +178 -0
- package/dist/optimization/batch-prompts.js.map +1 -0
- package/dist/optimization/context-cache.d.ts +45 -0
- package/dist/optimization/context-cache.d.ts.map +1 -0
- package/dist/optimization/context-cache.js +149 -0
- package/dist/optimization/context-cache.js.map +1 -0
- package/dist/optimization/smart-validation.d.ts +43 -0
- package/dist/optimization/smart-validation.d.ts.map +1 -0
- package/dist/optimization/smart-validation.js +137 -0
- package/dist/optimization/smart-validation.js.map +1 -0
- package/dist/resources/index.d.ts.map +1 -1
- package/dist/resources/index.js +9 -9
- package/dist/resources/index.js.map +1 -1
- package/dist/stdio.js +189 -1
- package/dist/stdio.js.map +1 -1
- package/dist/tasks/task-manager.d.ts +30 -0
- package/dist/tasks/task-manager.d.ts.map +1 -0
- package/dist/tasks/task-manager.js +290 -0
- package/dist/tasks/task-manager.js.map +1 -0
- package/dist/tools/atualizar-tarefa.d.ts +17 -0
- package/dist/tools/atualizar-tarefa.d.ts.map +1 -0
- package/dist/tools/atualizar-tarefa.js +200 -0
- package/dist/tools/atualizar-tarefa.js.map +1 -0
- package/dist/tools/configurar-modo.d.ts +10 -0
- package/dist/tools/configurar-modo.d.ts.map +1 -0
- package/dist/tools/configurar-modo.js +121 -0
- package/dist/tools/configurar-modo.js.map +1 -0
- package/dist/tools/contexto.d.ts.map +1 -1
- package/dist/tools/contexto.js +35 -4
- package/dist/tools/contexto.js.map +1 -1
- package/dist/tools/criar-tarefa.d.ts +17 -0
- package/dist/tools/criar-tarefa.d.ts.map +1 -0
- package/dist/tools/criar-tarefa.js +132 -0
- package/dist/tools/criar-tarefa.js.map +1 -0
- package/dist/tools/fase1/checkpoint.tools.d.ts +150 -0
- package/dist/tools/fase1/checkpoint.tools.d.ts.map +1 -0
- package/dist/tools/fase1/checkpoint.tools.js +165 -0
- package/dist/tools/fase1/checkpoint.tools.js.map +1 -0
- package/dist/tools/fase1/knowledge.tools.d.ts +265 -0
- package/dist/tools/fase1/knowledge.tools.d.ts.map +1 -0
- package/dist/tools/fase1/knowledge.tools.js +209 -0
- package/dist/tools/fase1/knowledge.tools.js.map +1 -0
- package/dist/tools/fase1/misc.tools.d.ts +113 -0
- package/dist/tools/fase1/misc.tools.d.ts.map +1 -0
- package/dist/tools/fase1/misc.tools.js +99 -0
- package/dist/tools/fase1/misc.tools.js.map +1 -0
- package/dist/tools/fase1/validation.tools.d.ts +103 -0
- package/dist/tools/fase1/validation.tools.d.ts.map +1 -0
- package/dist/tools/fase1/validation.tools.js +174 -0
- package/dist/tools/fase1/validation.tools.js.map +1 -0
- package/dist/tools/gerar-contrato-api.d.ts +15 -0
- package/dist/tools/gerar-contrato-api.d.ts.map +1 -0
- package/dist/tools/gerar-contrato-api.js +216 -0
- package/dist/tools/gerar-contrato-api.js.map +1 -0
- package/dist/tools/iniciar-projeto.d.ts +12 -0
- package/dist/tools/iniciar-projeto.d.ts.map +1 -1
- package/dist/tools/iniciar-projeto.js +51 -17
- package/dist/tools/iniciar-projeto.js.map +1 -1
- package/dist/tools/listar-tarefas.d.ts +16 -0
- package/dist/tools/listar-tarefas.d.ts.map +1 -0
- package/dist/tools/listar-tarefas.js +215 -0
- package/dist/tools/listar-tarefas.js.map +1 -0
- package/dist/tools/phase2/architecture.tools.d.ts +37 -0
- package/dist/tools/phase2/architecture.tools.d.ts.map +1 -0
- package/dist/tools/phase2/architecture.tools.js +51 -0
- package/dist/tools/phase2/architecture.tools.js.map +1 -0
- package/dist/tools/phase2/decision.tools.d.ts +61 -0
- package/dist/tools/phase2/decision.tools.d.ts.map +1 -0
- package/dist/tools/phase2/decision.tools.js +69 -0
- package/dist/tools/phase2/decision.tools.js.map +1 -0
- package/dist/tools/phase2/index.d.ts +8 -0
- package/dist/tools/phase2/index.d.ts.map +1 -0
- package/dist/tools/phase2/index.js +16 -0
- package/dist/tools/phase2/index.js.map +1 -0
- package/dist/tools/phase2/validation.tools.d.ts +40 -0
- package/dist/tools/phase2/validation.tools.d.ts.map +1 -0
- package/dist/tools/phase2/validation.tools.js +43 -0
- package/dist/tools/phase2/validation.tools.js.map +1 -0
- package/dist/tools/phase3/atam.tools.d.ts +26 -0
- package/dist/tools/phase3/atam.tools.d.ts.map +1 -0
- package/dist/tools/phase3/atam.tools.js +48 -0
- package/dist/tools/phase3/atam.tools.js.map +1 -0
- package/dist/tools/phase3/consistency.tools.d.ts +15 -0
- package/dist/tools/phase3/consistency.tools.d.ts.map +1 -0
- package/dist/tools/phase3/consistency.tools.js +20 -0
- package/dist/tools/phase3/consistency.tools.js.map +1 -0
- package/dist/tools/phase3/context.tools.d.ts +25 -0
- package/dist/tools/phase3/context.tools.d.ts.map +1 -0
- package/dist/tools/phase3/context.tools.js +32 -0
- package/dist/tools/phase3/context.tools.js.map +1 -0
- package/dist/tools/phase3/growth.tools.d.ts +28 -0
- package/dist/tools/phase3/growth.tools.d.ts.map +1 -0
- package/dist/tools/phase3/growth.tools.js +32 -0
- package/dist/tools/phase3/growth.tools.js.map +1 -0
- package/dist/tools/phase3/index.d.ts +10 -0
- package/dist/tools/phase3/index.d.ts.map +1 -0
- package/dist/tools/phase3/index.js +10 -0
- package/dist/tools/phase3/index.js.map +1 -0
- package/dist/tools/phase3/roadmap.tools.d.ts +41 -0
- package/dist/tools/phase3/roadmap.tools.d.ts.map +1 -0
- package/dist/tools/phase3/roadmap.tools.js +44 -0
- package/dist/tools/phase3/roadmap.tools.js.map +1 -0
- package/dist/tools/phase3/strangler.tools.d.ts +37 -0
- package/dist/tools/phase3/strangler.tools.d.ts.map +1 -0
- package/dist/tools/phase3/strangler.tools.js +44 -0
- package/dist/tools/phase3/strangler.tools.js.map +1 -0
- package/dist/tools/proximo.d.ts.map +1 -1
- package/dist/tools/proximo.js +45 -8
- package/dist/tools/proximo.js.map +1 -1
- package/dist/tools/status.d.ts.map +1 -1
- package/dist/tools/status.js +28 -5
- package/dist/tools/status.js.map +1 -1
- package/dist/tools/validar-gate.d.ts.map +1 -1
- package/dist/tools/validar-gate.js +14 -0
- package/dist/tools/validar-gate.js.map +1 -1
- package/dist/types/config.d.ts +46 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +162 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/index.d.ts +38 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/tasks.d.ts +100 -0
- package/dist/types/tasks.d.ts.map +1 -0
- package/dist/types/tasks.js +2 -0
- package/dist/types/tasks.js.map +1 -0
- package/dist/utils/__tests__/prompt-mapper.test.d.ts +2 -0
- package/dist/utils/__tests__/prompt-mapper.test.d.ts.map +1 -0
- package/dist/utils/__tests__/prompt-mapper.test.js +184 -0
- package/dist/utils/__tests__/prompt-mapper.test.js.map +1 -0
- package/dist/utils/content-injector.d.ts +1 -0
- package/dist/utils/content-injector.d.ts.map +1 -1
- package/dist/utils/content-injector.js +122 -2
- package/dist/utils/content-injector.js.map +1 -1
- package/dist/utils/files.d.ts +16 -16
- package/dist/utils/files.d.ts.map +1 -1
- package/dist/utils/files.js +59 -115
- package/dist/utils/files.js.map +1 -1
- package/dist/utils/history.d.ts +10 -0
- package/dist/utils/history.d.ts.map +1 -1
- package/dist/utils/history.js +12 -1
- package/dist/utils/history.js.map +1 -1
- package/dist/utils/prompt-mapper.d.ts +46 -0
- package/dist/utils/prompt-mapper.d.ts.map +1 -1
- package/dist/utils/prompt-mapper.js +100 -0
- package/dist/utils/prompt-mapper.js.map +1 -1
- package/package.json +5 -5
- package/dist/content/examples/Exemplo de Fluxo Completo com Java e Spring Boot.md +0 -250
- package/dist/content/examples/Exemplo de Fluxo Completo com Laravel e Filament.md +0 -278
- package/dist/content/examples/Exemplo de Fluxo Completo com Laravel e Livewire.md +0 -261
- package/dist/content/examples/Exemplo de Fluxo Completo com Node e NestJS.md +0 -258
- package/dist/content/guides/Cat/303/241logo de Stacks para Cloud Moderna.md" +0 -119
- package/dist/content/guides/Cat/303/241logo de Stacks para Hospedagem Compartilhada.md" +0 -147
- package/dist/content/guides/Checklist Mestre de Entrega.md +0 -68
- package/dist/content/guides/Gates de Qualidade.md +0 -209
- package/dist/content/guides/Guia de Adi/303/247/303/243o de Novas Funcionalidades.md" +0 -355
- package/dist/content/guides/Guia de Chaos Engineering.md +0 -267
- package/dist/content/guides/Guia de Estrat/303/251gias de Cache.md" +0 -352
- package/dist/content/guides/Guia de Migrations Zero-Downtime.md +0 -311
- package/dist/content/guides/Guia de Multi-tenancy.md +0 -368
- package/dist/content/guides/Guia de Otimiza/303/247/303/243o de Custos Cloud.md" +0 -195
- package/dist/content/guides/Guia de Refatora/303/247/303/243o de C/303/263digo Legado com IA.md" +0 -162
- package/dist/content/guides/Guia de SLOs e Error Budgets.md +0 -315
- package/dist/content/guides/M/303/251tricas de Efici/303/252ncia do Desenvolvimento com IA.md" +0 -93
- package/dist/content/guides/Rules base.md +0 -90
- package/dist/content/playbook/Playbook de Desenvolvimento com IA.md +0 -364
- package/dist/content/prompts/README.md +0 -203
- package/dist/content/prompts/acessibilidade/analise-acessibilidade.md +0 -257
- package/dist/content/prompts/apis/design-api-rest.md +0 -303
- package/dist/content/prompts/apis/idempotencia.md +0 -254
- package/dist/content/prompts/apis/versionamento.md +0 -313
- package/dist/content/prompts/arquitetura/arquitetura-c4-completo.md +0 -190
- package/dist/content/prompts/arquitetura/clean-architecture.md +0 -151
- package/dist/content/prompts/arquitetura/multi-tenancy.md +0 -235
- package/dist/content/prompts/database/migrations-zero-downtime.md +0 -192
- package/dist/content/prompts/database/otimizacao-queries.md +0 -296
- package/dist/content/prompts/desenvolvimento/code-review.md +0 -301
- package/dist/content/prompts/desenvolvimento/gerar-servico.md +0 -271
- package/dist/content/prompts/devops/docker-compose.md +0 -336
- package/dist/content/prompts/devops/feature-flags.md +0 -374
- package/dist/content/prompts/devops/kubernetes-deploy.md +0 -460
- package/dist/content/prompts/devops/pipeline-cicd.md +0 -358
- package/dist/content/prompts/devops/terraform-iac.md +0 -502
- package/dist/content/prompts/escalabilidade/analise-performance.md +0 -240
- package/dist/content/prompts/escalabilidade/analise-performance.txt +0 -94
- package/dist/content/prompts/escalabilidade/caching.md +0 -255
- package/dist/content/prompts/observabilidade/chaos-testing.md +0 -237
- package/dist/content/prompts/observabilidade/estrategia-observabilidade.md +0 -263
- package/dist/content/prompts/observabilidade/estrategia-observabilidade.txt +0 -134
- package/dist/content/prompts/observabilidade/slos.md +0 -215
- package/dist/content/prompts/produto/discovery-inicial.md +0 -203
- package/dist/content/prompts/produto/discovery-inicial.txt +0 -33
- package/dist/content/prompts/requisitos/refinar-requisitos.md +0 -232
- package/dist/content/prompts/requisitos/refinar-requisitos.txt +0 -40
- package/dist/content/prompts/seguranca/analise-seguranca.md +0 -243
- package/dist/content/prompts/seguranca/pentest-checklist.md +0 -333
- package/dist/content/prompts/seguranca/rate-limiting.md +0 -356
- package/dist/content/prompts/seguranca/revisao-lgpd.md +0 -227
- package/dist/content/prompts/seguranca/threat-modeling.md +0 -224
- package/dist/content/prompts/testes/contract-testing.md +0 -340
- package/dist/content/prompts/testes/gerar-testes-unitarios.md +0 -474
- package/dist/content/prompts/testes/testes-e2e.md +0 -460
- package/dist/content/prompts/testes/testes-integracao.md +0 -418
- package/dist/content/prompts/testes/testes-performance.md +0 -458
- package/dist/content/prompts/ux/gerar-ui-stitch.md +0 -151
- package/dist/content/specialists/Especialista em Acessibilidade.md +0 -266
- package/dist/content/specialists/Especialista em An/303/241lise de Testes.md" +0 -434
- package/dist/content/specialists/Especialista em Arquitetura Avan/303/247ada.md" +0 -358
- package/dist/content/specialists/Especialista em Arquitetura de Software.md +0 -177
- package/dist/content/specialists/Especialista em Banco de Dados.md +0 -260
- package/dist/content/specialists/Especialista em Contrato de API.md +0 -172
- package/dist/content/specialists/Especialista em Dados e Analytics com IA.md +0 -246
- package/dist/content/specialists/Especialista em Debugging e Troubleshooting.md +0 -191
- package/dist/content/specialists/Especialista em Desenvolvimento Frontend.md +0 -477
- package/dist/content/specialists/Especialista em Desenvolvimento Mobile.md +0 -241
- package/dist/content/specialists/Especialista em Desenvolvimento e Vibe Coding Estruturado.md +0 -417
- package/dist/content/specialists/Especialista em DevOps e Infraestrutura.md +0 -294
- package/dist/content/specialists/Especialista em Documenta/303/247/303/243o T/303/251cnica.md" +0 -227
- package/dist/content/specialists/Especialista em Engenharia de Requisitos com IA.md +0 -299
- package/dist/content/specialists/Especialista em Explora/303/247/303/243o de Codebase.md" +0 -179
- package/dist/content/specialists/Especialista em Gest/303/243o de Produto.md" +0 -179
- package/dist/content/specialists/Especialista em Migra/303/247/303/243o e Moderniza/303/247/303/243o.md" +0 -410
- package/dist/content/specialists/Especialista em Modelagem e Arquitetura de Dom/303/255nio com IA.md" +0 -248
- package/dist/content/specialists/Especialista em Observabilidade.md +0 -415
- package/dist/content/specialists/Especialista em Performance e Escalabilidade.md +0 -373
- package/dist/content/specialists/Especialista em Plano de Execu/303/247/303/243o com IA.md" +0 -341
- package/dist/content/specialists/Especialista em Prototipagem R/303/241pida com Google Stitch.md" +0 -419
- package/dist/content/specialists/Especialista em Seguran/303/247a da Informa/303/247/303/243o.md" +0 -508
- package/dist/content/specialists/Especialista em UX Design.md +0 -453
- package/dist/content/specialists/INDEX.md +0 -43
- package/dist/content/templates/PRD.md +0 -165
- package/dist/content/templates/README.md +0 -65
- package/dist/content/templates/adr.md +0 -103
- package/dist/content/templates/arquitetura.md +0 -279
- package/dist/content/templates/backlog.md +0 -185
- package/dist/content/templates/checklist-seguranca.md +0 -180
- package/dist/content/templates/contexto.md +0 -120
- package/dist/content/templates/criterios-aceite.md +0 -99
- package/dist/content/templates/design-banco.md +0 -270
- package/dist/content/templates/design-doc.md +0 -240
- package/dist/content/templates/feature.md +0 -88
- package/dist/content/templates/historia-backend.md +0 -84
- package/dist/content/templates/historia-frontend.md +0 -75
- package/dist/content/templates/historia-usuario.md +0 -125
- package/dist/content/templates/mapa-navegacao.md +0 -133
- package/dist/content/templates/matriz-rastreabilidade.md +0 -121
- package/dist/content/templates/modelo-dominio.md +0 -219
- package/dist/content/templates/plano-testes.md +0 -199
- package/dist/content/templates/prototipo-stitch.md +0 -138
- package/dist/content/templates/requisitos.md +0 -162
- package/dist/content/templates/slo-sli.md +0 -197
- /package/dist/content/{guides/Guia de Debugging com IA.md → skills/specialist-debugging-troubleshooting/resources/reference/debugging-ai-guide.md} +0 -0
- /package/dist/content/{prompts/arquitetura → skills/specialist-modelagem-dominio/resources/prompts}/ddd-bounded-contexts.md +0 -0
- /package/dist/content/{prompts/arquitetura → skills/specialist-modelagem-dominio/resources/prompts}/ddd-cqrs.md +0 -0
- /package/dist/content/{prompts/arquitetura → skills/specialist-modelagem-dominio/resources/prompts}/modelo-dominio.md +0 -0
|
@@ -0,0 +1,772 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
Função MCP de Referência: validate_analytics_quality
|
|
4
|
+
|
|
5
|
+
Esta função serve como referência para implementação no MCP.
|
|
6
|
+
NÃO EXECUTÁVEL LOCALMENTE - Apenas documentação da estrutura esperada.
|
|
7
|
+
|
|
8
|
+
Propósito: Validar qualidade do pipeline de analytics
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
async def validate_analytics_quality(params: dict) -> dict:
|
|
12
|
+
"""
|
|
13
|
+
Valida qualidade do pipeline de analytics
|
|
14
|
+
|
|
15
|
+
Args:
|
|
16
|
+
params: {
|
|
17
|
+
"pipeline_path": str, # Caminho do pipeline
|
|
18
|
+
"feature_content": dict, # Conteúdo da feature
|
|
19
|
+
"validation_level": str, # basic|complete|strict
|
|
20
|
+
"data_quality_checks": bool, # Validar qualidade de dados
|
|
21
|
+
"pipeline_tests": bool, # Testar pipeline
|
|
22
|
+
"dashboard_validation": bool, # Validar dashboard
|
|
23
|
+
"project_context": dict # Contexto do projeto
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
Returns:
|
|
27
|
+
dict: {
|
|
28
|
+
"success": bool, # Status da validação
|
|
29
|
+
"score": int, # Score 0-100
|
|
30
|
+
"issues": list[dict], # Issues encontrados
|
|
31
|
+
"recommendations": list[str], # Recomendações
|
|
32
|
+
"can_proceed": bool, # Pode prosseguir
|
|
33
|
+
"validation_details": dict, # Detalhes da validação
|
|
34
|
+
"quality_metrics": dict, # Métricas de qualidade
|
|
35
|
+
"compliance_status": dict # Status de compliance
|
|
36
|
+
}
|
|
37
|
+
"""
|
|
38
|
+
|
|
39
|
+
# IMPLEMENTAÇÃO ESPERADA NO MCP:
|
|
40
|
+
|
|
41
|
+
feature_content = params["feature_content"]
|
|
42
|
+
validation_level = params.get("validation_level", "complete")
|
|
43
|
+
|
|
44
|
+
# 1. Validação Estrutural
|
|
45
|
+
structure_validation = await validate_analytics_structure(feature_content)
|
|
46
|
+
|
|
47
|
+
# 2. Validação de Conteúdo
|
|
48
|
+
content_validation = await validate_analytics_content(feature_content)
|
|
49
|
+
|
|
50
|
+
# 3. Validação de Lógica
|
|
51
|
+
logic_validation = await validate_analytics_logic(feature_content)
|
|
52
|
+
|
|
53
|
+
# 4. Validação de Qualidade de Dados (se solicitado)
|
|
54
|
+
data_quality_validation = {}
|
|
55
|
+
if params.get("data_quality_checks", True):
|
|
56
|
+
data_quality_validation = await validate_data_quality(feature_content)
|
|
57
|
+
|
|
58
|
+
# 5. Validação de Pipeline (se solicitado)
|
|
59
|
+
pipeline_validation = {}
|
|
60
|
+
if params.get("pipeline_tests", True):
|
|
61
|
+
pipeline_validation = await validate_pipeline_implementation(feature_content)
|
|
62
|
+
|
|
63
|
+
# 6. Validação de Dashboard (se solicitado)
|
|
64
|
+
dashboard_validation = {}
|
|
65
|
+
if params.get("dashboard_validation", True):
|
|
66
|
+
dashboard_validation = await validate_dashboard_implementation(feature_content)
|
|
67
|
+
|
|
68
|
+
# 7. Calcular score final
|
|
69
|
+
final_score = calculate_analytics_final_score(
|
|
70
|
+
structure_validation,
|
|
71
|
+
content_validation,
|
|
72
|
+
logic_validation,
|
|
73
|
+
data_quality_validation,
|
|
74
|
+
pipeline_validation,
|
|
75
|
+
dashboard_validation
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
# 8. Gerar issues
|
|
79
|
+
issues = generate_analytics_issues(
|
|
80
|
+
structure_validation,
|
|
81
|
+
content_validation,
|
|
82
|
+
logic_validation,
|
|
83
|
+
data_quality_validation,
|
|
84
|
+
pipeline_validation,
|
|
85
|
+
dashboard_validation
|
|
86
|
+
)
|
|
87
|
+
|
|
88
|
+
# 9. Gerar recomendações
|
|
89
|
+
recommendations = generate_analytics_recommendations(
|
|
90
|
+
feature_content,
|
|
91
|
+
final_score,
|
|
92
|
+
issues
|
|
93
|
+
)
|
|
94
|
+
|
|
95
|
+
# 10. Determinar se pode prosseguir
|
|
96
|
+
can_proceed = determine_analytics_proceed_status(final_score, validation_level, issues)
|
|
97
|
+
|
|
98
|
+
return {
|
|
99
|
+
"success": True,
|
|
100
|
+
"score": final_score,
|
|
101
|
+
"issues": issues,
|
|
102
|
+
"recommendations": recommendations,
|
|
103
|
+
"can_proceed": can_proceed,
|
|
104
|
+
"validation_details": {
|
|
105
|
+
"structure": structure_validation,
|
|
106
|
+
"content": content_validation,
|
|
107
|
+
"logic": logic_validation
|
|
108
|
+
},
|
|
109
|
+
"quality_metrics": data_quality_validation,
|
|
110
|
+
"pipeline_status": pipeline_validation,
|
|
111
|
+
"dashboard_status": dashboard_validation
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
# FUNÇÕES DE VALIDAÇÃO
|
|
116
|
+
|
|
117
|
+
async def validate_analytics_structure(feature_content: dict) -> dict:
|
|
118
|
+
"""
|
|
119
|
+
Valida estrutura da feature de analytics
|
|
120
|
+
|
|
121
|
+
Args:
|
|
122
|
+
feature_content: Conteúdo da feature
|
|
123
|
+
|
|
124
|
+
Returns:
|
|
125
|
+
dict: Resultado da validação estrutural
|
|
126
|
+
"""
|
|
127
|
+
result = {
|
|
128
|
+
"valid": True,
|
|
129
|
+
"score": 0,
|
|
130
|
+
"errors": [],
|
|
131
|
+
"warnings": []
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
# Campos obrigatórios
|
|
135
|
+
required_fields = [
|
|
136
|
+
"project_name",
|
|
137
|
+
"business_objective",
|
|
138
|
+
"data_sources",
|
|
139
|
+
"kpi_definitions",
|
|
140
|
+
"pipeline_config",
|
|
141
|
+
"data_model"
|
|
142
|
+
]
|
|
143
|
+
|
|
144
|
+
for field in required_fields:
|
|
145
|
+
if not feature_content.get(field):
|
|
146
|
+
result["errors"].append(f"Campo obrigatório ausente: {field}")
|
|
147
|
+
result["valid"] = False
|
|
148
|
+
|
|
149
|
+
# Validar tipos
|
|
150
|
+
type_validations = {
|
|
151
|
+
"data_sources": list,
|
|
152
|
+
"kpi_definitions": list,
|
|
153
|
+
"pipeline_config": dict,
|
|
154
|
+
"data_model": dict,
|
|
155
|
+
"dashboard_config": dict
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
for field, expected_type in type_validations.items():
|
|
159
|
+
value = feature_content.get(field)
|
|
160
|
+
if value is not None and not isinstance(value, expected_type):
|
|
161
|
+
result["errors"].append(f"Tipo inválido em {field}: esperado {expected_type.__name__}")
|
|
162
|
+
result["valid"] = False
|
|
163
|
+
|
|
164
|
+
# Validar estrutura de fontes de dados
|
|
165
|
+
data_sources = feature_content.get("data_sources", [])
|
|
166
|
+
for i, source in enumerate(data_sources):
|
|
167
|
+
if not isinstance(source, dict):
|
|
168
|
+
result["errors"].append(f"Fonte de dados {i} deve ser um dicionário")
|
|
169
|
+
result["valid"] = False
|
|
170
|
+
continue
|
|
171
|
+
|
|
172
|
+
required_source_fields = ["name", "type", "connection"]
|
|
173
|
+
for field in required_source_fields:
|
|
174
|
+
if not source.get(field):
|
|
175
|
+
result["errors"].append(f"Fonte {i}: campo obrigatório ausente: {field}")
|
|
176
|
+
result["valid"] = False
|
|
177
|
+
|
|
178
|
+
# Validar estrutura de KPIs
|
|
179
|
+
kpi_definitions = feature_content.get("kpi_definitions", [])
|
|
180
|
+
for i, kpi in enumerate(kpi_definitions):
|
|
181
|
+
if not isinstance(kpi, dict):
|
|
182
|
+
result["errors"].append(f"KPI {i} deve ser um dicionário")
|
|
183
|
+
result["valid"] = False
|
|
184
|
+
continue
|
|
185
|
+
|
|
186
|
+
required_kpi_fields = ["name", "formula", "target", "frequency"]
|
|
187
|
+
for field in required_kpi_fields:
|
|
188
|
+
if not kpi.get(field):
|
|
189
|
+
result["errors"].append(f"KPI {i}: campo obrigatório ausente: {field}")
|
|
190
|
+
result["valid"] = False
|
|
191
|
+
|
|
192
|
+
# Calcular score estrutural
|
|
193
|
+
if result["valid"]:
|
|
194
|
+
result["score"] = 100
|
|
195
|
+
else:
|
|
196
|
+
result["score"] = max(0, 100 - (len(result["errors"]) * 10))
|
|
197
|
+
|
|
198
|
+
return result
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
async def validate_analytics_content(feature_content: dict) -> dict:
|
|
202
|
+
"""
|
|
203
|
+
Valida conteúdo da feature de analytics
|
|
204
|
+
|
|
205
|
+
Args:
|
|
206
|
+
feature_content: Conteúdo da feature
|
|
207
|
+
|
|
208
|
+
Returns:
|
|
209
|
+
dict: Resultado da validação de conteúdo
|
|
210
|
+
"""
|
|
211
|
+
result = {
|
|
212
|
+
"valid": True,
|
|
213
|
+
"score": 0,
|
|
214
|
+
"errors": [],
|
|
215
|
+
"warnings": []
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
# Valores permitidos (enums)
|
|
219
|
+
enum_validations = {
|
|
220
|
+
"data_sources.type": ["Database", "API", "File", "Stream"],
|
|
221
|
+
"kpi_definitions.frequency": ["Real-time", "Diário", "Semanal", "Mensal"],
|
|
222
|
+
"pipeline_config.orchestration": ["Airflow", "Dagster", "Prefect"],
|
|
223
|
+
"data_model.type": ["Star Schema", "Snowflake", "Data Vault"],
|
|
224
|
+
"dashboard_config.tool": ["Metabase", "Looker", "Tableau", "Grafana"]
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
for field, allowed_values in enum_validations.items():
|
|
228
|
+
value = get_nested_analytics_value(feature_content, field)
|
|
229
|
+
if value and value not in allowed_values:
|
|
230
|
+
result["errors"].append(f"Valor inválido em {field}: {value}. Permitidos: {allowed_values}")
|
|
231
|
+
result["valid"] = False
|
|
232
|
+
|
|
233
|
+
# Validações de formato
|
|
234
|
+
format_validations = {
|
|
235
|
+
"project_name": r"^[a-zA-Z0-9\s\-_]+$",
|
|
236
|
+
"pipeline_config.schedule": r"^(@daily|@hourly|@weekly|\d+\s+\*+\s+\*)$"
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
import re
|
|
240
|
+
for field, pattern in format_validations.items():
|
|
241
|
+
value = feature_content.get(field)
|
|
242
|
+
if value and not re.match(pattern, value):
|
|
243
|
+
result["errors"].append(f"Formato inválido em {field}: {value}")
|
|
244
|
+
result["valid"] = False
|
|
245
|
+
|
|
246
|
+
# Validações de lógica de negócio
|
|
247
|
+
business_validations = [
|
|
248
|
+
{
|
|
249
|
+
"condition": lambda t: len(t.get("data_sources", [])) == 0,
|
|
250
|
+
"error": "Pelo menos uma fonte de dados deve ser configurada",
|
|
251
|
+
"field": "data_sources"
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
"condition": lambda t: len(t.get("kpi_definitions", [])) == 0,
|
|
255
|
+
"error": "Pelo menos um KPI deve ser definido",
|
|
256
|
+
"field": "kpi_definitions"
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
"condition": lambda t: t.get("pipeline_config", {}).get("orchestration") and not t.get("pipeline_config", {}).get("schedule"),
|
|
260
|
+
"error": "Pipeline com orquestração requer schedule definido",
|
|
261
|
+
"field": "pipeline_config.schedule"
|
|
262
|
+
}
|
|
263
|
+
]
|
|
264
|
+
|
|
265
|
+
for validation in business_validations:
|
|
266
|
+
if validation["condition"](feature_content):
|
|
267
|
+
result["errors"].append(validation["error"])
|
|
268
|
+
result["valid"] = False
|
|
269
|
+
|
|
270
|
+
# Calcular score de conteúdo
|
|
271
|
+
total_fields = len(enum_validations) + len(format_validations) + len(business_validations)
|
|
272
|
+
valid_fields = total_fields - len(result["errors"])
|
|
273
|
+
result["score"] = int((valid_fields / total_fields) * 100) if total_fields > 0 else 0
|
|
274
|
+
|
|
275
|
+
return result
|
|
276
|
+
|
|
277
|
+
|
|
278
|
+
async def validate_analytics_logic(feature_content: dict) -> dict:
|
|
279
|
+
"""
|
|
280
|
+
Valida lógica de negócio da feature de analytics
|
|
281
|
+
|
|
282
|
+
Args:
|
|
283
|
+
feature_content: Conteúdo da feature
|
|
284
|
+
|
|
285
|
+
Returns:
|
|
286
|
+
dict: Resultado da validação lógica
|
|
287
|
+
"""
|
|
288
|
+
result = {
|
|
289
|
+
"valid": True,
|
|
290
|
+
"score": 0,
|
|
291
|
+
"errors": [],
|
|
292
|
+
"warnings": []
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
# Regras de consistência
|
|
296
|
+
consistency_rules = [
|
|
297
|
+
{
|
|
298
|
+
"name": "Fontes e KPIs Consistentes",
|
|
299
|
+
"check": lambda t: (
|
|
300
|
+
len(t.get("data_sources", [])) > 0 and
|
|
301
|
+
len(t.get("kpi_definitions", [])) > 0
|
|
302
|
+
),
|
|
303
|
+
"error": "Fontes de dados e KPIs devem ser configurados"
|
|
304
|
+
},
|
|
305
|
+
{
|
|
306
|
+
"name": "Pipeline Completo",
|
|
307
|
+
"check": lambda t: (
|
|
308
|
+
t.get("pipeline_config", {}).get("extract") and
|
|
309
|
+
t.get("pipeline_config", {}).get("transform") and
|
|
310
|
+
t.get("pipeline_config", {}).get("load")
|
|
311
|
+
),
|
|
312
|
+
"error": "Pipeline deve ter extract, transform e load"
|
|
313
|
+
},
|
|
314
|
+
{
|
|
315
|
+
"name": "Modelo Dimensional Definido",
|
|
316
|
+
"check": lambda t: (
|
|
317
|
+
t.get("data_model", {}).get("type") and
|
|
318
|
+
t.get("data_model", {}).get("fact_tables") and
|
|
319
|
+
t.get("data_model", {}).get("dimensions")
|
|
320
|
+
),
|
|
321
|
+
"error": "Modelo dimensional deve ter tipo, fatos e dimensões"
|
|
322
|
+
},
|
|
323
|
+
{
|
|
324
|
+
"name": "Dashboard Configurado",
|
|
325
|
+
"check": lambda t: (
|
|
326
|
+
t.get("dashboard_config", {}).get("tool") and
|
|
327
|
+
t.get("dashboard_config", {}).get("kpi_mappings")
|
|
328
|
+
),
|
|
329
|
+
"error": "Dashboard deve ter ferramenta e mapeamento de KPIs"
|
|
330
|
+
}
|
|
331
|
+
]
|
|
332
|
+
|
|
333
|
+
for rule in consistency_rules:
|
|
334
|
+
if not rule["check"](feature_content):
|
|
335
|
+
result["errors"].append(f"{rule['name']}: {rule['error']}")
|
|
336
|
+
result["valid"] = False
|
|
337
|
+
|
|
338
|
+
# Regras de best practices
|
|
339
|
+
best_practices = [
|
|
340
|
+
{
|
|
341
|
+
"name": "Múltiplas Fontes de Dados",
|
|
342
|
+
"check": lambda t: len(t.get("data_sources", [])) >= 2,
|
|
343
|
+
"warning": "Recomendado usar múltiplas fontes para analytics robusto"
|
|
344
|
+
},
|
|
345
|
+
{
|
|
346
|
+
"name": "KPIs com Metas",
|
|
347
|
+
"check": lambda t: all(
|
|
348
|
+
kpi.get("target") for kpi in t.get("kpi_definitions", [])
|
|
349
|
+
),
|
|
350
|
+
"warning": "Todos os KPIs devem ter metas definidas"
|
|
351
|
+
},
|
|
352
|
+
{
|
|
353
|
+
"name": "Monitoramento Configurado",
|
|
354
|
+
"check": lambda t: t.get("monitoring_config", {}).get("enabled", False),
|
|
355
|
+
"warning": "Recomendado habilitar monitoramento do pipeline"
|
|
356
|
+
},
|
|
357
|
+
{
|
|
358
|
+
"name": "Alertas Configurados",
|
|
359
|
+
"check": lambda t: t.get("alerting_config", {}).get("enabled", False),
|
|
360
|
+
"warning": "Recomendado configurar alertas para KPIs críticos"
|
|
361
|
+
}
|
|
362
|
+
]
|
|
363
|
+
|
|
364
|
+
for practice in best_practices:
|
|
365
|
+
if not practice["check"](feature_content):
|
|
366
|
+
result["warnings"].append(f"{practice['name']}: {practice['warning']}")
|
|
367
|
+
|
|
368
|
+
# Calcular score lógico
|
|
369
|
+
total_rules = len(consistency_rules) + len(best_practices)
|
|
370
|
+
passed_rules = sum([
|
|
371
|
+
rule["check"](feature_content) for rule in consistency_rules
|
|
372
|
+
]) + sum([
|
|
373
|
+
practice["check"](feature_content) for practice in best_practices
|
|
374
|
+
])
|
|
375
|
+
|
|
376
|
+
result["score"] = int((passed_rules / total_rules) * 100) if total_rules > 0 else 0
|
|
377
|
+
|
|
378
|
+
return result
|
|
379
|
+
|
|
380
|
+
|
|
381
|
+
async def validate_data_quality(feature_content: dict) -> dict:
|
|
382
|
+
"""
|
|
383
|
+
Valida aspectos de qualidade de dados
|
|
384
|
+
|
|
385
|
+
Args:
|
|
386
|
+
feature_content: Conteúdo da feature
|
|
387
|
+
|
|
388
|
+
Returns:
|
|
389
|
+
dict: Resultado da validação de qualidade de dados
|
|
390
|
+
"""
|
|
391
|
+
result = {
|
|
392
|
+
"valid": True,
|
|
393
|
+
"score": 0,
|
|
394
|
+
"issues": [],
|
|
395
|
+
"recommendations": []
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
# Data quality checks
|
|
399
|
+
quality_checks = [
|
|
400
|
+
{
|
|
401
|
+
"name": "Data Completeness",
|
|
402
|
+
"check": lambda t: t.get("data_quality", {}).get("completeness_threshold", 0) >= 95,
|
|
403
|
+
"issue": "Threshold de completude muito baixo (< 95%)",
|
|
404
|
+
"recommendation": "Configure threshold de completude ≥ 95%"
|
|
405
|
+
},
|
|
406
|
+
{
|
|
407
|
+
"name": "Data Accuracy",
|
|
408
|
+
"check": lambda t: t.get("data_quality", {}).get("accuracy_threshold", 0) >= 99,
|
|
409
|
+
"issue": "Threshold de acurácia muito baixo (< 99%)",
|
|
410
|
+
"recommendation": "Configure threshold de acurácia ≥ 99%"
|
|
411
|
+
},
|
|
412
|
+
{
|
|
413
|
+
"name": "Data Freshness",
|
|
414
|
+
"check": lambda t: t.get("data_quality", {}).get("freshness_hours", 24) <= 1,
|
|
415
|
+
"issue": "Freshness muito baixo (> 1 hora)",
|
|
416
|
+
"recommendation": "Configure freshness ≤ 1 hora para dados em tempo real"
|
|
417
|
+
},
|
|
418
|
+
{
|
|
419
|
+
"name": "Data Consistency",
|
|
420
|
+
"check": lambda t: t.get("data_quality", {}).get("consistency_checks", False),
|
|
421
|
+
"issue": "Checks de consistência não configurados",
|
|
422
|
+
"recommendation": "Implemente checks de consistência automatizados"
|
|
423
|
+
}
|
|
424
|
+
]
|
|
425
|
+
|
|
426
|
+
for check in quality_checks:
|
|
427
|
+
if not check["check"](feature_content):
|
|
428
|
+
result["issues"].append({
|
|
429
|
+
"type": check["name"],
|
|
430
|
+
"description": check["issue"],
|
|
431
|
+
"recommendation": check["recommendation"],
|
|
432
|
+
"severity": "high"
|
|
433
|
+
})
|
|
434
|
+
result["valid"] = False
|
|
435
|
+
else:
|
|
436
|
+
result["recommendations"].append(f"✅ {check['name']} configurado")
|
|
437
|
+
|
|
438
|
+
# Calcular score de qualidade
|
|
439
|
+
total_checks = len(quality_checks)
|
|
440
|
+
passed_checks = sum([check["check"](feature_content) for check in quality_checks])
|
|
441
|
+
result["score"] = int((passed_checks / total_checks) * 100) if total_checks > 0 else 0
|
|
442
|
+
|
|
443
|
+
return result
|
|
444
|
+
|
|
445
|
+
|
|
446
|
+
async def validate_pipeline_implementation(feature_content: dict) -> dict:
|
|
447
|
+
"""
|
|
448
|
+
Valida implementação do pipeline
|
|
449
|
+
|
|
450
|
+
Args:
|
|
451
|
+
feature_content: Conteúdo da feature
|
|
452
|
+
|
|
453
|
+
Returns:
|
|
454
|
+
dict: Resultado da validação do pipeline
|
|
455
|
+
"""
|
|
456
|
+
result = {
|
|
457
|
+
"valid": True,
|
|
458
|
+
"score": 0,
|
|
459
|
+
"metrics": {},
|
|
460
|
+
"recommendations": []
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
# Pipeline implementation checks
|
|
464
|
+
pipeline_checks = [
|
|
465
|
+
{
|
|
466
|
+
"name": "Orchestration Tool",
|
|
467
|
+
"check": lambda t: t.get("pipeline_config", {}).get("orchestration") in ["Airflow", "Dagster", "Prefect"],
|
|
468
|
+
"recommendation": "Configure ferramenta de orquestração (Airflow/Dagster/Prefect)"
|
|
469
|
+
},
|
|
470
|
+
{
|
|
471
|
+
"name": "Schedule Defined",
|
|
472
|
+
"check": lambda t: t.get("pipeline_config", {}).get("schedule"),
|
|
473
|
+
"recommendation": "Defina schedule para execução do pipeline"
|
|
474
|
+
},
|
|
475
|
+
{
|
|
476
|
+
"name": "Error Handling",
|
|
477
|
+
"check": lambda t: t.get("pipeline_config", {}).get("error_handling", False),
|
|
478
|
+
"recommendation": "Implemente tratamento de erros robusto"
|
|
479
|
+
},
|
|
480
|
+
{
|
|
481
|
+
"name": "Retry Logic",
|
|
482
|
+
"check": lambda t: t.get("pipeline_config", {}).get("retry_config", {}).get("enabled", False),
|
|
483
|
+
"recommendation": "Configure retry logic para falhas temporárias"
|
|
484
|
+
},
|
|
485
|
+
{
|
|
486
|
+
"name": "Monitoring Enabled",
|
|
487
|
+
"check": lambda t: t.get("pipeline_config", {}).get("monitoring", {}).get("enabled", False),
|
|
488
|
+
"recommendation": "Habilite monitoramento do pipeline"
|
|
489
|
+
}
|
|
490
|
+
]
|
|
491
|
+
|
|
492
|
+
for check in pipeline_checks:
|
|
493
|
+
if check["check"](feature_content):
|
|
494
|
+
result["recommendations"].append(f"✅ {check['name']} configurado")
|
|
495
|
+
else:
|
|
496
|
+
result["recommendations"].append(f"⚠️ {check['recommendation']}")
|
|
497
|
+
|
|
498
|
+
# Simular métricas de pipeline
|
|
499
|
+
result["metrics"] = {
|
|
500
|
+
"expected_latency": "< 30 minutos",
|
|
501
|
+
"expected_throughput": "> 1000 registros/segundo",
|
|
502
|
+
"expected_availability": "99.5%",
|
|
503
|
+
"expected_recovery_time": "< 5 minutos"
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
# Calcular score de pipeline
|
|
507
|
+
total_checks = len(pipeline_checks)
|
|
508
|
+
configured_checks = sum([check["check"](feature_content) for check in pipeline_checks])
|
|
509
|
+
result["score"] = int((configured_checks / total_checks) * 100) if total_checks > 0 else 0
|
|
510
|
+
|
|
511
|
+
return result
|
|
512
|
+
|
|
513
|
+
|
|
514
|
+
async def validate_dashboard_implementation(feature_content: dict) -> dict:
|
|
515
|
+
"""
|
|
516
|
+
Valida implementação do dashboard
|
|
517
|
+
|
|
518
|
+
Args:
|
|
519
|
+
feature_content: Conteúdo da feature
|
|
520
|
+
|
|
521
|
+
Returns:
|
|
522
|
+
dict: Resultado da validação do dashboard
|
|
523
|
+
"""
|
|
524
|
+
result = {
|
|
525
|
+
"valid": True,
|
|
526
|
+
"score": 0,
|
|
527
|
+
"metrics": {},
|
|
528
|
+
"recommendations": []
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
# Dashboard implementation checks
|
|
532
|
+
dashboard_checks = [
|
|
533
|
+
{
|
|
534
|
+
"name": "BI Tool Selected",
|
|
535
|
+
"check": lambda t: t.get("dashboard_config", {}).get("tool") in ["Metabase", "Looker", "Tableau", "Grafana"],
|
|
536
|
+
"recommendation": "Selecione ferramenta de BI (Metabase/Looker/Tableau/Grafana)"
|
|
537
|
+
},
|
|
538
|
+
{
|
|
539
|
+
"name": "KPI Mappings",
|
|
540
|
+
"check": lambda t: len(t.get("dashboard_config", {}).get("kpi_mappings", [])) > 0,
|
|
541
|
+
"recommendation": "Mapeie KPIs para visualizações no dashboard"
|
|
542
|
+
},
|
|
543
|
+
{
|
|
544
|
+
"name": "Filters Configured",
|
|
545
|
+
"check": lambda t: len(t.get("dashboard_config", {}).get("filters", [])) > 0,
|
|
546
|
+
"recommendation": "Configure filtros interativos no dashboard"
|
|
547
|
+
},
|
|
548
|
+
{
|
|
549
|
+
"name": "Access Control",
|
|
550
|
+
"check": lambda t: t.get("dashboard_config", {}).get("access_control", {}).get("enabled", False),
|
|
551
|
+
"recommendation": "Configure controle de acesso para o dashboard"
|
|
552
|
+
},
|
|
553
|
+
{
|
|
554
|
+
"name": "Alerts Configured",
|
|
555
|
+
"check": lambda t: len(t.get("dashboard_config", {}).get("alerts", [])) > 0,
|
|
556
|
+
"recommendation": "Configure alertas para KPIs críticos"
|
|
557
|
+
}
|
|
558
|
+
]
|
|
559
|
+
|
|
560
|
+
for check in dashboard_checks:
|
|
561
|
+
if check["check"](feature_content):
|
|
562
|
+
result["recommendations"].append(f"✅ {check['name']} configurado")
|
|
563
|
+
else:
|
|
564
|
+
result["recommendations"].append(f"⚠️ {check['recommendation']}")
|
|
565
|
+
|
|
566
|
+
# Simular métricas de dashboard
|
|
567
|
+
result["metrics"] = {
|
|
568
|
+
"expected_load_time": "< 5 segundos",
|
|
569
|
+
"expected_concurrent_users": "> 50",
|
|
570
|
+
"expected_refresh_rate": "Real-time para KPIs críticos",
|
|
571
|
+
"expected_interactive_response": "< 1 segundo"
|
|
572
|
+
}
|
|
573
|
+
|
|
574
|
+
# Calcular score de dashboard
|
|
575
|
+
total_checks = len(dashboard_checks)
|
|
576
|
+
configured_checks = sum([check["check"](feature_content) for check in dashboard_checks])
|
|
577
|
+
result["score"] = int((configured_checks / total_checks) * 100) if total_checks > 0 else 0
|
|
578
|
+
|
|
579
|
+
return result
|
|
580
|
+
|
|
581
|
+
|
|
582
|
+
# FUNÇÕES AUXILIARES
|
|
583
|
+
|
|
584
|
+
def get_nested_analytics_value(data: dict, path: str) -> any:
|
|
585
|
+
"""
|
|
586
|
+
Obtém valor aninhado de dicionário usando path notation
|
|
587
|
+
|
|
588
|
+
Args:
|
|
589
|
+
data: Dicionário de dados
|
|
590
|
+
path: Path no formato "level1.level2.level3"
|
|
591
|
+
|
|
592
|
+
Returns:
|
|
593
|
+
any: Valor encontrado ou None
|
|
594
|
+
"""
|
|
595
|
+
keys = path.split('.')
|
|
596
|
+
current = data
|
|
597
|
+
|
|
598
|
+
for key in keys:
|
|
599
|
+
if isinstance(current, dict) and key in current:
|
|
600
|
+
current = current[key]
|
|
601
|
+
else:
|
|
602
|
+
return None
|
|
603
|
+
|
|
604
|
+
return current
|
|
605
|
+
|
|
606
|
+
|
|
607
|
+
def calculate_analytics_final_score(*validations: dict) -> int:
|
|
608
|
+
"""
|
|
609
|
+
Calcula score final baseado em todas as validações
|
|
610
|
+
|
|
611
|
+
Args:
|
|
612
|
+
*validations: Resultados das validações
|
|
613
|
+
|
|
614
|
+
Returns:
|
|
615
|
+
int: Score final 0-100
|
|
616
|
+
"""
|
|
617
|
+
total_score = 0
|
|
618
|
+
total_weight = 0
|
|
619
|
+
|
|
620
|
+
weights = {
|
|
621
|
+
"structure": 20,
|
|
622
|
+
"content": 25,
|
|
623
|
+
"logic": 25,
|
|
624
|
+
"data_quality": 15,
|
|
625
|
+
"pipeline": 10,
|
|
626
|
+
"dashboard": 5
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
validation_types = ["structure", "content", "logic", "data_quality", "pipeline", "dashboard"]
|
|
630
|
+
|
|
631
|
+
for i, validation in enumerate(validations):
|
|
632
|
+
if validation and "score" in validation:
|
|
633
|
+
weight = weights.get(validation_types[i], 10)
|
|
634
|
+
total_score += validation["score"] * weight
|
|
635
|
+
total_weight += weight
|
|
636
|
+
|
|
637
|
+
return int(total_score / total_weight) if total_weight > 0 else 0
|
|
638
|
+
|
|
639
|
+
|
|
640
|
+
def generate_analytics_issues(*validations: dict) -> list[dict]:
|
|
641
|
+
"""
|
|
642
|
+
Gera lista consolidada de issues
|
|
643
|
+
|
|
644
|
+
Args:
|
|
645
|
+
*validations: Resultados das validações
|
|
646
|
+
|
|
647
|
+
Returns:
|
|
648
|
+
list[dict]: Lista de issues
|
|
649
|
+
"""
|
|
650
|
+
all_issues = []
|
|
651
|
+
|
|
652
|
+
for validation in validations:
|
|
653
|
+
if validation:
|
|
654
|
+
if "errors" in validation:
|
|
655
|
+
for error in validation["errors"]:
|
|
656
|
+
all_issues.append({
|
|
657
|
+
"type": "error",
|
|
658
|
+
"description": error,
|
|
659
|
+
"severity": "high"
|
|
660
|
+
})
|
|
661
|
+
|
|
662
|
+
if "issues" in validation:
|
|
663
|
+
all_issues.extend(validation["issues"])
|
|
664
|
+
|
|
665
|
+
return all_issues
|
|
666
|
+
|
|
667
|
+
|
|
668
|
+
def generate_analytics_recommendations(feature_content: dict, score: int, issues: list[dict]) -> list[str]:
|
|
669
|
+
"""
|
|
670
|
+
Gera recomendações baseadas no template e issues
|
|
671
|
+
|
|
672
|
+
Args:
|
|
673
|
+
feature_content: Conteúdo do template
|
|
674
|
+
score: Score final
|
|
675
|
+
issues: Issues encontrados
|
|
676
|
+
|
|
677
|
+
Returns:
|
|
678
|
+
list[str]: Lista de recomendações
|
|
679
|
+
"""
|
|
680
|
+
recommendations = []
|
|
681
|
+
|
|
682
|
+
# Recomendações baseadas no score
|
|
683
|
+
if score < 60:
|
|
684
|
+
recommendations.append("⚠️ Score baixo (< 60). Reconfiguração obrigatória recomendada.")
|
|
685
|
+
elif score < 80:
|
|
686
|
+
recommendations.append("⚠️ Score médio (60-79). Revisar e corrigir issues críticos.")
|
|
687
|
+
else:
|
|
688
|
+
recommendations.append("✅ Score bom (≥ 80). Configuração aprovada.")
|
|
689
|
+
|
|
690
|
+
# Recomendações baseadas em issues
|
|
691
|
+
for issue in issues:
|
|
692
|
+
if issue["severity"] == "high":
|
|
693
|
+
recommendations.append(f"🔴 CRÍTICO: {issue['description']}")
|
|
694
|
+
|
|
695
|
+
# Recomendações específicas
|
|
696
|
+
if not feature_content.get("data_sources"):
|
|
697
|
+
recommendations.append("🔗 Mapeie todas as fontes de dados disponíveis")
|
|
698
|
+
|
|
699
|
+
if not feature_content.get("kpi_definitions"):
|
|
700
|
+
recommendations.append("📊 Defina KPIs claros e mensuráveis")
|
|
701
|
+
|
|
702
|
+
if not feature_content.get("pipeline_config"):
|
|
703
|
+
recommendations.append("🔄 Implemente pipeline ETL/ELT completo")
|
|
704
|
+
|
|
705
|
+
if not feature_content.get("dashboard_config"):
|
|
706
|
+
recommendations.append("📈 Configure dashboards interativos")
|
|
707
|
+
|
|
708
|
+
return recommendations
|
|
709
|
+
|
|
710
|
+
|
|
711
|
+
def determine_analytics_proceed_status(score: int, validation_level: str, issues: list[dict]) -> bool:
|
|
712
|
+
"""
|
|
713
|
+
Determina se pode prosseguir baseado no score e nível de validação
|
|
714
|
+
|
|
715
|
+
Args:
|
|
716
|
+
score: Score final
|
|
717
|
+
validation_level: Nível de validação (basic|complete|strict)
|
|
718
|
+
issues: Issues encontrados
|
|
719
|
+
|
|
720
|
+
Returns:
|
|
721
|
+
bool: Pode prosseguir
|
|
722
|
+
"""
|
|
723
|
+
# Thresholds por nível
|
|
724
|
+
thresholds = {
|
|
725
|
+
"basic": 60,
|
|
726
|
+
"complete": 80,
|
|
727
|
+
"strict": 90
|
|
728
|
+
}
|
|
729
|
+
|
|
730
|
+
threshold = thresholds.get(validation_level, 80)
|
|
731
|
+
|
|
732
|
+
# Verificar score mínimo
|
|
733
|
+
if score < threshold:
|
|
734
|
+
return False
|
|
735
|
+
|
|
736
|
+
# Verificar issues críticos
|
|
737
|
+
critical_issues = [issue for issue in issues if issue.get("severity") == "high"]
|
|
738
|
+
if critical_issues and validation_level == "strict":
|
|
739
|
+
return False
|
|
740
|
+
|
|
741
|
+
return True
|
|
742
|
+
|
|
743
|
+
|
|
744
|
+
# EXEMPLO DE USO
|
|
745
|
+
|
|
746
|
+
if __name__ == "__main__":
|
|
747
|
+
"""
|
|
748
|
+
Exemplo de como a função seria chamada no MCP:
|
|
749
|
+
|
|
750
|
+
result = await validate_analytics_quality({
|
|
751
|
+
"pipeline_path": "analytics/dashboard-analytics/",
|
|
752
|
+
"feature_content": feature_json,
|
|
753
|
+
"validation_level": "complete",
|
|
754
|
+
"data_quality_checks": True,
|
|
755
|
+
"pipeline_tests": True,
|
|
756
|
+
"dashboard_validation": True,
|
|
757
|
+
"project_context": {
|
|
758
|
+
"industry": "e-commerce",
|
|
759
|
+
"data_volume": "high",
|
|
760
|
+
"real_time_requirements": True
|
|
761
|
+
}
|
|
762
|
+
})
|
|
763
|
+
|
|
764
|
+
print(f"Validation Success: {result['success']}")
|
|
765
|
+
print(f"Final Score: {result['score']}")
|
|
766
|
+
print(f"Can Proceed: {result['can_proceed']}")
|
|
767
|
+
print(f"Issues Found: {len(result['issues'])}")
|
|
768
|
+
"""
|
|
769
|
+
|
|
770
|
+
print("Esta é uma função de referência para implementação no MCP.")
|
|
771
|
+
print("NÃO EXECUTÁVEL LOCALMENTE.")
|
|
772
|
+
print("Consulte MCP_INTEGRATION.md para detalhes de implementação.")
|