@maestro-ai/mcp-server 1.2.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/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/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/stdio.js +184 -0
- 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.map +1 -1
- package/dist/tools/iniciar-projeto.js +27 -1
- 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/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
package/dist/content/skills/specialist-dados-analytics-ia/resources/reference/analytics-guide.md
ADDED
|
@@ -0,0 +1,1111 @@
|
|
|
1
|
+
# 📚 Guia Técnico Completo - Dados e Analytics
|
|
2
|
+
|
|
3
|
+
## Visão Geral
|
|
4
|
+
|
|
5
|
+
Guia completo de boas práticas, padrões e implementações para engenharia de dados, analytics e business intelligence, focado em performance, escalabilidade e governança.
|
|
6
|
+
|
|
7
|
+
## 🏗️ Fundamentos de Analytics
|
|
8
|
+
|
|
9
|
+
### Princípios Core
|
|
10
|
+
|
|
11
|
+
#### 1. Data-Driven Decision Making
|
|
12
|
+
- **Definição**: Tomada de decisão baseada em dados e evidências
|
|
13
|
+
- **Benefícios**: Redução de viés, decisões mais objetivas
|
|
14
|
+
- **Implementação**: Dashboards, KPIs, relatórios automatizados
|
|
15
|
+
|
|
16
|
+
#### 2. Data Quality First
|
|
17
|
+
- **Definição**: Qualidade dos dados é prioridade sobre quantidade
|
|
18
|
+
- **Benefícios**: Confiança nos insights, análises mais precisas
|
|
19
|
+
- **Implementação**: Validação automatizada, testes de qualidade
|
|
20
|
+
|
|
21
|
+
#### 3. Self-Service Analytics
|
|
22
|
+
- **Definição**: Usuários podem criar suas próprias análises
|
|
23
|
+
- **Benefícios**: Redução de dependência de TI, agilidade
|
|
24
|
+
- **Implementação**: Ferramentas de BI self-service
|
|
25
|
+
|
|
26
|
+
#### 4. Real-Time Analytics
|
|
27
|
+
- **Definição**: Análises em tempo real para ações imediatas
|
|
28
|
+
- **Benefícios**: Resposta rápida a eventos, detecção de anomalias
|
|
29
|
+
- **Implementação**: Streaming, processamento contínuo
|
|
30
|
+
|
|
31
|
+
## 🛠️ Stack Tecnológico
|
|
32
|
+
|
|
33
|
+
### Orquestração de Pipelines
|
|
34
|
+
|
|
35
|
+
#### Apache Airflow
|
|
36
|
+
```yaml
|
|
37
|
+
# Características
|
|
38
|
+
- Platform: Orquestração de workflows
|
|
39
|
+
- Language: Python
|
|
40
|
+
- Interface: Web UI, CLI, REST API
|
|
41
|
+
- Execution: Local, distributed (Celery, Kubernetes)
|
|
42
|
+
|
|
43
|
+
# Considerações DevOps
|
|
44
|
+
- Scheduler: Cron, event-based
|
|
45
|
+
- Executors: Local, Kubernetes, ECS, GKE
|
|
46
|
+
- Storage: Metadata database (PostgreSQL, MySQL)
|
|
47
|
+
- Monitoring: Logs, metrics, webserver
|
|
48
|
+
|
|
49
|
+
# Exemplo de DAG
|
|
50
|
+
from airflow import DAG
|
|
51
|
+
from airflow.operators.python import PythonOperator
|
|
52
|
+
from airflow.providers.postgres.operators.postgres import PostgresOperator
|
|
53
|
+
from datetime import datetime, timedelta
|
|
54
|
+
|
|
55
|
+
default_args = {
|
|
56
|
+
'owner': 'analytics-team',
|
|
57
|
+
'depends_on_past': False,
|
|
58
|
+
'start_date': datetime(2024, 1, 1),
|
|
59
|
+
'retries': 2,
|
|
60
|
+
'retry_delay': timedelta(minutes=5),
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
dag = DAG(
|
|
64
|
+
'daily_analytics_pipeline',
|
|
65
|
+
default_args=default_args,
|
|
66
|
+
description='Pipeline diário de analytics',
|
|
67
|
+
schedule_interval='@daily',
|
|
68
|
+
catchup=False,
|
|
69
|
+
)
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
#### Apache Spark
|
|
73
|
+
```yaml
|
|
74
|
+
# Características
|
|
75
|
+
- Platform: Processamento distribuído
|
|
76
|
+
- Language: Scala, Python, R, SQL
|
|
77
|
+
- Interface: Spark Shell, Livy, Jupyter
|
|
78
|
+
- Execution: Cluster (YARN, Mesos, Kubernetes)
|
|
79
|
+
|
|
80
|
+
# Considerações de Performance
|
|
81
|
+
- Memory Management: Executor memory, driver memory
|
|
82
|
+
- Partitioning: Data partitioning strategies
|
|
83
|
+
- Caching: RDD cache, DataFrame cache
|
|
84
|
+
- Serialization: Kryo, Java serialization
|
|
85
|
+
|
|
86
|
+
# Exemplo de Streaming
|
|
87
|
+
from pyspark.sql import SparkSession
|
|
88
|
+
from pyspark.sql.functions import col, window
|
|
89
|
+
|
|
90
|
+
spark = SparkSession.builder \
|
|
91
|
+
.appName("streaming_analytics") \
|
|
92
|
+
.getOrCreate()
|
|
93
|
+
|
|
94
|
+
# Leitura de streaming
|
|
95
|
+
streaming_df = spark \
|
|
96
|
+
.readStream \
|
|
97
|
+
.format("kafka") \
|
|
98
|
+
.option("kafka.bootstrap.servers", "kafka:9092") \
|
|
99
|
+
.option("subscribe", "events") \
|
|
100
|
+
.load()
|
|
101
|
+
|
|
102
|
+
# Processamento em janela
|
|
103
|
+
windowed_df = streaming_df \
|
|
104
|
+
.withWatermark("timestamp", "1 minute") \
|
|
105
|
+
.groupBy(
|
|
106
|
+
window("timestamp", "1 minute"),
|
|
107
|
+
col("event_type")
|
|
108
|
+
) \
|
|
109
|
+
.agg(
|
|
110
|
+
count("*").alias("event_count"),
|
|
111
|
+
sum(col("value")).alias("total_value")
|
|
112
|
+
)
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
#### dbt (Data Build Tool)
|
|
116
|
+
```yaml
|
|
117
|
+
# Características
|
|
118
|
+
- Platform: Transformação de dados SQL-first
|
|
119
|
+
- Language: SQL (Jinja2)
|
|
120
|
+
- Interface: CLI, Cloud, IDE
|
|
121
|
+
- Execution: Target warehouse (Snowflake, BigQuery, Redshift)
|
|
122
|
+
|
|
123
|
+
# Estrutura de Projeto
|
|
124
|
+
analytics/
|
|
125
|
+
├── models/
|
|
126
|
+
│ ├── staging/ # Raw data
|
|
127
|
+
│ ├── intermediate/ # Cleaned data
|
|
128
|
+
│ └── marts/ # Business logic
|
|
129
|
+
├── tests/
|
|
130
|
+
│ ├── unit/ # Unit tests
|
|
131
|
+
│ ├── integration/ # Integration tests
|
|
132
|
+
│ └── snapshot/ # Snapshot tests
|
|
133
|
+
├── seeds/ # Test data
|
|
134
|
+
├── macros/ # Reusable SQL
|
|
135
|
+
└── dbt_project.yml # Configuration
|
|
136
|
+
|
|
137
|
+
# Exemplo de Modelo
|
|
138
|
+
-- models/marts/fct_orders.sql
|
|
139
|
+
{{ config(materialized='incremental', unique_key='order_id') }}
|
|
140
|
+
|
|
141
|
+
SELECT
|
|
142
|
+
o.order_id,
|
|
143
|
+
o.customer_id,
|
|
144
|
+
o.order_date,
|
|
145
|
+
o.total_amount,
|
|
146
|
+
c.name as customer_name,
|
|
147
|
+
c.segment as customer_segment
|
|
148
|
+
FROM {{ ref('stg_orders') }} o
|
|
149
|
+
LEFT JOIN {{ ref('dim_customers') }} c ON o.customer_id = c.customer_id
|
|
150
|
+
|
|
151
|
+
{% if is_incremental() %}
|
|
152
|
+
WHERE o.order_date > (SELECT MAX(order_date) FROM {{ this }})
|
|
153
|
+
{% endif %}
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### Armazenamento de Dados
|
|
157
|
+
|
|
158
|
+
#### Data Warehouses
|
|
159
|
+
|
|
160
|
+
##### Google BigQuery
|
|
161
|
+
```sql
|
|
162
|
+
-- Características
|
|
163
|
+
- Platform: Serverless data warehouse
|
|
164
|
+
- Language: Standard SQL, Legacy SQL
|
|
165
|
+
- Interface: Web UI, CLI, API, Client Libraries
|
|
166
|
+
- Storage: Columnar, partitioned tables
|
|
167
|
+
|
|
168
|
+
-- Exemplo de Criação de Tabela
|
|
169
|
+
CREATE TABLE analytics.fact_orders (
|
|
170
|
+
order_id STRING,
|
|
171
|
+
customer_id STRING,
|
|
172
|
+
order_date DATE,
|
|
173
|
+
total_amount NUMERIC,
|
|
174
|
+
status STRING,
|
|
175
|
+
created_at TIMESTAMP
|
|
176
|
+
)
|
|
177
|
+
PARTITION BY RANGE(order_date)
|
|
178
|
+
CLUSTER BY customer_id
|
|
179
|
+
OPTIONS(
|
|
180
|
+
description="Tabela de fatos de pedidos"
|
|
181
|
+
);
|
|
182
|
+
|
|
183
|
+
-- Exemplo de Query Otimizada
|
|
184
|
+
SELECT
|
|
185
|
+
DATE_TRUNC(order_date, MONTH) as mes,
|
|
186
|
+
customer_id,
|
|
187
|
+
COUNT(*) as total_pedidos,
|
|
188
|
+
SUM(total_amount) as receita_total
|
|
189
|
+
FROM analytics.fact_orders
|
|
190
|
+
WHERE order_date >= DATE_SUB(CURRENT_DATE(), INTERVAL '12 months')
|
|
191
|
+
GROUP BY 1, 2
|
|
192
|
+
ORDER BY mes DESC;
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
##### Amazon Redshift
|
|
196
|
+
```sql
|
|
197
|
+
-- Características
|
|
198
|
+
- Platform: Data warehouse como serviço
|
|
199
|
+
- Language: PostgreSQL
|
|
200
|
+
- Interface: SQL, AWS Management Console
|
|
201
|
+
- Storage: Columnar, compressed storage
|
|
202
|
+
|
|
203
|
+
-- Exemplo de Design Schema
|
|
204
|
+
CREATE TABLE analytics.fact_sales (
|
|
205
|
+
sales_id BIGINT IDENTITY(1,1),
|
|
206
|
+
product_id INTEGER NOT NULL,
|
|
207
|
+
store_id INTEGER NOT NULL,
|
|
208
|
+
sales_date DATE NOT NULL,
|
|
209
|
+
sales_amount DECIMAL(10,2) NOT NULL,
|
|
210
|
+
quantity INTEGER NOT NULL,
|
|
211
|
+
created_at TIMESTAMP DEFAULT SYSTIMESTAMP
|
|
212
|
+
)
|
|
213
|
+
DISTSTYLE KEY(sales_date)
|
|
214
|
+
SORTKEY (sales_date, product_id);
|
|
215
|
+
|
|
216
|
+
-- Exemplo de Inserção Otimizada
|
|
217
|
+
INSERT INTO analytics.fact_sales (
|
|
218
|
+
product_id, store_id, sales_date, sales_amount, quantity
|
|
219
|
+
)
|
|
220
|
+
VALUES
|
|
221
|
+
(1001, 501, '2024-01-15', 150.00, 3),
|
|
222
|
+
(1002, 501, '2024-01-15', 75.50, 1);
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
##### Snowflake
|
|
226
|
+
```sql
|
|
227
|
+
-- Características
|
|
228
|
+
- Platform: Cloud data warehouse
|
|
229
|
+
- Language: Standard SQL, JavaScript
|
|
230
|
+
- Interface: Web UI, SnowSQL, Connectors
|
|
231
|
+
- Storage: Columnar, automatic clustering
|
|
232
|
+
|
|
233
|
+
-- Exemplo de Stage
|
|
234
|
+
CREATE OR REPLACE STAGE analytics.stg_orders AS (
|
|
235
|
+
SELECT
|
|
236
|
+
order_id,
|
|
237
|
+
customer_id,
|
|
238
|
+
order_date,
|
|
239
|
+
total_amount,
|
|
240
|
+
status,
|
|
241
|
+
created_at
|
|
242
|
+
FROM raw_data.orders_raw
|
|
243
|
+
);
|
|
244
|
+
|
|
245
|
+
-- Exemplo de Materialized View
|
|
246
|
+
CREATE MATERIALIZED VIEW analytics.mv_daily_sales AS
|
|
247
|
+
SELECT
|
|
248
|
+
DATE_TRUNC(order_date, DAY) as sales_date,
|
|
249
|
+
COUNT(DISTINCT customer_id) as unique_customers,
|
|
250
|
+
COUNT(*) as total_orders,
|
|
251
|
+
SUM(total_amount) as daily_revenue
|
|
252
|
+
FROM analytics.fact_orders
|
|
253
|
+
GROUP BY DATE_TRUNC(order_date, DAY)
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
### Data Lakes
|
|
257
|
+
|
|
258
|
+
#### Amazon S3
|
|
259
|
+
```yaml
|
|
260
|
+
# Características
|
|
261
|
+
- Platform: Object storage
|
|
262
|
+
- Interface: REST API, CLI, SDKs
|
|
263
|
+
- Storage: Objects, buckets
|
|
264
|
+
- Pricing: By storage used, requests
|
|
265
|
+
|
|
266
|
+
# Estrutura de Data Lake
|
|
267
|
+
s3://analytics-data-lake/
|
|
268
|
+
├── raw/ # Dados brutos
|
|
269
|
+
│ ├── events/
|
|
270
|
+
│ │ ├── 2024/
|
|
271
|
+
│ │ │ ├── 01/
|
|
272
|
+
│ │ │ └── 15/
|
|
273
|
+
│ │ └── 02/
|
|
274
|
+
│ ├── databases/
|
|
275
|
+
│ │ ├── postgresql/
|
|
276
|
+
│ │ └── mysql/
|
|
277
|
+
│ └── processed/ # Dados processados
|
|
278
|
+
│ ├── parquet/
|
|
279
|
+
│ ├── delta/
|
|
280
|
+
│ └── json/
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
#### Google Cloud Storage
|
|
284
|
+
```yaml
|
|
285
|
+
# Características
|
|
286
|
+
- Platform: Object storage
|
|
287
|
+
- Interface: REST API, CLI, Client Libraries
|
|
288
|
+
- Storage: Objects, buckets
|
|
289
|
+
- Pricing: By storage used, operations
|
|
290
|
+
|
|
291
|
+
# Exemplo de Organização
|
|
292
|
+
gs://analytics-data-lake/
|
|
293
|
+
├── landing/ # Dados brutos
|
|
294
|
+
├── bronze/ # Processado básico
|
|
295
|
+
├── silver/ # Limpo e validado
|
|
296
|
+
├── gold/ # Otimizado para queries
|
|
297
|
+
└── archive/ # Arquivados
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
### Visualização e BI
|
|
301
|
+
|
|
302
|
+
#### Looker
|
|
303
|
+
```yaml
|
|
304
|
+
# Características
|
|
305
|
+
- Platform: Business Intelligence
|
|
306
|
+
- Language: LookML (SQL-like)
|
|
307
|
+
- Interface: Web UI, API, Embed
|
|
308
|
+
- Integration: 50+ data sources
|
|
309
|
+
|
|
310
|
+
# Exemplo de Look
|
|
311
|
+
view: analytics.daily_sales {
|
|
312
|
+
sql_table_name: analytics.fact_orders ;;
|
|
313
|
+
dimension_group: analytics.customer_segment {
|
|
314
|
+
dimension: customer.segment
|
|
315
|
+
measure: orders.count
|
|
316
|
+
measure: revenue_total
|
|
317
|
+
}
|
|
318
|
+
dimension_group: analytics.time_period {
|
|
319
|
+
dimension: orders.order_date
|
|
320
|
+
timeframes: [day, week, month, quarter, year]
|
|
321
|
+
measure: orders.count
|
|
322
|
+
measure: revenue_total
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
#### Metabase
|
|
328
|
+
```yaml
|
|
329
|
+
# Carferências
|
|
330
|
+
- Platform: Open-source BI
|
|
331
|
+
- Language: SQL, GUI
|
|
332
|
+
- Interface: Web UI, API
|
|
333
|
+
- Integration: 25+ data sources
|
|
334
|
+
|
|
335
|
+
# Exemplo de Questão
|
|
336
|
+
SELECT
|
|
337
|
+
DATE_TRUNC(order_date, 'month') as "Mês",
|
|
338
|
+
COUNT(DISTINCT customer_id) as "Clientes Únicos",
|
|
339
|
+
COUNT(*) as "Total de Pedidos",
|
|
340
|
+
SUM(total_amount) as "Receita Total"
|
|
341
|
+
FROM analytics.fact_orders
|
|
342
|
+
GROUP BY 1
|
|
343
|
+
ORDER BY "Mês"
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
#### Tableau
|
|
347
|
+
```yaml
|
|
348
|
+
# Características
|
|
349
|
+
- Platform: Enterprise BI
|
|
350
|
+
- Language: VizQL (drag-and-drop)
|
|
351
|
+
- Interface: Desktop, Server, Online
|
|
352
|
+
- Integration: 80+ data sources
|
|
353
|
+
|
|
354
|
+
# Exemplo de Dashboard
|
|
355
|
+
- Fonte: analytics.fact_orders
|
|
356
|
+
- Visualização: Bar chart, line chart, map
|
|
357
|
+
- Filtros: Date range, customer segment, product category
|
|
358
|
+
- Alertas: Threshold-based, data-driven
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
---
|
|
362
|
+
|
|
363
|
+
## 🔄 Engenharia de Dados
|
|
364
|
+
|
|
365
|
+
### Pipeline ETL/ELT
|
|
366
|
+
|
|
367
|
+
#### Arquitetura Padrão
|
|
368
|
+
```
|
|
369
|
+
Fontes → Extração → Transformação → Carga → Analytics
|
|
370
|
+
```
|
|
371
|
+
|
|
372
|
+
#### Extração (Extract)
|
|
373
|
+
```python
|
|
374
|
+
# Extração de Banco de Dados
|
|
375
|
+
import psycopg2
|
|
376
|
+
import pandas as pd
|
|
377
|
+
|
|
378
|
+
def extract_from_postgres(query, connection_params):
|
|
379
|
+
"""Extrai dados do PostgreSQL"""
|
|
380
|
+
conn = psycopg2.connect(**connection_params)
|
|
381
|
+
return pd.read_sql(query, conn)
|
|
382
|
+
|
|
383
|
+
# Extração de API
|
|
384
|
+
import requests
|
|
385
|
+
import json
|
|
386
|
+
|
|
387
|
+
def extract_from_api(url, headers=None, params=None):
|
|
388
|
+
"""Extrai dados de API REST"""
|
|
389
|
+
response = requests.get(url, headers=headers, params=params)
|
|
390
|
+
response.raise_for_status()
|
|
391
|
+
return response.json()
|
|
392
|
+
```
|
|
393
|
+
|
|
394
|
+
#### Transformação (Transform)
|
|
395
|
+
```python
|
|
396
|
+
# Limpeza de Dados
|
|
397
|
+
import pandas as pd
|
|
398
|
+
|
|
399
|
+
def clean_data(df):
|
|
400
|
+
"""Limpa e padroniza dados"""
|
|
401
|
+
# Remover duplicatas
|
|
402
|
+
df = df.drop_duplicates()
|
|
403
|
+
|
|
404
|
+
# Padronizar datas
|
|
405
|
+
df['email'] = df['email'].str.lower().str.strip()
|
|
406
|
+
df['data'] = pd.to_datetime(df['data'])
|
|
407
|
+
|
|
408
|
+
# Remover nulos
|
|
409
|
+
df = df.dropna(subset=['critical_field'])
|
|
410
|
+
|
|
411
|
+
return df
|
|
412
|
+
|
|
413
|
+
# Enriquecimento de Dados
|
|
414
|
+
def enrich_data(df, reference_data):
|
|
415
|
+
"""Enriquece dados com dados de referência"""
|
|
416
|
+
return df.merge(reference_data, on='key', how='left')
|
|
417
|
+
```
|
|
418
|
+
|
|
419
|
+
#### Carga (Load)
|
|
420
|
+
```python
|
|
421
|
+
# Carga em Data Warehouse
|
|
422
|
+
from sqlalchemy import create_engine
|
|
423
|
+
import pandas as pd
|
|
424
|
+
|
|
425
|
+
def load_to_bigquery(df, table_name, project_id):
|
|
426
|
+
"""Carrega DataFrame no BigQuery"""
|
|
427
|
+
client = bigquery.Client(project=project_id)
|
|
428
|
+
job = client.load_table_from_dataframe(df, table_name)
|
|
429
|
+
job.result()
|
|
430
|
+
```
|
|
431
|
+
|
|
432
|
+
### Testes de Qualidade de Dados
|
|
433
|
+
|
|
434
|
+
#### Great Expectations
|
|
435
|
+
```python
|
|
436
|
+
import great_expectations as gx
|
|
437
|
+
|
|
438
|
+
# Definição de Expectativa
|
|
439
|
+
expectation = gx.ExpectationSuite(
|
|
440
|
+
"analytics_quality_checks"
|
|
441
|
+
)
|
|
442
|
+
|
|
443
|
+
# Teste de Completude
|
|
444
|
+
expectation.expect_table_row_count_to_be_between(
|
|
445
|
+
"analytics.fact_orders",
|
|
446
|
+
min_value=1000,
|
|
447
|
+
max_value=1000000
|
|
448
|
+
)
|
|
449
|
+
|
|
450
|
+
# Teste de Unicidade
|
|
451
|
+
expectation.expect_column_values_to_be_unique(
|
|
452
|
+
"analytics.fact_orders",
|
|
453
|
+
"order_id"
|
|
454
|
+
)
|
|
455
|
+
|
|
456
|
+
# Teste de Formato
|
|
457
|
+
expectation.expect_column_values_to_match_regex(
|
|
458
|
+
"analytics.fact_orders",
|
|
459
|
+
"email",
|
|
460
|
+
r"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$"
|
|
461
|
+
)
|
|
462
|
+
```
|
|
463
|
+
|
|
464
|
+
#### dbt Tests
|
|
465
|
+
```sql
|
|
466
|
+
-- models/marts/fct_orders.yml
|
|
467
|
+
version: 2
|
|
468
|
+
models:
|
|
469
|
+
- name: fct_orders
|
|
470
|
+
description: Tabela de fatos de pedidos
|
|
471
|
+
columns:
|
|
472
|
+
- name: order_id
|
|
473
|
+
tests:
|
|
474
|
+
- unique
|
|
475
|
+
- not_null
|
|
476
|
+
- name: customer_id
|
|
477
|
+
tests:
|
|
478
|
+
- not_null
|
|
479
|
+
- relationships:
|
|
480
|
+
to: ref('dim_customers')
|
|
481
|
+
field: customer_id
|
|
482
|
+
- name: total_amount
|
|
483
|
+
tests:
|
|
484
|
+
- not_null
|
|
485
|
+
- between:
|
|
486
|
+
min: 0
|
|
487
|
+
max: 10000
|
|
488
|
+
```
|
|
489
|
+
|
|
490
|
+
---
|
|
491
|
+
|
|
492
|
+
## 📊 Modelagem Dimensional
|
|
493
|
+
|
|
494
|
+
### Star Schema
|
|
495
|
+
|
|
496
|
+
#### Componentes
|
|
497
|
+
```
|
|
498
|
+
+-------------+
|
|
499
|
+
| FATO_ |
|
|
500
|
+
| VENDAS_ |
|
|
501
|
+
+-------------+
|
|
502
|
+
|
|
|
503
|
+
+--------+--------+
|
|
504
|
+
| | |
|
|
505
|
+
+---+---+---+---+
|
|
506
|
+
| DIM_ | | DIM_ | | DIM_ |
|
|
507
|
+
| DATA | | PROD | | USER |
|
|
508
|
+
+---+---+---+---+
|
|
509
|
+
```
|
|
510
|
+
|
|
511
|
+
#### Tabelas de Fato
|
|
512
|
+
```sql
|
|
513
|
+
-- Tabela de Fato de Vendas
|
|
514
|
+
CREATE TABLE fact_sales (
|
|
515
|
+
sales_id BIGINT PRIMARY KEY,
|
|
516
|
+
date_id INTEGER REFERENCES dim_date(id),
|
|
517
|
+
product_id INTEGER REFERENCES dim_product(id),
|
|
518
|
+
customer_id INTEGER REFERENCES dim_customer(id),
|
|
519
|
+
store_id INTEGER REFERENCES dim_store(id),
|
|
520
|
+
sales_amount DECIMAL(15,2),
|
|
521
|
+
quantity INTEGER,
|
|
522
|
+
discount_amount DECIMAL(10,2),
|
|
523
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
524
|
+
) PARTITION BY RANGE (created_at);
|
|
525
|
+
```
|
|
526
|
+
|
|
527
|
+
#### Dimensões
|
|
528
|
+
|
|
529
|
+
##### Dimensão de Data
|
|
530
|
+
```sql
|
|
531
|
+
CREATE TABLE dim_date (
|
|
532
|
+
id INTEGER PRIMARY KEY,
|
|
533
|
+
date DATE UNIQUE NOT NULL,
|
|
534
|
+
day INTEGER NOT NULL,
|
|
535
|
+
month INTEGER NOT NULL,
|
|
536
|
+
year INTEGER NOT NULL,
|
|
537
|
+
quarter INTEGER NOT NULL,
|
|
538
|
+
day_of_week INTEGER NOT NULL,
|
|
539
|
+
day_name VARCHAR(20) NOT NULL,
|
|
540
|
+
is_weekend BOOLEAN NOT NULL,
|
|
541
|
+
is_holiday BOOLEAN NOT NULL
|
|
542
|
+
);
|
|
543
|
+
```
|
|
544
|
+
|
|
545
|
+
##### Dimensão de Produto
|
|
546
|
+
```sql
|
|
547
|
+
CREATE TABLE dim_product (
|
|
548
|
+
id INTEGER PRIMARY KEY,
|
|
549
|
+
sku VARCHAR(100) UNIQUE NOT NULL,
|
|
550
|
+
name VARCHAR(255) NOT NULL,
|
|
551
|
+
category VARCHAR(100) NOT NULL,
|
|
552
|
+
subcategory VARCHAR(100),
|
|
553
|
+
brand VARCHAR(100),
|
|
554
|
+
price DECIMAL(10,2),
|
|
555
|
+
cost DECIMAL(10,2),
|
|
556
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
557
|
+
);
|
|
558
|
+
```
|
|
559
|
+
|
|
560
|
+
##### Dimensão de Cliente
|
|
561
|
+
```sql
|
|
562
|
+
CREATE TABLE dim_customer (
|
|
563
|
+
id INTEGER PRIMARY KEY,
|
|
564
|
+
customer_id_original BIGINT UNIQUE NOT NULL,
|
|
565
|
+
email VARCHAR(255),
|
|
566
|
+
name VARCHAR(255),
|
|
567
|
+
phone VARCHAR(50),
|
|
568
|
+
city VARCHAR(100),
|
|
569
|
+
state VARCHAR(50),
|
|
570
|
+
country VARCHAR(50),
|
|
571
|
+
segment VARCHAR(50),
|
|
572
|
+
registration_date DATE,
|
|
573
|
+
first_purchase_date DATE,
|
|
574
|
+
last_purchase_date DATE,
|
|
575
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
576
|
+
);
|
|
577
|
+
```
|
|
578
|
+
|
|
579
|
+
### Slowly Changing Dimensions (SCD)
|
|
580
|
+
|
|
581
|
+
#### SCD Type 2 (Add New Rows)
|
|
582
|
+
```sql
|
|
583
|
+
-- Dimensão de Cliente com SCD Type 2
|
|
584
|
+
CREATE TABLE dim_customer_scd_type2 (
|
|
585
|
+
id INTEGER PRIMARY KEY,
|
|
586
|
+
customer_id_original BIGINT NOT NULL,
|
|
587
|
+
email VARCHAR(255),
|
|
588
|
+
name VARCHAR(255),
|
|
589
|
+
segment VARCHAR(50),
|
|
590
|
+
effective_date DATE NOT NULL,
|
|
591
|
+
end_date DATE,
|
|
592
|
+
is_current BOOLEAN DEFAULT TRUE,
|
|
593
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
594
|
+
);
|
|
595
|
+
|
|
596
|
+
-- Trigger para SCD Type 2
|
|
597
|
+
CREATE OR REPLACE TRIGGER trg_customer_scd_type2
|
|
598
|
+
AFTER UPDATE ON dim_customer
|
|
599
|
+
FOR EACH ROW
|
|
600
|
+
BEGIN
|
|
601
|
+
INSERT INTO dim_customer_scd_type2 (
|
|
602
|
+
customer_id_original,
|
|
603
|
+
email,
|
|
604
|
+
name,
|
|
605
|
+
segment,
|
|
606
|
+
CURRENT_DATE,
|
|
607
|
+
NULL,
|
|
608
|
+
FALSE
|
|
609
|
+
)
|
|
610
|
+
VALUES (
|
|
611
|
+
NEW.customer_id_original,
|
|
612
|
+
NEW.email,
|
|
613
|
+
NEW.name,
|
|
614
|
+
NEW.segment,
|
|
615
|
+
CURRENT_DATE,
|
|
616
|
+
NULL,
|
|
617
|
+
FALSE
|
|
618
|
+
);
|
|
619
|
+
END;
|
|
620
|
+
```
|
|
621
|
+
|
|
622
|
+
#### SCD Type 3 (Add New Columns)
|
|
623
|
+
```sql
|
|
624
|
+
-- Dimensão de Produto com SCD Type 3
|
|
625
|
+
ALTER TABLE dim_product ADD COLUMN price_history JSON;
|
|
626
|
+
|
|
627
|
+
-- Função para rastrear histórico
|
|
628
|
+
CREATE OR REPLACE FUNCTION get_price_history(product_id INTEGER)
|
|
629
|
+
RETURNS JSON
|
|
630
|
+
AS $$
|
|
631
|
+
DECLARE
|
|
632
|
+
history JSON;
|
|
633
|
+
BEGIN
|
|
634
|
+
SELECT json_agg(
|
|
635
|
+
json_build_object(
|
|
636
|
+
'price', price,
|
|
637
|
+
'effective_date', effective_date,
|
|
638
|
+
'end_date', end_date
|
|
639
|
+
)
|
|
640
|
+
ORDER BY effective_date DESC
|
|
641
|
+
) INTO history
|
|
642
|
+
FROM dim_product_scd_type3
|
|
643
|
+
WHERE product_id = product_id
|
|
644
|
+
GROUP BY product_id;
|
|
645
|
+
|
|
646
|
+
RETURN COALESCE(history, '[]');
|
|
647
|
+
END;
|
|
648
|
+
$$ LANGUAGE plpgsql;
|
|
649
|
+
```
|
|
650
|
+
|
|
651
|
+
---
|
|
652
|
+
|
|
653
|
+
## 🚀 Performance e Otimização
|
|
654
|
+
|
|
655
|
+
### Otimização de Queries
|
|
656
|
+
|
|
657
|
+
#### Índices e Particionamento
|
|
658
|
+
```sql
|
|
659
|
+
-- Índices para Performance
|
|
660
|
+
CREATE INDEX idx_fact_orders_date_id ON analytics.fact_orders(date_id);
|
|
661
|
+
CREATE INDEX idx_fact_orders_customer_id ON analytics.fact_orders(customer_id);
|
|
662
|
+
CREATE INDEX idx_fact_orders_product_id ON analytics.facts_orders(product_id);
|
|
663
|
+
|
|
664
|
+
-- Particionamento por Data
|
|
665
|
+
CREATE TABLE analytics.fact_orders (
|
|
666
|
+
order_id BIGINT,
|
|
667
|
+
date_id INTEGER,
|
|
668
|
+
customer_id INTEGER,
|
|
669
|
+
product_id INTEGER,
|
|
670
|
+
sales_amount DECIMAL(15,2),
|
|
671
|
+
created_at TIMESTAMP
|
|
672
|
+
) PARTITION BY RANGE (created_at)
|
|
673
|
+
CLUSTER BY customer_id;
|
|
674
|
+
```
|
|
675
|
+
|
|
676
|
+
#### Materialized Views
|
|
677
|
+
```sql
|
|
678
|
+
-- Materialized View para Performance
|
|
679
|
+
CREATE MATERIALIZED VIEW analytics.mv_daily_sales AS
|
|
680
|
+
SELECT
|
|
681
|
+
DATE_TRUNC(order_date, DAY) as sales_date,
|
|
682
|
+
COUNT(DISTINCT customer_id) as unique_customers,
|
|
683
|
+
COUNT(*) as total_orders,
|
|
684
|
+
SUM(sales_amount) as daily_revenue
|
|
685
|
+
FROM analytics.fact_orders
|
|
686
|
+
GROUP BY DATE_TRUNC(order_date, DAY)
|
|
687
|
+
CLUSTER BY sales_date;
|
|
688
|
+
|
|
689
|
+
-- Atualização Automática
|
|
690
|
+
BEGIN;
|
|
691
|
+
CREATE OR REPLACE TABLE analytics.mv_daily_sales
|
|
692
|
+
CLUSTER BY sales_date;
|
|
693
|
+
END;
|
|
694
|
+
```
|
|
695
|
+
|
|
696
|
+
#### Query Optimization
|
|
697
|
+
```sql
|
|
698
|
+
-- Evitar SELECT *
|
|
699
|
+
SELECT ONLY colunas necessárias
|
|
700
|
+
SELECT
|
|
701
|
+
customer_id,
|
|
702
|
+
order_id,
|
|
703
|
+
total_amount
|
|
704
|
+
FROM analytics.fact_orders
|
|
705
|
+
WHERE order_date >= '2024-01-01';
|
|
706
|
+
|
|
707
|
+
-- Usar filtros no WHERE
|
|
708
|
+
SELECT
|
|
709
|
+
customer_id,
|
|
710
|
+
SUM(sales_amount) as total_spent
|
|
711
|
+
FROM analytics.fact_orders
|
|
712
|
+
WHERE order_date >= '2024-01-01'
|
|
713
|
+
AND customer_id IN (1, 2, 3)
|
|
714
|
+
GROUP BY customer_id;
|
|
715
|
+
|
|
716
|
+
-- Pré-agregar filtros
|
|
717
|
+
SELECT
|
|
718
|
+
customer_id,
|
|
719
|
+
SUM(sales_amount) as total_spent
|
|
720
|
+
FROM analytics.fact_orders
|
|
721
|
+
WHERE order_date >= '2024-01-01'
|
|
722
|
+
GROUP BY customer_id
|
|
723
|
+
HAVING SUM(sales_amount) > 1000;
|
|
724
|
+
```
|
|
725
|
+
|
|
726
|
+
### Cache e Caching
|
|
727
|
+
|
|
728
|
+
#### Redis Cache
|
|
729
|
+
```python
|
|
730
|
+
import redis
|
|
731
|
+
import json
|
|
732
|
+
from datetime import timedelta
|
|
733
|
+
|
|
734
|
+
class AnalyticsCache:
|
|
735
|
+
def __init__(self, redis_host='localhost', redis_port=6379):
|
|
736
|
+
self.redis = redis.Redis(host=redis_host, port=redis_port, decode_responses=True)
|
|
737
|
+
|
|
738
|
+
def get_cached_result(self, key, ttl=3600):
|
|
739
|
+
"""Obtém resultado cacheado"""
|
|
740
|
+
result = self.redis.get(key)
|
|
741
|
+
if result:
|
|
742
|
+
return json.loads(result)
|
|
743
|
+
return None
|
|
744
|
+
|
|
745
|
+
def cache_result(self, key, data, ttl=3600):
|
|
746
|
+
"""Armazena resultado no cache"""
|
|
747
|
+
self.redis.setex(key, json.dumps(data), ex=ttl)
|
|
748
|
+
|
|
749
|
+
def invalidate_cache(self, pattern):
|
|
750
|
+
"""Invalida cache por padrão"""
|
|
751
|
+
keys = self.redis.keys(pattern)
|
|
752
|
+
if keys:
|
|
753
|
+
self.redis.delete(*keys)
|
|
754
|
+
```
|
|
755
|
+
|
|
756
|
+
#### Query Result Cache
|
|
757
|
+
```sql
|
|
758
|
+
-- Habilitar Query Result Cache no BigQuery
|
|
759
|
+
ALTER SESSION SET query_result_cache = true;
|
|
760
|
+
|
|
761
|
+
-- Exemplo de Query com Cache
|
|
762
|
+
SELECT /*+ RESULT_CACHE */
|
|
763
|
+
customer_id,
|
|
764
|
+
COUNT(*) as order_count,
|
|
765
|
+
SUM(total_amount) as total_spent
|
|
766
|
+
FROM analytics.fact_orders
|
|
767
|
+
WHERE customer_id = 12345
|
|
768
|
+
GROUP BY customer_id;
|
|
769
|
+
```
|
|
770
|
+
|
|
771
|
+
---
|
|
772
|
+
|
|
773
|
+
## 🔐 Segurança e Governança
|
|
774
|
+
|
|
775
|
+
### Data Governance
|
|
776
|
+
|
|
777
|
+
### Classificação de Dados
|
|
778
|
+
```yaml
|
|
779
|
+
data_classification:
|
|
780
|
+
public:
|
|
781
|
+
description: "Dados públicos, sem restrições"
|
|
782
|
+
examples: ["preços públicos", "catálogos de produtos"]
|
|
783
|
+
controls: ["acesso irrestrito"]
|
|
784
|
+
|
|
785
|
+
internal:
|
|
786
|
+
description: "Dados internos da empresa"
|
|
787
|
+
examples: ["vendas internas", "métricas de RH"]
|
|
788
|
+
controls: ["acesso restrito", "criptografia em repouso"]
|
|
789
|
+
|
|
790
|
+
confidential:
|
|
791
|
+
description: "Dados confidenciais da empresa"
|
|
792
|
+
examples: ["informações financeiras", "dados pessoais"]
|
|
793
|
+
controls: ["acesso restrito", "criptografia", "mascaramento"]
|
|
794
|
+
|
|
795
|
+
restricted:
|
|
796
|
+
description: "Dados altamente sensíveis"
|
|
797
|
+
examples: ["informações de saúde", "dados de pagamento"]
|
|
798
|
+
controls: ["acesso muito restrito", "criptografia", "mascaramento"]
|
|
799
|
+
```
|
|
800
|
+
|
|
801
|
+
### LGPD Compliance
|
|
802
|
+
```python
|
|
803
|
+
# Anonimização de Dados PII
|
|
804
|
+
import hashlib
|
|
805
|
+
import pandas as pd
|
|
806
|
+
|
|
807
|
+
def anonymize_pii(df, pii_columns):
|
|
808
|
+
"""Anonimiza colunas com dados PII"""
|
|
809
|
+
df_anonymized = df.copy()
|
|
810
|
+
|
|
811
|
+
for column in pii_columns:
|
|
812
|
+
if column in df_anonymized.columns:
|
|
813
|
+
# Hash do email
|
|
814
|
+
if df_anonymized[column].dtype == 'object':
|
|
815
|
+
df_anonymized[column] = df_anonymized[column].apply(
|
|
816
|
+
lambda x: hashlib.sha256(x.encode()).hexdigest()[:16]
|
|
817
|
+
)
|
|
818
|
+
# Mascaramento de nome
|
|
819
|
+
elif column in ['name', 'full_name']:
|
|
820
|
+
df_anonymized[column] = df_anonymized[column].apply(
|
|
821
|
+
lambda x: 'USER_' + str(hash(x)[:8]
|
|
822
|
+
)
|
|
823
|
+
|
|
824
|
+
return df_anonymized
|
|
825
|
+
|
|
826
|
+
# Política de Retenção
|
|
827
|
+
def apply_retention_policy(df, retention_days=365):
|
|
828
|
+
"""Aplica política de retenção de dados"""
|
|
829
|
+
cutoff_date = datetime.now() - timedelta(days=retention_days)
|
|
830
|
+
return df[df['created_at'] >= cutoff_date]
|
|
831
|
+
```
|
|
832
|
+
|
|
833
|
+
### Auditoria e Logging
|
|
834
|
+
```python
|
|
835
|
+
import logging
|
|
836
|
+
import json
|
|
837
|
+
from datetime import datetime
|
|
838
|
+
|
|
839
|
+
# Configuração de Logging
|
|
840
|
+
logging.basicConfig(
|
|
841
|
+
level=logging.INFO,
|
|
842
|
+
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
|
|
843
|
+
handlers=[
|
|
844
|
+
logging.FileHandler('/var/log/analytics.log'),
|
|
845
|
+
logging.StreamHandler()
|
|
846
|
+
]
|
|
847
|
+
)
|
|
848
|
+
|
|
849
|
+
# Auditoria de Acesso
|
|
850
|
+
def log_data_access(user_id, table_name, action, record_id=None):
|
|
851
|
+
"""Registra acesso a dados"""
|
|
852
|
+
log_entry = {
|
|
853
|
+
"timestamp": datetime.now().isoformat(),
|
|
854
|
+
"user_id": user_id,
|
|
855
|
+
"table_name": table_name,
|
|
856
|
+
"action": action,
|
|
857
|
+
"record_id": record_id,
|
|
858
|
+
"ip_address": request.remote_addr
|
|
859
|
+
}
|
|
860
|
+
|
|
861
|
+
logging.info(json.dumps(log_entry))
|
|
862
|
+
```
|
|
863
|
+
|
|
864
|
+
---
|
|
865
|
+
|
|
866
|
+
## 📊 Monitoramento e Observabilidade
|
|
867
|
+
|
|
868
|
+
### Métricas de Pipeline
|
|
869
|
+
|
|
870
|
+
#### Latency e Throughput
|
|
871
|
+
```python
|
|
872
|
+
import time
|
|
873
|
+
from datetime import datetime
|
|
874
|
+
from prometheus_client import Counter, Histogram, Gauge
|
|
875
|
+
|
|
876
|
+
# Métricas do Pipeline
|
|
877
|
+
pipeline_latency = Histogram(
|
|
878
|
+
'analytics_pipeline_latency_seconds',
|
|
879
|
+
'Tempo de execução do pipeline',
|
|
880
|
+
buckets=[0.1, 0.5, 1, 5, 10, 30, 60, 300]
|
|
881
|
+
)
|
|
882
|
+
|
|
883
|
+
pipeline_throughput = Counter(
|
|
884
|
+
'analytics_pipeline_throughput_total',
|
|
885
|
+
'Total de registros processados',
|
|
886
|
+
['pipeline_name', 'status']
|
|
887
|
+
)
|
|
888
|
+
|
|
889
|
+
# Monitoramento de Performance
|
|
890
|
+
def monitor_pipeline_performance(pipeline_name, start_time, end_time, record_count):
|
|
891
|
+
"""Monitora performance do pipeline"""
|
|
892
|
+
latency = (end_time - start_time).total_seconds()
|
|
893
|
+
|
|
894
|
+
pipeline_latency.observe(latency)
|
|
895
|
+
pipeline_throughput.labels(
|
|
896
|
+
pipeline_name=pipeline_name,
|
|
897
|
+
status='success'
|
|
898
|
+
).inc(record_count)
|
|
899
|
+
|
|
900
|
+
logging.info(
|
|
901
|
+
f"Pipeline {pipeline_name}: "
|
|
902
|
+
f"Latency={latency:.2f}s, "
|
|
903
|
+
f"Records={record_count}, "
|
|
904
|
+
f"Throughput={record_count/latency:.2f} rec/s"
|
|
905
|
+
)
|
|
906
|
+
```
|
|
907
|
+
|
|
908
|
+
#### Qualidade de Dados
|
|
909
|
+
```python
|
|
910
|
+
from great_expectations import ValidationSuite
|
|
911
|
+
import pandas as pd
|
|
912
|
+
|
|
913
|
+
def validate_data_quality(df, validation_suite):
|
|
914
|
+
"""Valida qualidade dos dados usando Great Expectations"""
|
|
915
|
+
try:
|
|
916
|
+
validation_suite.validate(df)
|
|
917
|
+
return True, "Validação de dados aprovada"
|
|
918
|
+
except Exception as e:
|
|
919
|
+
return False, f"Erro na validação: {str(e)}"
|
|
920
|
+
```
|
|
921
|
+
|
|
922
|
+
### Alertas e Notificações
|
|
923
|
+
```python
|
|
924
|
+
from prometheus_client import Gauge
|
|
925
|
+
import smtplib
|
|
926
|
+
from email.mime.text import MIMEText
|
|
927
|
+
|
|
928
|
+
# Alertas de Performance
|
|
929
|
+
pipeline_success_rate = Gauge(
|
|
930
|
+
'analytics_pipeline_success_rate',
|
|
931
|
+
'Taxa de sucesso do pipeline',
|
|
932
|
+
thresholds=[0.95, 0.90, 0.85]
|
|
933
|
+
)
|
|
934
|
+
|
|
935
|
+
# Configuração de Alertas
|
|
936
|
+
def send_alert(subject, message, recipients):
|
|
937
|
+
"""Envia alerta por email"""
|
|
938
|
+
msg = MIMEText(message)
|
|
939
|
+
msg['Subject'] = f"Alerta Analytics: {subject}"
|
|
940
|
+
msg['From'] = "analytics@empresa.com"
|
|
941
|
+
msg['To'] = recipients
|
|
942
|
+
|
|
943
|
+
with smtplib.SMTP('smtp.empresa.com') as server:
|
|
944
|
+
server.starttls()
|
|
945
|
+
server.login('username', 'password')
|
|
946
|
+
server.send_message(msg)
|
|
947
|
+
```
|
|
948
|
+
|
|
949
|
+
---
|
|
950
|
+
|
|
951
|
+
## 🚀 Casos de Uso Avançados
|
|
952
|
+
|
|
953
|
+
### Machine Learning Operations (MLOps)
|
|
954
|
+
|
|
955
|
+
#### Feature Engineering
|
|
956
|
+
```python
|
|
957
|
+
from sklearn.preprocessing import StandardScaler
|
|
958
|
+
from sklearn.model_selection import train_test_split
|
|
959
|
+
from sklearn.ensemble import RandomForestClassifier
|
|
960
|
+
|
|
961
|
+
def prepare_features(df):
|
|
962
|
+
"""Prepara features para ML"""
|
|
963
|
+
# Selecionar features numéricas
|
|
964
|
+
numeric_features = df.select_dtypes(include=['number'])
|
|
965
|
+
|
|
966
|
+
# Normalizar features
|
|
967
|
+
scaler = StandardScaler()
|
|
968
|
+
scaled_features = scaler.fit_transform(numeric_features)
|
|
969
|
+
|
|
970
|
+
return scaled_features, scaler
|
|
971
|
+
|
|
972
|
+
def train_churn_model(X, y):
|
|
973
|
+
"""Treina modelo de churn"""
|
|
974
|
+
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
|
|
975
|
+
|
|
976
|
+
model = RandomForestClassifier(n_estimators=100, random_state=42)
|
|
977
|
+
model.fit(X_train, y_train)
|
|
978
|
+
|
|
979
|
+
return model, X_test, y_test
|
|
980
|
+
```
|
|
981
|
+
|
|
982
|
+
#### Model Serving
|
|
983
|
+
```python
|
|
984
|
+
import joblib
|
|
985
|
+
import pickle
|
|
986
|
+
|
|
987
|
+
def save_model(model, model_path):
|
|
988
|
+
"""Salva modelo treinado"""
|
|
989
|
+
joblib.dump(model, model_path)
|
|
990
|
+
|
|
991
|
+
def load_model(model_path):
|
|
992
|
+
"""Carrega modelo treinado"""
|
|
993
|
+
return joblib.load(model_path)
|
|
994
|
+
```
|
|
995
|
+
|
|
996
|
+
### Real-Time Analytics
|
|
997
|
+
|
|
998
|
+
#### Stream Processing com Kafka
|
|
999
|
+
```python
|
|
1000
|
+
from kafka import KafkaConsumer
|
|
1001
|
+
import json
|
|
1002
|
+
|
|
1003
|
+
class RealTimeProcessor:
|
|
1004
|
+
def __init__(self, kafka_config):
|
|
1005
|
+
self.consumer = KafkaConsumer(**kafka_config)
|
|
1006
|
+
self.consumer.subscribe(['user_events'])
|
|
1007
|
+
|
|
1008
|
+
def process_stream(self):
|
|
1009
|
+
"""Processa stream de eventos em tempo real"""
|
|
1010
|
+
for message in self.consumer:
|
|
1011
|
+
try:
|
|
1012
|
+
event = json.loads(message.value.decode('utf-8'))
|
|
1013
|
+
self.process_event(event)
|
|
1014
|
+
except Exception as e:
|
|
1015
|
+
logging.error(f"Erro no processamento: {e}")
|
|
1016
|
+
|
|
1017
|
+
def process_event(self, event):
|
|
1018
|
+
"""Processa evento individual"""
|
|
1019
|
+
# Lógica de processamento
|
|
1020
|
+
pass
|
|
1021
|
+
```
|
|
1022
|
+
|
|
1023
|
+
---
|
|
1024
|
+
|
|
1025
|
+
## 📋 Melhores Práticas
|
|
1026
|
+
|
|
1027
|
+
### Design de Schema
|
|
1028
|
+
- **Nomenclatura consistente**: Use snake_case para nomes de tabelas e colunas
|
|
1029
|
+
- **Documentação completa**: Descreva cada tabela e coluna
|
|
1030
|
+
- **Versionamento**: Controle versões de schema
|
|
1031
|
+
- **Testes automatizados**: Valide schema automaticamente
|
|
1032
|
+
|
|
1033
|
+
### Performance
|
|
1034
|
+
- **Índices estratégicos**: Crie índices para queries frequentes
|
|
1035
|
+
- **Particionamento adequado**: Particione tabelas grandes por data
|
|
1036
|
+
- **Materialized views**: Use para agregações complexas
|
|
1037
|
+
- **Query otimização**: Evite SELECT *, use colunas específicas
|
|
1038
|
+
|
|
1039
|
+
### Qualidade
|
|
1040
|
+
- **Validação contínua**: Implemente testes automatizados
|
|
1041
|
+
- **Monitoramento ativo**: Monitore métricas de qualidade
|
|
1042
|
+
- **Alertas proativas:** Configure alertas para anomalias
|
|
1043
|
+
- **Documentação de erros**: Registre e analise falhas
|
|
1044
|
+
|
|
1045
|
+
### Segurança
|
|
1046
|
+
- **Princípio do menor privilégio**: Conceda permissões mínimas
|
|
1047
|
+
- **Criptografia sempre**: Dados sensíveis sempre criptografados
|
|
1048
|
+
- **Auditoria completa:** Registre todos os acessos
|
|
1049
|
+
- **Compliance rigoroso**: Siga regulamentos aplicáveis
|
|
1050
|
+
|
|
1051
|
+
---
|
|
1052
|
+
|
|
1053
|
+
## 🎯 Implementação Roadmap
|
|
1054
|
+
|
|
1055
|
+
### Fase 1: Fundação (Semanas 1-2)
|
|
1056
|
+
- [ ] **Setup do ambiente**: Data warehouse e ferramentas
|
|
1057
|
+
- [ ] **Fontes de dados**: Conectar e validar fontes
|
|
1058
|
+
- [ ] **Pipeline básico**: Implementar ETL simples
|
|
1059
|
+
- [ ] **Dashboard inicial**: Criar primeiro dashboard
|
|
1060
|
+
- [ ] **Testes de qualidade**: Implementar validações básicas
|
|
1061
|
+
|
|
1062
|
+
### Fase 2: Expansão (Semanas 3-4)
|
|
1063
|
+
- [ ] **Pipelines avançados**: Implementar CDC e streaming
|
|
1064
|
+
- [ ] **Modelagem completa:** Implementar star schema completo
|
|
1065
|
+
- [ ] **Dashboards múltiplos:** Criar dashboards por área
|
|
1066
|
+
- [ ] **Automação completa:** CI/CD para analytics
|
|
1067
|
+
- [ ] **Performance tuning:** Otimizar queries e pipelines
|
|
1068
|
+
|
|
1069
|
+
### Fase 3: Otimização (Semanas 5-6)
|
|
1070
|
+
- [ ] **Real-time analytics**: Implementar streaming analytics
|
|
1071
|
+
- [ ] **ML pipelines**: Integrar ML na pipeline
|
|
1072
|
+
- [ ] **Self-service BI**: Capacitar usuários finais
|
|
1073
|
+
- [ ] **Advanced monitoring**: Monitoramento preditivo
|
|
1074
|
+
- [ ] **Governança completa:** Implementar data governance
|
|
1075
|
+
- [ ] **Inovação contínua**: Explorar novas tecnologias
|
|
1076
|
+
|
|
1077
|
+
---
|
|
1078
|
+
|
|
1079
|
+
## 📚 Recursos e Referências
|
|
1080
|
+
|
|
1081
|
+
### Documentação Oficial
|
|
1082
|
+
- [Apache Airflow Documentation](https://airflow.apache.org/docs/)
|
|
1083
|
+
- [Apache Spark Documentation](https://spark.apache.org/docs/)
|
|
1084
|
+
- [dbt Documentation](https://docs.getdbt.com/)
|
|
1085
|
+
- [Google BigQuery Documentation](https://cloud.google.com/bigquery/docs/)
|
|
1086
|
+
- [Looker Documentation](https://docs.looker.com/)
|
|
1087
|
+
|
|
1088
|
+
### Livros Recomendados
|
|
1089
|
+
- "Data Warehouse Toolkit" de Ralph Kimball
|
|
1090
|
+
- "The Data Warehouse Lifecycle Toolkit" de Ralph Kimball
|
|
1091
|
+
- "Designing Data-Intensive Applications" by Martin Fowler
|
|
1092
|
+
- "Building the Data Warehouse" de Inmon
|
|
1093
|
+
- "Data Science for Business" de Provost & Fawcett
|
|
1094
|
+
|
|
1095
|
+
### Comunidades
|
|
1096
|
+
- [dbt Slack Community](https://dbt.com/slack)
|
|
1097
|
+
- [Airflow Users Group](https://lists.apache.org/)
|
|
1098
|
+
- [Spark Users Group](https://spark.apache.org/)
|
|
1099
|
+
- [Looker Community](https://community.looker.com/)
|
|
1100
|
+
|
|
1101
|
+
### Blogs e Artigos
|
|
1102
|
+
- [The Analytics Engineering Blog](https://medium.com/analytics-engineering)
|
|
1103
|
+
- [Netflix Tech Blog](https://netflixtechblog.com/)
|
|
1104
|
+
- [Uber Engineering Blog](https://www.uber.com/blog/)
|
|
1105
|
+
- [Stripe Engineering Blog](https://stripe.com/blog/engineering)
|
|
1106
|
+
|
|
1107
|
+
---
|
|
1108
|
+
|
|
1109
|
+
## 🎯 Conclusão
|
|
1110
|
+
|
|
1111
|
+
Este guia serve como referência completa para implementação de analytics modernos, seguindo as melhores práticas da indústria. Para suporte técnico, consulte os recursos em `resources/` ou exemplos em `examples/`.
|