@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
|
@@ -0,0 +1,857 @@
|
|
|
1
|
+
# Exemplos Práticos de Design de Banco de Dados
|
|
2
|
+
|
|
3
|
+
## Sumário
|
|
4
|
+
Este documento contém exemplos práticos de design de banco de dados para diferentes tipos de sistemas, servindo como referência para implementação.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Exemplo 1: Sistema de E-commerce
|
|
9
|
+
|
|
10
|
+
### Contexto
|
|
11
|
+
Sistema de vendas online com gestão de produtos, pedidos, usuários e pagamentos.
|
|
12
|
+
|
|
13
|
+
### Escolha do Banco
|
|
14
|
+
- **PostgreSQL 15+** - Por suporte a JSONB, full-text search e pgvector
|
|
15
|
+
- **Neon** - Serverless para escalabilidade
|
|
16
|
+
- **Prisma** - ORM type-safe para Node.js
|
|
17
|
+
|
|
18
|
+
### Schema Principal
|
|
19
|
+
|
|
20
|
+
#### Users Table
|
|
21
|
+
```sql
|
|
22
|
+
CREATE TABLE users (
|
|
23
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
24
|
+
email VARCHAR(255) NOT NULL UNIQUE,
|
|
25
|
+
username VARCHAR(50) NOT NULL UNIQUE,
|
|
26
|
+
password_hash VARCHAR(255) NOT NULL,
|
|
27
|
+
first_name VARCHAR(100),
|
|
28
|
+
last_name VARCHAR(100),
|
|
29
|
+
phone VARCHAR(20),
|
|
30
|
+
email_verified_at TIMESTAMP,
|
|
31
|
+
marketing_consent BOOLEAN DEFAULT false,
|
|
32
|
+
created_at TIMESTAMP WITH DEFAULT CURRENT_TIMESTAMP,
|
|
33
|
+
updated_at TIMESTAMP WITH DEFAULT CURRENT_TIMESTAMP,
|
|
34
|
+
deleted_at TIMESTAMP NULL -- Soft delete
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
-- Índices
|
|
38
|
+
CREATE INDEX idx_users_email ON users(email);
|
|
39
|
+
CREATE INDEX idx_users_username ON users(username);
|
|
40
|
+
CREATE INDEX idx_users_created_at ON users(created_at);
|
|
41
|
+
CREATE INDEX idx_users_active ON users(email) WHERE deleted_at IS NULL;
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
#### Products Table
|
|
45
|
+
```sql
|
|
46
|
+
CREATE TABLE products (
|
|
47
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
48
|
+
name VARCHAR(255) NOT NULL,
|
|
49
|
+
slug VARCHAR(255) NOT NULL UNIQUE,
|
|
50
|
+
description TEXT,
|
|
51
|
+
price DECIMAL(10,2) NOT NULL,
|
|
52
|
+
compare_price DECIMAL(10,2),
|
|
53
|
+
sku VARCHAR(100) NOT NULL UNIQUE,
|
|
54
|
+
barcode VARCHAR(50),
|
|
55
|
+
stock INTEGER NOT NULL DEFAULT 0,
|
|
56
|
+
weight DECIMAL(8,3),
|
|
57
|
+
dimensions JSONB, -- {"length": 10, "width": 5, "height": 2}
|
|
58
|
+
metadata JSONB, -- {"brand": "Nike", "color": "Red"}
|
|
59
|
+
status VARCHAR(20) DEFAULT 'active',
|
|
60
|
+
created_at TIMESTAMP WITH DEFAULT CURRENT_TIMESTAMP,
|
|
61
|
+
updated_at TIMESTAMP WITH DEFAULT CURRENT_TIMESTAMP,
|
|
62
|
+
deleted_at TIMESTAMP NULL
|
|
63
|
+
);
|
|
64
|
+
|
|
65
|
+
-- Índices
|
|
66
|
+
CREATE INDEX idx_products_name ON products(name);
|
|
67
|
+
CREATE INDEX idx_products_sku ON products(sku);
|
|
68
|
+
CREATE INDEX idx_products_status ON products(status);
|
|
69
|
+
CREATE INDEX idx_products_price ON products(price);
|
|
70
|
+
CREATE INDEX idx_products_metadata_gin ON products USING GIN(metadata);
|
|
71
|
+
CREATE INDEX idx_products_in_stock ON products(id) WHERE stock > 0;
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
#### Categories Table
|
|
75
|
+
```sql
|
|
76
|
+
CREATE TABLE categories (
|
|
77
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
78
|
+
name VARCHAR(100) NOT NULL,
|
|
79
|
+
slug VARCHAR(100) NOT NULL UNIQUE,
|
|
80
|
+
description TEXT,
|
|
81
|
+
parent_id UUID REFERENCES categories(id) ON DELETE CASCADE,
|
|
82
|
+
image_url VARCHAR(500),
|
|
83
|
+
sort_order INTEGER DEFAULT 0,
|
|
84
|
+
is_active BOOLEAN DEFAULT true,
|
|
85
|
+
created_at TIMESTAMP WITH DEFAULT CURRENT_TIMESTAMP,
|
|
86
|
+
updated_at TIMESTAMP WITH DEFAULT CURRENT_TIMESTAMP
|
|
87
|
+
);
|
|
88
|
+
|
|
89
|
+
-- Índices
|
|
90
|
+
CREATE INDEX idx_categories_parent ON categories(parent_id);
|
|
91
|
+
CREATE INDEX idx_categories_active ON categories(is_active);
|
|
92
|
+
CREATE INDEX idx_categories_sort ON categories(sort_order);
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
#### Orders Table
|
|
96
|
+
```sql
|
|
97
|
+
CREATE TABLE orders (
|
|
98
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
99
|
+
user_id UUID NOT NULL REFERENCES users(id) ON DELETE RESTRICT,
|
|
100
|
+
order_number VARCHAR(50) NOT NULL UNIQUE,
|
|
101
|
+
status VARCHAR(20) NOT NULL DEFAULT 'pending',
|
|
102
|
+
currency VARCHAR(3) NOT NULL DEFAULT 'BRL',
|
|
103
|
+
subtotal DECIMAL(10,2) NOT NULL,
|
|
104
|
+
tax_amount DECIMAL(10,2) NOT NULL DEFAULT 0,
|
|
105
|
+
shipping_amount DECIMAL(10,2) NOT NULL DEFAULT 0,
|
|
106
|
+
total_amount DECIMAL(10,2) NOT NULL,
|
|
107
|
+
notes TEXT,
|
|
108
|
+
shipping_address JSONB NOT NULL,
|
|
109
|
+
billing_address JSONB NOT NULL,
|
|
110
|
+
created_at TIMESTAMP WITH DEFAULT CURRENT_TIMESTAMP,
|
|
111
|
+
updated_at TIMESTAMP WITH DEFAULT CURRENT_TIMESTAMP
|
|
112
|
+
);
|
|
113
|
+
|
|
114
|
+
-- Índices
|
|
115
|
+
CREATE INDEX idx_orders_user ON orders(user_id);
|
|
116
|
+
CREATE INDEX idx_orders_status ON orders(status);
|
|
117
|
+
CREATE INDEX idx_orders_created_at ON orders(created_at);
|
|
118
|
+
CREATE INDEX idx_orders_number ON orders(order_number);
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
#### Order Items Table
|
|
122
|
+
```sql
|
|
123
|
+
CREATE TABLE order_items (
|
|
124
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
125
|
+
order_id UUID NOT NULL REFERENCES orders(id) ON DELETE CASCADE,
|
|
126
|
+
product_id UUID NOT NULL REFERENCES products(id) ON DELETE RESTRICT,
|
|
127
|
+
quantity INTEGER NOT NULL,
|
|
128
|
+
unit_price DECIMAL(10,2) NOT NULL,
|
|
129
|
+
total_price DECIMAL(10,2) NOT NULL,
|
|
130
|
+
product_snapshot JSONB NOT NULL, -- Snapshot do produto no momento
|
|
131
|
+
created_at TIMESTAMP WITH DEFAULT CURRENT_TIMESTAMP
|
|
132
|
+
);
|
|
133
|
+
|
|
134
|
+
-- Índices
|
|
135
|
+
CREATE INDEX idx_order_items_order ON order_items(order_id);
|
|
136
|
+
CREATE INDEX idx_order_items_product ON order_items(product_id);
|
|
137
|
+
CREATE UNIQUE INDEX idx_order_items_order_product ON order_items(order_id, product_id);
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### Queries Otimizadas
|
|
141
|
+
|
|
142
|
+
#### Busca de Produtos com Filtros
|
|
143
|
+
```sql
|
|
144
|
+
-- Query principal de busca
|
|
145
|
+
SELECT
|
|
146
|
+
p.*,
|
|
147
|
+
c.name as category_name,
|
|
148
|
+
(SELECT AVG(rating) FROM product_reviews WHERE product_id = p.id) as avg_rating,
|
|
149
|
+
(SELECT COUNT(*) FROM product_reviews WHERE product_id = p.id) as review_count
|
|
150
|
+
FROM products p
|
|
151
|
+
LEFT JOIN categories c ON p.metadata->>'category_id' = c.id::text
|
|
152
|
+
WHERE
|
|
153
|
+
p.status = 'active'
|
|
154
|
+
AND p.stock > 0
|
|
155
|
+
AND (
|
|
156
|
+
LOWER(p.name) LIKE LOWER('%search_term%') OR
|
|
157
|
+
LOWER(p.description) LIKE LOWER('%search_term%') OR
|
|
158
|
+
p.metadata->>'brand' ILIKE '%search_term%'
|
|
159
|
+
)
|
|
160
|
+
AND (
|
|
161
|
+
p.price BETWEEN :min_price AND :max_price
|
|
162
|
+
OR :min_price IS NULL OR :max_price IS NULL
|
|
163
|
+
)
|
|
164
|
+
ORDER BY
|
|
165
|
+
CASE WHEN :sort = 'price_asc' THEN p.price END ASC,
|
|
166
|
+
CASE WHEN :sort = 'price_desc' THEN p.price END DESC,
|
|
167
|
+
CASE WHEN :sort = 'name' THEN p.name END ASC,
|
|
168
|
+
p.created_at DESC
|
|
169
|
+
LIMIT :limit OFFSET :offset;
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
#### Dashboard de Vendas
|
|
173
|
+
```sql
|
|
174
|
+
-- Dashboard com CTEs para performance
|
|
175
|
+
WITH daily_sales AS (
|
|
176
|
+
SELECT
|
|
177
|
+
DATE(created_at) as date,
|
|
178
|
+
COUNT(*) as orders_count,
|
|
179
|
+
SUM(total_amount) as total_revenue
|
|
180
|
+
FROM orders
|
|
181
|
+
WHERE status IN ('confirmed', 'shipped', 'delivered')
|
|
182
|
+
AND created_at >= CURRENT_DATE - INTERVAL '30 days'
|
|
183
|
+
GROUP BY DATE(created_at)
|
|
184
|
+
),
|
|
185
|
+
top_products AS (
|
|
186
|
+
SELECT
|
|
187
|
+
p.name,
|
|
188
|
+
SUM(oi.quantity) as total_sold,
|
|
189
|
+
SUM(oi.total_price) as total_revenue
|
|
190
|
+
FROM order_items oi
|
|
191
|
+
JOIN orders o ON oi.order_id = o.id
|
|
192
|
+
JOIN products p ON oi.product_id = p.id
|
|
193
|
+
WHERE o.status IN ('confirmed', 'shipped', 'delivered')
|
|
194
|
+
AND o.created_at >= CURRENT_DATE - INTERVAL '30 days'
|
|
195
|
+
GROUP BY p.id, p.name
|
|
196
|
+
ORDER BY total_sold DESC
|
|
197
|
+
LIMIT 10
|
|
198
|
+
)
|
|
199
|
+
SELECT
|
|
200
|
+
(SELECT JSON_AGG(json_build_object('date', date, 'orders', orders_count, 'revenue', total_revenue))
|
|
201
|
+
FROM daily_sales) as daily_sales,
|
|
202
|
+
(SELECT JSON_AGG(json_build_object('name', name, 'sold', total_sold, 'revenue', total_revenue))
|
|
203
|
+
FROM top_products) as top_products;
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
### Migrações Exemplo
|
|
207
|
+
|
|
208
|
+
#### Migration 001: Create Initial Tables
|
|
209
|
+
```sql
|
|
210
|
+
-- 001_create_initial_tables.sql
|
|
211
|
+
BEGIN;
|
|
212
|
+
|
|
213
|
+
-- Users
|
|
214
|
+
CREATE TABLE users (
|
|
215
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
216
|
+
email VARCHAR(255) NOT NULL UNIQUE,
|
|
217
|
+
username VARCHAR(50) NOT NULL UNIQUE,
|
|
218
|
+
password_hash VARCHAR(255) NOT NULL,
|
|
219
|
+
created_at TIMESTAMP WITH DEFAULT CURRENT_TIMESTAMP,
|
|
220
|
+
updated_at TIMESTAMP WITH DEFAULT CURRENT_TIMESTAMP
|
|
221
|
+
);
|
|
222
|
+
|
|
223
|
+
-- Products
|
|
224
|
+
CREATE TABLE products (
|
|
225
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
226
|
+
name VARCHAR(255) NOT NULL,
|
|
227
|
+
slug VARCHAR(255) NOT NULL UNIQUE,
|
|
228
|
+
price DECIMAL(10,2) NOT NULL,
|
|
229
|
+
stock INTEGER NOT NULL DEFAULT 0,
|
|
230
|
+
status VARCHAR(20) DEFAULT 'active',
|
|
231
|
+
created_at TIMESTAMP WITH DEFAULT CURRENT_TIMESTAMP,
|
|
232
|
+
updated_at TIMESTAMP WITH DEFAULT CURRENT_TIMESTAMP
|
|
233
|
+
);
|
|
234
|
+
|
|
235
|
+
-- Orders
|
|
236
|
+
CREATE TABLE orders (
|
|
237
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
238
|
+
user_id UUID NOT NULL REFERENCES users(id) ON DELETE RESTRICT,
|
|
239
|
+
order_number VARCHAR(50) NOT NULL UNIQUE,
|
|
240
|
+
status VARCHAR(20) NOT NULL DEFAULT 'pending',
|
|
241
|
+
total_amount DECIMAL(10,2) NOT NULL,
|
|
242
|
+
created_at TIMESTAMP WITH DEFAULT CURRENT_TIMESTAMP,
|
|
243
|
+
updated_at TIMESTAMP WITH DEFAULT CURRENT_TIMESTAMP
|
|
244
|
+
);
|
|
245
|
+
|
|
246
|
+
-- Order Items
|
|
247
|
+
CREATE TABLE order_items (
|
|
248
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
249
|
+
order_id UUID NOT NULL REFERENCES orders(id) ON DELETE CASCADE,
|
|
250
|
+
product_id UUID NOT NULL REFERENCES products(id) ON DELETE RESTRICT,
|
|
251
|
+
quantity INTEGER NOT NULL,
|
|
252
|
+
unit_price DECIMAL(10,2) NOT NULL,
|
|
253
|
+
total_price DECIMAL(10,2) NOT NULL,
|
|
254
|
+
created_at TIMESTAMP WITH DEFAULT CURRENT_TIMESTAMP
|
|
255
|
+
);
|
|
256
|
+
|
|
257
|
+
-- Índices
|
|
258
|
+
CREATE INDEX idx_users_email ON users(email);
|
|
259
|
+
CREATE INDEX idx_products_name ON products(name);
|
|
260
|
+
CREATE INDEX idx_orders_user ON orders(user_id);
|
|
261
|
+
CREATE INDEX idx_order_items_order ON order_items(order_id);
|
|
262
|
+
CREATE INDEX idx_order_items_product ON order_items(product_id);
|
|
263
|
+
|
|
264
|
+
COMMIT;
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
#### Migration 002: Add Categories and Product Categories
|
|
268
|
+
```sql
|
|
269
|
+
-- 002_add_categories.sql
|
|
270
|
+
BEGIN;
|
|
271
|
+
|
|
272
|
+
-- Categories
|
|
273
|
+
CREATE TABLE categories (
|
|
274
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
275
|
+
name VARCHAR(100) NOT NULL,
|
|
276
|
+
slug VARCHAR(100) NOT NULL UNIQUE,
|
|
277
|
+
description TEXT,
|
|
278
|
+
parent_id UUID REFERENCES categories(id) ON DELETE CASCADE,
|
|
279
|
+
created_at TIMESTAMP WITH DEFAULT CURRENT_TIMESTAMP,
|
|
280
|
+
updated_at TIMESTAMP WITH DEFAULT CURRENT_TIMESTAMP
|
|
281
|
+
);
|
|
282
|
+
|
|
283
|
+
-- Product Categories (junction table)
|
|
284
|
+
CREATE TABLE product_categories (
|
|
285
|
+
product_id UUID NOT NULL REFERENCES products(id) ON DELETE CASCADE,
|
|
286
|
+
category_id UUID NOT NULL REFERENCES categories(id) ON DELETE CASCADE,
|
|
287
|
+
PRIMARY KEY (product_id, category_id)
|
|
288
|
+
);
|
|
289
|
+
|
|
290
|
+
-- Índices
|
|
291
|
+
CREATE INDEX idx_categories_parent ON categories(parent_id);
|
|
292
|
+
CREATE INDEX idx_product_categories_product ON product_categories(product_id);
|
|
293
|
+
CREATE INDEX idx_product_categories_category ON product_categories(category_id);
|
|
294
|
+
|
|
295
|
+
COMMIT;
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
---
|
|
299
|
+
|
|
300
|
+
## Exemplo 2: Sistema de Blog
|
|
301
|
+
|
|
302
|
+
### Contexto
|
|
303
|
+
Sistema de blog com posts, comentários, usuários e tags.
|
|
304
|
+
|
|
305
|
+
### Escolha do Banco
|
|
306
|
+
- **PostgreSQL** - Suporte a full-text search e JSONB
|
|
307
|
+
- **Self-hosted** - Controle total
|
|
308
|
+
- **TypeORM** - ORM para Node.js
|
|
309
|
+
|
|
310
|
+
### Schema Principal
|
|
311
|
+
|
|
312
|
+
#### Posts Table
|
|
313
|
+
```sql
|
|
314
|
+
CREATE TABLE posts (
|
|
315
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
316
|
+
title VARCHAR(255) NOT NULL,
|
|
317
|
+
slug VARCHAR(255) NOT NULL UNIQUE,
|
|
318
|
+
content TEXT NOT NULL,
|
|
319
|
+
excerpt TEXT,
|
|
320
|
+
status VARCHAR(20) NOT NULL DEFAULT 'draft',
|
|
321
|
+
author_id UUID NOT NULL REFERENCES users(id) ON DELETE RESTRICT,
|
|
322
|
+
featured_image VARCHAR(500),
|
|
323
|
+
metadata JSONB DEFAULT '{}',
|
|
324
|
+
published_at TIMESTAMP,
|
|
325
|
+
created_at TIMESTAMP WITH DEFAULT CURRENT_TIMESTAMP,
|
|
326
|
+
updated_at TIMESTAMP WITH DEFAULT CURRENT_TIMESTAMP,
|
|
327
|
+
deleted_at TIMESTAMP NULL
|
|
328
|
+
);
|
|
329
|
+
|
|
330
|
+
-- Full-text search index
|
|
331
|
+
CREATE INDEX idx_posts_search ON posts USING GIN (
|
|
332
|
+
to_tsvector('portuguese', title || ' ' || content)
|
|
333
|
+
);
|
|
334
|
+
|
|
335
|
+
-- Índices de performance
|
|
336
|
+
CREATE INDEX idx_posts_author ON posts(author_id);
|
|
337
|
+
CREATE INDEX idx_posts_status ON posts(status);
|
|
338
|
+
CREATE INDEX idx_posts_published ON posts(published_at) WHERE status = 'published';
|
|
339
|
+
CREATE INDEX idx_posts_active ON posts(slug) WHERE deleted_at IS NULL;
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
#### Tags Table
|
|
343
|
+
```sql
|
|
344
|
+
CREATE TABLE tags (
|
|
345
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
346
|
+
name VARCHAR(50) NOT NULL UNIQUE,
|
|
347
|
+
slug VARCHAR(50) NOT NULL UNIQUE,
|
|
348
|
+
color VARCHAR(7) DEFAULT '#6366f1',
|
|
349
|
+
created_at TIMESTAMP WITH DEFAULT CURRENT_TIMESTAMP
|
|
350
|
+
);
|
|
351
|
+
|
|
352
|
+
-- Post Tags (junction table)
|
|
353
|
+
CREATE TABLE post_tags (
|
|
354
|
+
post_id UUID NOT NULL REFERENCES posts(id) ON DELETE CASCADE,
|
|
355
|
+
tag_id UUID NOT NULL REFERENCES tags(id) ON DELETE CASCADE,
|
|
356
|
+
PRIMARY KEY (post_id, tag_id)
|
|
357
|
+
);
|
|
358
|
+
|
|
359
|
+
-- Índices
|
|
360
|
+
CREATE INDEX idx_post_tags_post ON post_tags(post_id);
|
|
361
|
+
CREATE INDEX idx_post_tags_tag ON post_tags(tag_id);
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
#### Comments Table
|
|
365
|
+
```sql
|
|
366
|
+
CREATE TABLE comments (
|
|
367
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
368
|
+
post_id UUID NOT NULL REFERENCES posts(id) ON DELETE CASCADE,
|
|
369
|
+
author_name VARCHAR(100) NOT NULL,
|
|
370
|
+
author_email VARCHAR(255),
|
|
371
|
+
content TEXT NOT NULL,
|
|
372
|
+
status VARCHAR(20) DEFAULT 'pending',
|
|
373
|
+
parent_id UUID REFERENCES comments(id) ON DELETE CASCADE,
|
|
374
|
+
ip_address INET,
|
|
375
|
+
user_agent TEXT,
|
|
376
|
+
created_at TIMESTAMP WITH DEFAULT CURRENT_TIMESTAMP,
|
|
377
|
+
updated_at TIMESTAMP WITH DEFAULT CURRENT_TIMESTAMP
|
|
378
|
+
);
|
|
379
|
+
|
|
380
|
+
-- Índices
|
|
381
|
+
CREATE INDEX idx_comments_post ON comments(post_id);
|
|
382
|
+
CREATE INDEX idx_comments_parent ON comments(parent_id);
|
|
383
|
+
CREATE INDEX idx_comments_status ON comments(status);
|
|
384
|
+
CREATE INDEX idx_comments_created ON comments(created_at);
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
### Queries de Blog
|
|
388
|
+
|
|
389
|
+
#### Busca Full-Text
|
|
390
|
+
```sql
|
|
391
|
+
-- Busca de posts com ranking
|
|
392
|
+
SELECT
|
|
393
|
+
p.*,
|
|
394
|
+
ts_rank(
|
|
395
|
+
to_tsvector('portuguese', p.title || ' ' || p.content),
|
|
396
|
+
plainto_tsquery('portuguese', :search_term)
|
|
397
|
+
) as rank,
|
|
398
|
+
ts_headline('portuguese', p.title || ' ' || p.content, plainto_tsquery('portuguese', :search_term)) as snippet
|
|
399
|
+
FROM posts p
|
|
400
|
+
WHERE
|
|
401
|
+
p.status = 'published'
|
|
402
|
+
AND to_tsvector('portuguese', p.title || ' ' || p.content) @@ plainto_tsquery('portuguese', :search_term)
|
|
403
|
+
ORDER BY rank DESC, p.published_at DESC
|
|
404
|
+
LIMIT :limit;
|
|
405
|
+
```
|
|
406
|
+
|
|
407
|
+
#### Posts Populares
|
|
408
|
+
```sql
|
|
409
|
+
-- Posts populares (baseado em comentários e views)
|
|
410
|
+
SELECT
|
|
411
|
+
p.*,
|
|
412
|
+
COUNT(c.id) as comment_count,
|
|
413
|
+
COUNT(DISTINCT v.session_id) as view_count
|
|
414
|
+
FROM posts p
|
|
415
|
+
LEFT JOIN comments c ON p.id = c.post_id AND c.status = 'approved'
|
|
416
|
+
LEFT JOIN post_views v ON p.id = v.post_id AND v.created_at >= CURRENT_DATE - INTERVAL '7 days'
|
|
417
|
+
WHERE
|
|
418
|
+
p.status = 'published'
|
|
419
|
+
AND p.published_at >= CURRENT_DATE - INTERVAL '30 days'
|
|
420
|
+
GROUP BY p.id
|
|
421
|
+
ORDER BY
|
|
422
|
+
(COUNT(c.id) * 0.7 + COUNT(DISTINCT v.session_id) * 0.3) DESC
|
|
423
|
+
LIMIT 10;
|
|
424
|
+
```
|
|
425
|
+
|
|
426
|
+
---
|
|
427
|
+
|
|
428
|
+
## Exemplo 3: Sistema de IoT
|
|
429
|
+
|
|
430
|
+
### Contexto
|
|
431
|
+
Sistema de IoT com sensores, dispositivos e dados de tempo real.
|
|
432
|
+
|
|
433
|
+
### Escolha do Banco
|
|
434
|
+
- **TimescaleDB** - Extensão PostgreSQL para time-series
|
|
435
|
+
- **Redis** - Cache e dados em tempo real
|
|
436
|
+
- **MongoDB** - Dados flexíveis de dispositivos
|
|
437
|
+
|
|
438
|
+
### Schema Principal
|
|
439
|
+
|
|
440
|
+
#### Devices Table
|
|
441
|
+
```sql
|
|
442
|
+
CREATE TABLE devices (
|
|
443
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
444
|
+
name VARCHAR(100) NOT NULL,
|
|
445
|
+
device_id VARCHAR(100) NOT NULL UNIQUE,
|
|
446
|
+
type VARCHAR(50) NOT NULL,
|
|
447
|
+
location JSONB,
|
|
448
|
+
metadata JSONB DEFAULT '{}',
|
|
449
|
+
status VARCHAR(20) DEFAULT 'active',
|
|
450
|
+
last_seen TIMESTAMP,
|
|
451
|
+
created_at TIMESTAMP WITH DEFAULT CURRENT_TIMESTAMP,
|
|
452
|
+
updated_at TIMESTAMP WITH DEFAULT CURRENT_TIMESTAMP
|
|
453
|
+
);
|
|
454
|
+
|
|
455
|
+
-- Índices
|
|
456
|
+
CREATE INDEX idx_devices_device_id ON devices(device_id);
|
|
457
|
+
CREATE INDEX idx_devices_type ON devices(type);
|
|
458
|
+
CREATE INDEX idx_devices_status ON devices(status);
|
|
459
|
+
CREATE INDEX idx_devices_last_seen ON devices(last_seen);
|
|
460
|
+
CREATE INDEX idx_devices_location_gin ON devices USING GIN(location);
|
|
461
|
+
```
|
|
462
|
+
|
|
463
|
+
#### Sensor Data (Hypertable)
|
|
464
|
+
```sql
|
|
465
|
+
-- Criar hypertable para dados de sensores
|
|
466
|
+
CREATE TABLE sensor_data (
|
|
467
|
+
time TIMESTAMP NOT NULL,
|
|
468
|
+
device_id UUID NOT NULL REFERENCES devices(id) ON DELETE CASCADE,
|
|
469
|
+
metric_name VARCHAR(50) NOT NULL,
|
|
470
|
+
value DOUBLE PRECISION,
|
|
471
|
+
unit VARCHAR(20),
|
|
472
|
+
quality INTEGER DEFAULT 100,
|
|
473
|
+
metadata JSONB DEFAULT '{}'
|
|
474
|
+
);
|
|
475
|
+
|
|
476
|
+
-- Criar hypertable
|
|
477
|
+
SELECT create_hypertable('sensor_data', 'time');
|
|
478
|
+
|
|
479
|
+
-- Índices
|
|
480
|
+
CREATE INDEX idx_sensor_data_device_time ON sensor_data (device_id, time DESC);
|
|
481
|
+
CREATE INDEX idx_sensor_data_metric ON sensor_data (metric_name);
|
|
482
|
+
```
|
|
483
|
+
|
|
484
|
+
#### Alerts Table
|
|
485
|
+
```sql
|
|
486
|
+
CREATE TABLE alerts (
|
|
487
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
488
|
+
device_id UUID NOT NULL REFERENCES devices(id) ON DELETE CASCADE,
|
|
489
|
+
metric_name VARCHAR(50) NOT NULL,
|
|
490
|
+
condition VARCHAR(100) NOT NULL,
|
|
491
|
+
threshold DOUBLE PRECISION,
|
|
492
|
+
severity VARCHAR(20) NOT NULL,
|
|
493
|
+
status VARCHAR(20) DEFAULT 'active',
|
|
494
|
+
triggered_at TIMESTAMP,
|
|
495
|
+
resolved_at TIMESTAMP,
|
|
496
|
+
created_at TIMESTAMP WITH DEFAULT CURRENT_TIMESTAMP
|
|
497
|
+
);
|
|
498
|
+
|
|
499
|
+
-- Índices
|
|
500
|
+
CREATE INDEX idx_alerts_device ON alerts(device_id);
|
|
501
|
+
CREATE INDEX idx_alerts_status ON alerts(status);
|
|
502
|
+
CREATE INDEX idx_alerts_triggered ON alerts(triggered_at);
|
|
503
|
+
```
|
|
504
|
+
|
|
505
|
+
### Queries de IoT
|
|
506
|
+
|
|
507
|
+
#### Dados Recentes do Dispositivo
|
|
508
|
+
```sql
|
|
509
|
+
-- Últimas 24 horas de dados de um dispositivo
|
|
510
|
+
SELECT
|
|
511
|
+
time,
|
|
512
|
+
metric_name,
|
|
513
|
+
value,
|
|
514
|
+
unit,
|
|
515
|
+
quality
|
|
516
|
+
FROM sensor_data
|
|
517
|
+
WHERE
|
|
518
|
+
device_id = :device_id
|
|
519
|
+
AND time >= NOW() - INTERVAL '24 hours'
|
|
520
|
+
ORDER BY time DESC;
|
|
521
|
+
```
|
|
522
|
+
|
|
523
|
+
#### Alertas Ativos
|
|
524
|
+
```sql
|
|
525
|
+
-- Alertas não resolvidos
|
|
526
|
+
SELECT
|
|
527
|
+
d.name as device_name,
|
|
528
|
+
a.metric_name,
|
|
529
|
+
a.condition,
|
|
530
|
+
a.threshold,
|
|
531
|
+
a.severity,
|
|
532
|
+
a.triggered_at
|
|
533
|
+
FROM alerts a
|
|
534
|
+
JOIN devices d ON a.device_id = d.id
|
|
535
|
+
WHERE
|
|
536
|
+
a.status = 'active'
|
|
537
|
+
AND a.triggered_at IS NOT NULL
|
|
538
|
+
ORDER BY a.triggered_at DESC;
|
|
539
|
+
```
|
|
540
|
+
|
|
541
|
+
---
|
|
542
|
+
|
|
543
|
+
## Exemplo 4: Sistema de Analytics
|
|
544
|
+
|
|
545
|
+
### Contexto
|
|
546
|
+
Sistema de analytics com eventos de usuário, métricas e dashboards.
|
|
547
|
+
|
|
548
|
+
### Escolha do Banco
|
|
549
|
+
- **ClickHouse** - Analytics e OLAP
|
|
550
|
+
- **PostgreSQL** - Dados de configuração
|
|
551
|
+
- **Redis** - Cache de métricas
|
|
552
|
+
|
|
553
|
+
### Schema Principal
|
|
554
|
+
|
|
555
|
+
#### Events Table (ClickHouse)
|
|
556
|
+
```sql
|
|
557
|
+
CREATE TABLE events (
|
|
558
|
+
timestamp DateTime,
|
|
559
|
+
user_id UUID,
|
|
560
|
+
event_type String,
|
|
561
|
+
properties JSON,
|
|
562
|
+
session_id String,
|
|
563
|
+
ip_address IPv4,
|
|
564
|
+
user_agent String
|
|
565
|
+
) ENGINE = MergeTree()
|
|
566
|
+
PARTITION BY toYYYYMMDD(timestamp)
|
|
567
|
+
ORDER BY (timestamp, user_id, event_type);
|
|
568
|
+
```
|
|
569
|
+
|
|
570
|
+
#### Metrics Table
|
|
571
|
+
```sql
|
|
572
|
+
CREATE TABLE metrics (
|
|
573
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
574
|
+
name VARCHAR(100) NOT NULL UNIQUE,
|
|
575
|
+
description TEXT,
|
|
576
|
+
type VARCHAR(50) NOT NULL, -- counter, gauge, histogram
|
|
577
|
+
tags JSONB DEFAULT '{}',
|
|
578
|
+
created_at TIMESTAMP WITH DEFAULT CURRENT_TIMESTAMP,
|
|
579
|
+
updated_at TIMESTAMP WITH DEFAULT CURRENT_TIMESTAMP
|
|
580
|
+
);
|
|
581
|
+
|
|
582
|
+
-- Metric Values (time-series)
|
|
583
|
+
CREATE TABLE metric_values (
|
|
584
|
+
timestamp TIMESTAMP NOT NULL,
|
|
585
|
+
metric_id UUID NOT NULL REFERENCES metrics(id) ON DELETE CASCADE,
|
|
586
|
+
value DOUBLE PRECISION,
|
|
587
|
+
tags JSONB DEFAULT '{}'
|
|
588
|
+
);
|
|
589
|
+
|
|
590
|
+
-- Criar hypertable para valores
|
|
591
|
+
SELECT create_hypertable('metric_values', 'timestamp');
|
|
592
|
+
```
|
|
593
|
+
|
|
594
|
+
### Queries de Analytics
|
|
595
|
+
|
|
596
|
+
#### Eventos por Período
|
|
597
|
+
```sql
|
|
598
|
+
-- Contagem de eventos por tipo e período
|
|
599
|
+
SELECT
|
|
600
|
+
event_type,
|
|
601
|
+
toStartOfDay(timestamp) as day,
|
|
602
|
+
COUNT(*) as event_count,
|
|
603
|
+
COUNT(DISTINCT user_id) as unique_users
|
|
604
|
+
FROM events
|
|
605
|
+
WHERE
|
|
606
|
+
timestamp >= CURRENT_DATE - INTERVAL '30 days'
|
|
607
|
+
GROUP BY
|
|
608
|
+
event_type,
|
|
609
|
+
toStartOfDay(timestamp)
|
|
610
|
+
ORDER BY day DESC, event_count DESC;
|
|
611
|
+
```
|
|
612
|
+
|
|
613
|
+
#### Funil de Conversão
|
|
614
|
+
```sql
|
|
615
|
+
-- Funil de conversão por etapa
|
|
616
|
+
WITH user_sessions AS (
|
|
617
|
+
SELECT
|
|
618
|
+
user_id,
|
|
619
|
+
session_id,
|
|
620
|
+
min(timestamp) as session_start,
|
|
621
|
+
max(timestamp) as session_end,
|
|
622
|
+
array_agg(DISTINCT event_type ORDER BY timestamp) as events
|
|
623
|
+
FROM events
|
|
624
|
+
WHERE
|
|
625
|
+
timestamp >= CURRENT_DATE - INTERVAL '7 days'
|
|
626
|
+
GROUP BY user_id, session_id
|
|
627
|
+
),
|
|
628
|
+
conversion_funnel AS (
|
|
629
|
+
SELECT
|
|
630
|
+
event_type,
|
|
631
|
+
COUNT(DISTINCT user_id) as users,
|
|
632
|
+
COUNT(DISTINCT user_id) * 100.0 / LAG(COUNT(DISTINCT user_id)) OVER (ORDER BY event_type) as conversion_rate
|
|
633
|
+
FROM user_sessions
|
|
634
|
+
WHERE
|
|
635
|
+
events @> ['page_view'] -- Todos que viram a página
|
|
636
|
+
GROUP BY event_type
|
|
637
|
+
)
|
|
638
|
+
SELECT
|
|
639
|
+
event_type,
|
|
640
|
+
users,
|
|
641
|
+
ROUND(conversion_rate, 2) as conversion_rate
|
|
642
|
+
FROM conversion_funnel
|
|
643
|
+
ORDER BY
|
|
644
|
+
CASE event_type
|
|
645
|
+
WHEN 'page_view' THEN 1
|
|
646
|
+
WHEN 'add_to_cart' THEN 2
|
|
647
|
+
WHEN 'begin_checkout' THEN 3
|
|
648
|
+
WHEN 'purchase' THEN 4
|
|
649
|
+
END;
|
|
650
|
+
```
|
|
651
|
+
|
|
652
|
+
---
|
|
653
|
+
|
|
654
|
+
## Exemplo 5: Sistema Financeiro
|
|
655
|
+
|
|
656
|
+
### Contexto
|
|
657
|
+
Sistema financeiro com contas, transações e auditoria.
|
|
658
|
+
|
|
659
|
+
### Escolha do Banco
|
|
660
|
+
- **PostgreSQL** - ACID e extensões financeiras
|
|
661
|
+
- **Criptografia** - Dados sensíveis
|
|
662
|
+
- **Auditoria** - Logs completos
|
|
663
|
+
|
|
664
|
+
### Schema Principal
|
|
665
|
+
|
|
666
|
+
#### Accounts Table
|
|
667
|
+
```sql
|
|
668
|
+
CREATE TABLE accounts (
|
|
669
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
670
|
+
user_id UUID NOT NULL REFERENCES users(id) ON DELETE RESTRICT,
|
|
671
|
+
account_number VARCHAR(20) NOT NULL UNIQUE,
|
|
672
|
+
type VARCHAR(20) NOT NULL, -- checking, savings, credit
|
|
673
|
+
balance DECIMAL(15,2) NOT NULL DEFAULT 0,
|
|
674
|
+
currency VARCHAR(3) NOT NULL DEFAULT 'BRL',
|
|
675
|
+
status VARCHAR(20) NOT NULL DEFAULT 'active',
|
|
676
|
+
metadata JSONB DEFAULT '{}',
|
|
677
|
+
created_at TIMESTAMP WITH DEFAULT CURRENT_TIMESTAMP,
|
|
678
|
+
updated_at TIMESTAMP WITH DEFAULT CURRENT_TIMESTAMP
|
|
679
|
+
);
|
|
680
|
+
|
|
681
|
+
-- Índices
|
|
682
|
+
CREATE INDEX idx_accounts_user ON accounts(user_id);
|
|
683
|
+
CREATE INDEX idx_accounts_number ON accounts(account_number);
|
|
684
|
+
CREATE INDEX idx_accounts_type ON accounts(type);
|
|
685
|
+
CREATE INDEX idx_accounts_status ON accounts(status);
|
|
686
|
+
```
|
|
687
|
+
|
|
688
|
+
#### Transactions Table
|
|
689
|
+
```sql
|
|
690
|
+
CREATE TABLE transactions (
|
|
691
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
692
|
+
account_id UUID NOT NULL REFERENCES accounts(id) ON DELETE RESTRICT,
|
|
693
|
+
type VARCHAR(20) NOT NULL, -- debit, credit, transfer
|
|
694
|
+
amount DECIMAL(15,2) NOT NULL,
|
|
695
|
+
description TEXT,
|
|
696
|
+
reference_id UUID, -- Para transferências
|
|
697
|
+
metadata JSONB DEFAULT '{}',
|
|
698
|
+
status VARCHAR(20) NOT NULL DEFAULT 'pending',
|
|
699
|
+
created_at TIMESTAMP WITH DEFAULT CURRENT_TIMESTAMP,
|
|
700
|
+
updated_at TIMESTAMP WITH DEFAULT CURRENT_TIMESTAMP
|
|
701
|
+
);
|
|
702
|
+
|
|
703
|
+
-- Índices
|
|
704
|
+
CREATE INDEX idx_transactions_account ON transactions(account_id);
|
|
705
|
+
CREATE INDEX idx_transactions_type ON transactions(type);
|
|
706
|
+
CREATE INDEX idx_transactions_status ON transactions(status);
|
|
707
|
+
CREATE INDEX idx_transactions_created ON transactions(created_at);
|
|
708
|
+
CREATE INDEX idx_transactions_reference ON transactions(reference_id);
|
|
709
|
+
```
|
|
710
|
+
|
|
711
|
+
#### Audit Log Table
|
|
712
|
+
```sql
|
|
713
|
+
CREATE TABLE audit_log (
|
|
714
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
715
|
+
table_name VARCHAR(255) NOT NULL,
|
|
716
|
+
operation VARCHAR(10) NOT NULL, -- INSERT, UPDATE, DELETE
|
|
717
|
+
record_id UUID NOT NULL,
|
|
718
|
+
old_values JSONB,
|
|
719
|
+
new_values JSONB,
|
|
720
|
+
user_id UUID REFERENCES users(id),
|
|
721
|
+
ip_address INET,
|
|
722
|
+
user_agent TEXT,
|
|
723
|
+
created_at TIMESTAMP WITH DEFAULT CURRENT_TIMESTAMP
|
|
724
|
+
);
|
|
725
|
+
|
|
726
|
+
-- Índices
|
|
727
|
+
CREATE INDEX idx_audit_log_table ON audit_log(table_name);
|
|
728
|
+
CREATE INDEX idx_audit_log_record ON audit_log(record_id);
|
|
729
|
+
CREATE INDEX idx_audit_log_user ON audit_log(user_id);
|
|
730
|
+
CREATE INDEX idx_audit_log_created ON audit_log(created_at);
|
|
731
|
+
```
|
|
732
|
+
|
|
733
|
+
### Queries Financeiras
|
|
734
|
+
|
|
735
|
+
#### Extrato da Conta
|
|
736
|
+
```sql
|
|
737
|
+
-- Extrato com saldo acumulado
|
|
738
|
+
WITH transaction_balances AS (
|
|
739
|
+
SELECT
|
|
740
|
+
id,
|
|
741
|
+
account_id,
|
|
742
|
+
type,
|
|
743
|
+
amount,
|
|
744
|
+
description,
|
|
745
|
+
created_at,
|
|
746
|
+
SUM(CASE WHEN type = 'credit' THEN amount ELSE -amount END)
|
|
747
|
+
OVER (PARTITION BY account_id ORDER BY created_at) as running_balance
|
|
748
|
+
FROM transactions
|
|
749
|
+
WHERE
|
|
750
|
+
account_id = :account_id
|
|
751
|
+
AND status = 'completed'
|
|
752
|
+
)
|
|
753
|
+
SELECT
|
|
754
|
+
id,
|
|
755
|
+
type,
|
|
756
|
+
amount,
|
|
757
|
+
description,
|
|
758
|
+
running_balance,
|
|
759
|
+
created_at
|
|
760
|
+
FROM transaction_balances
|
|
761
|
+
ORDER BY created_at DESC;
|
|
762
|
+
```
|
|
763
|
+
|
|
764
|
+
#### Relatório Financeiro
|
|
765
|
+
```sql
|
|
766
|
+
-- Relatório mensal por tipo de transação
|
|
767
|
+
SELECT
|
|
768
|
+
DATE_TRUNC('month', created_at) as month,
|
|
769
|
+
type,
|
|
770
|
+
COUNT(*) as transaction_count,
|
|
771
|
+
SUM(CASE WHEN type = 'credit' THEN amount ELSE 0 END) as total_credits,
|
|
772
|
+
SUM(CASE WHEN type = 'debit' THEN amount ELSE 0 END) as total_debits,
|
|
773
|
+
SUM(CASE WHEN type = 'credit' THEN amount ELSE -amount END) as net_amount
|
|
774
|
+
FROM transactions
|
|
775
|
+
WHERE
|
|
776
|
+
status = 'completed'
|
|
777
|
+
AND created_at >= CURRENT_DATE - INTERVAL '12 months'
|
|
778
|
+
GROUP BY
|
|
779
|
+
DATE_TRUNC('month', created_at),
|
|
780
|
+
type
|
|
781
|
+
ORDER BY month DESC, type;
|
|
782
|
+
```
|
|
783
|
+
|
|
784
|
+
---
|
|
785
|
+
|
|
786
|
+
## Padrões e Melhores Práticas
|
|
787
|
+
|
|
788
|
+
### 1. Naming Conventions
|
|
789
|
+
- **Tables:** snake_case plural (users, orders, products)
|
|
790
|
+
- **Columns:** snake_case (created_at, user_id, first_name)
|
|
791
|
+
- **Indexes:** idx_[table]_[columns] (idx_users_email)
|
|
792
|
+
- **Constraints:** pk_[table], uk_[table]_[column], fk_[table]_[reference]
|
|
793
|
+
|
|
794
|
+
### 2. Data Types
|
|
795
|
+
- **IDs:** UUID para novas tabelas
|
|
796
|
+
- **Timestamps:** TIMESTAMP WITH TIME ZONE
|
|
797
|
+
- **JSON:** JSONB para dados estruturados
|
|
798
|
+
- **Money:** DECIMAL(15,2) para valores monetários
|
|
799
|
+
|
|
800
|
+
### 3. Performance
|
|
801
|
+
- **Índices:** Para WHERE, JOIN, ORDER BY
|
|
802
|
+
- **Covering Indexes:** Incluir colunas do SELECT
|
|
803
|
+
- **Partial Indexes:** Para subsets de dados
|
|
804
|
+
- **Partitioning:** Para tabelas grandes
|
|
805
|
+
|
|
806
|
+
### 4. Segurança
|
|
807
|
+
- **Soft Deletes:** deleted_at em vez de DELETE
|
|
808
|
+
- **Row Level Security:** Para acesso granular
|
|
809
|
+
- **Encryption:** Para dados sensíveis
|
|
810
|
+
- **Audit Trail:** Registrar mudanças
|
|
811
|
+
|
|
812
|
+
### 5. Migrações
|
|
813
|
+
- **Zero-Downtime:** Usar CONCURRENTLY
|
|
814
|
+
- **Backward Compatible:** Não quebrar código existente
|
|
815
|
+
- **Rollback:** Sempre ter rollback
|
|
816
|
+
- **Testing:** Validar em staging
|
|
817
|
+
|
|
818
|
+
---
|
|
819
|
+
|
|
820
|
+
## Ferramentas Úteis
|
|
821
|
+
|
|
822
|
+
### Diagramação
|
|
823
|
+
- **dbdiagram.io:** Diagramas online
|
|
824
|
+
- **Draw.io:** Diagramas visuais
|
|
825
|
+
- **PlantUML:** Diagramas de texto
|
|
826
|
+
- **Mermaid:** Diagramas em Markdown
|
|
827
|
+
|
|
828
|
+
### Testing
|
|
829
|
+
- **pgTAP:** Testes unitários PostgreSQL
|
|
830
|
+
- **Factory Boy:** Dados de teste
|
|
831
|
+
- **Faker:** Dados falsos
|
|
832
|
+
- **TestContainers:** Banco em container
|
|
833
|
+
|
|
834
|
+
### Monitoring
|
|
835
|
+
- **pg_stat_statements:** Queries lentas
|
|
836
|
+
- **pg_stat_activity:** Conexões ativas
|
|
837
|
+
- **pg_stat_user_indexes:** Uso de índices
|
|
838
|
+
- **EXPLAIN ANALYZE:** Plano de execução
|
|
839
|
+
|
|
840
|
+
---
|
|
841
|
+
|
|
842
|
+
## Referências
|
|
843
|
+
|
|
844
|
+
### Documentação
|
|
845
|
+
- **PostgreSQL:** [postgresql.org/docs](https://postgresql.org/docs/)
|
|
846
|
+
- **MySQL:** [dev.mysql.com/doc](https://dev.mysql.com/doc/)
|
|
847
|
+
- **MongoDB:** [docs.mongodb.com](https://docs.mongodb.com/)
|
|
848
|
+
|
|
849
|
+
### Livros
|
|
850
|
+
- **Database Design:** "Database Design for Mere Mortals"
|
|
851
|
+
- **Performance:** "High Performance MySQL"
|
|
852
|
+
- **PostgreSQL:** "PostgreSQL 14 Internals"
|
|
853
|
+
|
|
854
|
+
### Blogs
|
|
855
|
+
- **Planet PostgreSQL:** planet.postgresql.org
|
|
856
|
+
- **MySQL Performance Blog:** www.percona.com/blog
|
|
857
|
+
- **Database Weekly:** www.dbweekly.com
|