@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,1126 @@
|
|
|
1
|
+
# Guia de Modelagem de Domínio
|
|
2
|
+
|
|
3
|
+
**Versão:** 1.0
|
|
4
|
+
**Data:** [DATA]
|
|
5
|
+
**Status:** [RASCUNHO/REVISÃO/APROVADO]
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 🎯 **Objetivo**
|
|
10
|
+
|
|
11
|
+
Este guia fornece um framework completo para modelagem de domínio usando Domain-Driven Design (DDD), permitindo criar modelos de negócio robustos, regras de negócio claras e arquitetura escalável.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## 📋 **Contexto**
|
|
16
|
+
|
|
17
|
+
**Especialista Responsável:** Modelagem e Arquitetura de Domínio com IA
|
|
18
|
+
**Fase:** 4 - Modelo de Domínio
|
|
19
|
+
**Artefatos Anteriores:** Requisitos, Design Doc
|
|
20
|
+
**Próximos Artefatos:** Modelo de Domínio, Arquitetura
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## 🔄 **Metodologia DDD**
|
|
25
|
+
|
|
26
|
+
### **Princípios Fundamentais**
|
|
27
|
+
- **Ubiquitous Language:** Linguagem ubíqua do negócio
|
|
28
|
+
- **Bounded Contexts:** Contextos delimitados
|
|
29
|
+
- **Aggregates:** Raízes de consistência
|
|
30
|
+
- **Entities:** Objetos com identidade
|
|
31
|
+
- **Value Objects:** Objetos sem identidade
|
|
32
|
+
- **Domain Events:** Eventos de domínio
|
|
33
|
+
|
|
34
|
+
### **Fluxo de Trabalho**
|
|
35
|
+
```
|
|
36
|
+
1. Exploração do Domínio (1-2 dias)
|
|
37
|
+
2. Identificação de Entidades (1 dia)
|
|
38
|
+
3. Definição de Contextos (1 dia)
|
|
39
|
+
4. Modelagem de Agregregados (2 dias)
|
|
40
|
+
5. Especificação de Serviços (2 dias)
|
|
41
|
+
6. Validação com Stakeholders (1 dia)
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## 📚 **Estrutura do Guia**
|
|
47
|
+
|
|
48
|
+
### **1. Exploração do Domínio**
|
|
49
|
+
|
|
50
|
+
#### **Workshop de Descoberta**
|
|
51
|
+
```markdown
|
|
52
|
+
## Workshop de Descoberta de Domínio
|
|
53
|
+
|
|
54
|
+
### Participantes
|
|
55
|
+
- **Domain Experts:** [Lista de especialistas do negócio]
|
|
56
|
+
- **Product Manager:** [Nome]
|
|
57
|
+
- **UX Designer:** [Nome]
|
|
58
|
+
- **Tech Lead:** [Nome]
|
|
59
|
+
- **Developers:** [Lista de desenvolvedores]
|
|
60
|
+
|
|
61
|
+
### Agenda
|
|
62
|
+
#### Dia 1: Exploração
|
|
63
|
+
- **9:00-10:00:** Introdução e objetivos
|
|
64
|
+
- **10:00-11:00:** Brainstorm de conceitos
|
|
65
|
+
- **11:00-12:00:** Mapeamento de entidades
|
|
66
|
+
- **14:00-15:00:** Identificação de relacionamentos
|
|
67
|
+
- **15:00-16:00:** Definição de linguagem ubíqua
|
|
68
|
+
|
|
69
|
+
#### Dia 2: Refinamento
|
|
70
|
+
- **9:00-10:00:** Revisão do mapeamento
|
|
71
|
+
- **10:00-11:00:** Definição de bounded contexts
|
|
72
|
+
- **11:00-12:00:** Identificação de aggregates
|
|
73
|
+
- **14:00-15:00:** Modelagem de eventos
|
|
74
|
+
- **15:00-16:00:** Consolidação e próximos passos
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
#### **Técnicas de Exploração**
|
|
78
|
+
```markdown
|
|
79
|
+
### Event Storming
|
|
80
|
+
**Objetivo:** Descobrir eventos de domínio
|
|
81
|
+
|
|
82
|
+
**Setup:**
|
|
83
|
+
- Sala com whiteboards
|
|
84
|
+
- Post-its coloridos
|
|
85
|
+
- Marcadores diferentes para cada tipo
|
|
86
|
+
|
|
87
|
+
**Processo:**
|
|
88
|
+
1. **Eventos de Negócio:** "Quando [ator] [ação], então [resultado]"
|
|
89
|
+
2. **Comandos do Usuário:** "Como [usuário], quero [ação]"
|
|
90
|
+
3. **Eventos de Sistema:** "Quando [condição], então [ação]"
|
|
91
|
+
4. **Leitura:** Ler eventos em voz alta
|
|
92
|
+
5. **Agrupamento:** Agrupar eventos similares
|
|
93
|
+
|
|
94
|
+
### Domain Storytelling
|
|
95
|
+
**Objetivo:** Criar narrativas do domínio
|
|
96
|
+
|
|
97
|
+
**Estrutura:**
|
|
98
|
+
- **Personas:** Quem são os atores no domínio?
|
|
99
|
+
- **Atividades:** O que eles fazem?
|
|
100
|
+
- **Regras:** Quais são as regras do negócio?
|
|
101
|
+
- **Objetivos:** Quais são os objetivos deles?
|
|
102
|
+
|
|
103
|
+
### CRC Cards
|
|
104
|
+
**Objetivo:** Modelar responsabilidades
|
|
105
|
+
|
|
106
|
+
**Componentes:**
|
|
107
|
+
- **C (Class):** Nome da classe/entidade
|
|
108
|
+
- **R (Responsibility):** O que a classe faz?
|
|
109
|
+
- **C (Collaboration):** Com quem ela colabora?
|
|
110
|
+
- **I (Inheritance):** De quem ela herda?
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### **2. Identificação de Entidades**
|
|
114
|
+
|
|
115
|
+
#### **Critérios de Entidade**
|
|
116
|
+
```markdown
|
|
117
|
+
## Critérios de Identificação de Entidades
|
|
118
|
+
|
|
119
|
+
### Características de uma Entidade
|
|
120
|
+
- **Identidade Única:** Possui identificador único
|
|
121
|
+
- **Ciclo de Vida:** Tem estado mutável
|
|
122
|
+
- **Continuidade:** Existe ao longo do tempo
|
|
123
|
+
- **Responsabilidades:** Tem comportamentos próprios
|
|
124
|
+
- **Relacionamentos:** Se relaciona com outras entidades
|
|
125
|
+
|
|
126
|
+
### Exemplos de Entidades
|
|
127
|
+
- **Cliente:** Pessoa física ou jurídica
|
|
128
|
+
- **Pedido:** Solicitação de compra
|
|
129
|
+
- **Produto:** Item disponível para venda
|
|
130
|
+
- **Pagamento:** Transação financeira
|
|
131
|
+
- **Usuário:** Pessoa com acesso ao sistema
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
#### **Template de Entidade**
|
|
135
|
+
```typescript
|
|
136
|
+
// Template para modelagem de entidade
|
|
137
|
+
interface Entity {
|
|
138
|
+
id: string; // Identificador único
|
|
139
|
+
createdAt: Date; // Data de criação
|
|
140
|
+
updatedAt: Date; // Data de atualização
|
|
141
|
+
|
|
142
|
+
// Propriedades específicas
|
|
143
|
+
[propriedade1]: [tipo];
|
|
144
|
+
[propriedade2]: [tipo];
|
|
145
|
+
[propriedade3]: [tipo];
|
|
146
|
+
|
|
147
|
+
// Comportamentos
|
|
148
|
+
[metodo1](): [retorno];
|
|
149
|
+
[metodo2](): [retorno];
|
|
150
|
+
|
|
151
|
+
// Relacionamentos
|
|
152
|
+
[relacionamento1]: [tipo];
|
|
153
|
+
[relacionamento2]: [tipo];
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
// Exemplo: Cliente
|
|
157
|
+
interface Cliente extends Entity {
|
|
158
|
+
nome: string;
|
|
159
|
+
email: string;
|
|
160
|
+
cpf: string;
|
|
161
|
+
dataNascimento: Date;
|
|
162
|
+
endereco: Endereco;
|
|
163
|
+
telefones: Telefone[];
|
|
164
|
+
|
|
165
|
+
// Comportamentos
|
|
166
|
+
atualizarEndereco(endereco: Endereco): void;
|
|
167
|
+
adicionarTelefone(telefone: Telefone): void;
|
|
168
|
+
validarCPF(): boolean;
|
|
169
|
+
|
|
170
|
+
// Relacionamentos
|
|
171
|
+
pedidos: Pedido[];
|
|
172
|
+
pagamentos: Pagamento[];
|
|
173
|
+
}
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### **3. Definição de Contextos Delimitados**
|
|
177
|
+
|
|
178
|
+
#### **Critérios de Bounded Context**
|
|
179
|
+
```markdown
|
|
180
|
+
## Critérios de Bounded Context
|
|
181
|
+
|
|
182
|
+
### Características
|
|
183
|
+
- **Fronteira Clara:** Limites bem definidos
|
|
184
|
+
- **Linguagem Ubíqua:** Terminologia do negócio
|
|
185
|
+
- **Autonomia:** Auto-suficiente
|
|
186
|
+
- **Consistência:** Internamente consistente
|
|
187
|
+
- **Tamanho Adequado:** Nem muito grande nem muito pequeno
|
|
188
|
+
|
|
189
|
+
### Padrões de Nomenclatura
|
|
190
|
+
- **Context:** [NomeDoContexto]Context
|
|
191
|
+
- **Entidades:** PascalCase
|
|
192
|
+
- **Value Objects:** PascalCase
|
|
193
|
+
- **Enums:** PascalCase
|
|
194
|
+
- **Serviços:** PascalCase + "Service"
|
|
195
|
+
- **Repositórios:** PascalCase + "Repository"
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
#### **Exemplos de Contextos**
|
|
199
|
+
```markdown
|
|
200
|
+
### Contexto: Vendas
|
|
201
|
+
**Descrição:** Gerenciamento de vendas e pedidos
|
|
202
|
+
**Entidades:** Cliente, Pedido, Produto, Pagamento
|
|
203
|
+
**Serviços:** PedidoService, ProdutoService
|
|
204
|
+
**Eventos:** PedidoCriado, PedidoCancelado, PagamentoProcessado
|
|
205
|
+
|
|
206
|
+
### Contexto: Catálogo
|
|
207
|
+
**Descrição:** Gestão de produtos e estoque
|
|
208
|
+
**Entidades:** Produto, Categoria, Fornecedor, Estoque
|
|
209
|
+
**Serviços:** ProdutoService, EstoqueService
|
|
210
|
+
**Eventos:** ProdutoAdicionado, EstoqueBaixo, PreçoAlterado
|
|
211
|
+
|
|
212
|
+
### Contexto: Usuários
|
|
213
|
+
**Descrição:** Gestão de contas e permissões
|
|
214
|
+
**Entidades:** Usuário, Perfil, Permissão
|
|
215
|
+
**Serviços:** UserService, AutenticacaoService
|
|
216
|
+
**Eventos:** UsuarioCriado, PerfilAtualizado, PermissaoConcedida
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
#### **Estrutura do Contexto**
|
|
220
|
+
```typescript
|
|
221
|
+
// Estrutura de um Bounded Context
|
|
222
|
+
interface BoundedContext {
|
|
223
|
+
// Entidades raiz
|
|
224
|
+
[entidade1]: [tipo];
|
|
225
|
+
[entidade2]: [tipo];
|
|
226
|
+
|
|
227
|
+
// Agregates raiz
|
|
228
|
+
[aggregate1]: [tipo];
|
|
229
|
+
[aggregate2]: [tipo];
|
|
230
|
+
|
|
231
|
+
// Serviços do domínio
|
|
232
|
+
[servico1]: [tipo];
|
|
233
|
+
[servico2]: [tipo];
|
|
234
|
+
|
|
235
|
+
// Eventos do domínio
|
|
236
|
+
[evento1]: [tipo];
|
|
237
|
+
[evento2]: [tipo];
|
|
238
|
+
|
|
239
|
+
// Interfaces de repositórios
|
|
240
|
+
[repositorio1]: [tipo];
|
|
241
|
+
[repositorio2]: [tipo];
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
// Exemplo: VendasContext
|
|
245
|
+
interface VendasContext {
|
|
246
|
+
// Entidades
|
|
247
|
+
Cliente: Cliente;
|
|
248
|
+
Pedido: Pedido;
|
|
249
|
+
Produto: Produto;
|
|
250
|
+
Pagamento: Pagamento;
|
|
251
|
+
|
|
252
|
+
// Aggregates
|
|
253
|
+
Carrinho: Carrinho;
|
|
254
|
+
OrdemCompra: OrdemCompra;
|
|
255
|
+
|
|
256
|
+
// Serviços
|
|
257
|
+
PedidoService: PedidoService;
|
|
258
|
+
ProdutoService: ProdutoService;
|
|
259
|
+
PagamentoService: PagamentoService;
|
|
260
|
+
|
|
261
|
+
// Eventos
|
|
262
|
+
PedidoCriado: PedidoCriado;
|
|
263
|
+
PedidoCancelado: PedidoCancelado;
|
|
264
|
+
PagamentoAprovado: PagamentoAprovado;
|
|
265
|
+
|
|
266
|
+
// Repositórios
|
|
267
|
+
PedidoRepository: PedidoRepository;
|
|
268
|
+
ProdutoRepository: ProdutoRepository;
|
|
269
|
+
ClienteRepository: ClienteRepository;
|
|
270
|
+
}
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
### **4. Modelagem de Agregregates**
|
|
274
|
+
|
|
275
|
+
#### **Critérios de Aggregate**
|
|
276
|
+
```markdown
|
|
277
|
+
## Critérios de Aggregate
|
|
278
|
+
|
|
279
|
+
### Características
|
|
280
|
+
- **Raiz de Consistência:** Garante regras de negócio
|
|
281
|
+
- **Transações:** Suporta transações atômicas
|
|
282
|
+
- **Event Sourcing:** Gera eventos de domínio
|
|
283
|
+
- **Identidade Global:** Possui ID global único
|
|
284
|
+
- **Imutabilidade:** Histórico imutável
|
|
285
|
+
|
|
286
|
+
### Padrões de Agregregados
|
|
287
|
+
```markdown
|
|
288
|
+
### Aggregate Root
|
|
289
|
+
- **ID Global:** Identificador único do aggregate
|
|
290
|
+
- **Version:** Versão para otimização concorrente
|
|
291
|
+
- **Timestamp:** Timestamp da última atualização
|
|
292
|
+
|
|
293
|
+
### Entity References
|
|
294
|
+
- **ID Local:** Referências locais a entidades
|
|
295
|
+
- **ID Global:** Referências a outros aggregates
|
|
296
|
+
- **Value Objects:** Objetos imutáveis
|
|
297
|
+
|
|
298
|
+
### Event Generation
|
|
299
|
+
- **Domain Events:** Eventos públicos do domínio
|
|
300
|
+
- **Event Store:** Armazenamento de eventos
|
|
301
|
+
- **Snapshot:** Estado atual do aggregate
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
#### **Template de Aggregate**
|
|
305
|
+
```typescript
|
|
306
|
+
// Template para modelagem de aggregate
|
|
307
|
+
interface AggregateRoot {
|
|
308
|
+
id: string;
|
|
309
|
+
version: number;
|
|
310
|
+
timestamp: Date;
|
|
311
|
+
|
|
312
|
+
// Métodos de negócio
|
|
313
|
+
[metodo1](parametros: [tipo]): [retorno];
|
|
314
|
+
[metodo2](parametros: [tipo]): [retorno];
|
|
315
|
+
|
|
316
|
+
// Geração de eventos
|
|
317
|
+
private events: DomainEvent[];
|
|
318
|
+
|
|
319
|
+
protected addEvent(event: DomainEvent): void;
|
|
320
|
+
protected getUncommittedEvents(): DomainEvent[];
|
|
321
|
+
protected markEventsAsCommitted(): void;
|
|
322
|
+
|
|
323
|
+
// Validação de invariantes
|
|
324
|
+
protected abstract validateInvariants(): void;
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
// Exemplo: Pedido
|
|
328
|
+
class Pedido extends AggregateRoot {
|
|
329
|
+
private _id: string;
|
|
330
|
+
private _clienteId: string;
|
|
331
|
+
private _itens: ItemPedido[];
|
|
332
|
+
private _status: StatusPedido;
|
|
333
|
+
private _total: number;
|
|
334
|
+
private _timestamp: Date;
|
|
335
|
+
|
|
336
|
+
constructor(id: string, clienteId: string) {
|
|
337
|
+
super();
|
|
338
|
+
this._id = id;
|
|
339
|
+
this._clienteId = clienteId;
|
|
340
|
+
this._itens = [];
|
|
341
|
+
this._status = StatusPedido.CRIADO;
|
|
342
|
+
this._total = 0;
|
|
343
|
+
this._timestamp = new Date();
|
|
344
|
+
this.validateInvariants();
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
// Comportamentos
|
|
348
|
+
adicionarItem(produtoId: string, quantidade: number, preco: number): void {
|
|
349
|
+
const item = new ItemPedido(produtoId, quantidade, preco);
|
|
350
|
+
this._itens.push(item);
|
|
351
|
+
this._total += item.subtotal();
|
|
352
|
+
this.addEvent(new ItemAdicionado(this._id, produtoId, quantidade, preco));
|
|
353
|
+
this.validateInvariants();
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
removerItem(itemId: string): void {
|
|
357
|
+
const item = this._itens.find(item => item.id === itemId);
|
|
358
|
+
if (!item) return;
|
|
359
|
+
|
|
360
|
+
this._itens = this._itens.filter(item => item.id !== itemId);
|
|
361
|
+
this._total -= item.subtotal();
|
|
362
|
+
this.addEvent(new ItemRemovido(this._id, itemId));
|
|
363
|
+
this.validateInvariants();
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
atualizarStatus(status: StatusPedido): void {
|
|
367
|
+
if (this._status === status) return;
|
|
368
|
+
|
|
369
|
+
const statusAnterior = this._status;
|
|
370
|
+
this._status = status;
|
|
371
|
+
this._timestamp = new Date();
|
|
372
|
+
|
|
373
|
+
this.addEvent(new StatusPedidoAlterado(this._id, statusAnterior, status));
|
|
374
|
+
this.validateInvariants();
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
// Validação de invariantes
|
|
378
|
+
protected validateInvariants(): void {
|
|
379
|
+
if (this._itens.length === 0 && this._status === StatusPedido.CONFIRMADO) {
|
|
380
|
+
throw new Error('Pedido confirmado não pode estar vazio');
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
if (this._total < 0) {
|
|
384
|
+
throw new Error('Total do pedido não pode ser negativo');
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
if (this._clienteId === '') {
|
|
388
|
+
throw new Error('Pedido deve ter um cliente');
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
// Getters
|
|
393
|
+
get id(): string { return this._id; }
|
|
394
|
+
get clienteId(): string { return this._id; }
|
|
395
|
+
get itens(): ItemPedido[] { return [...this._itens]; }
|
|
396
|
+
get status(): StatusPedido { return this._status; }
|
|
397
|
+
get total(): number { return this._total; }
|
|
398
|
+
get timestamp(): Date { return this._timestamp; }
|
|
399
|
+
}
|
|
400
|
+
```
|
|
401
|
+
|
|
402
|
+
### **5. Value Objects**
|
|
403
|
+
|
|
404
|
+
#### **Critérios de Value Object**
|
|
405
|
+
```markdown
|
|
406
|
+
## Critérios de Value Object
|
|
407
|
+
|
|
408
|
+
### Características
|
|
409
|
+
- **Imutabilidade:** Não pode ser modificado após criação
|
|
410
|
+
- **Validação:** Validação no construtor
|
|
411
|
+
- **Igualdade:** Baseado em valores, não identidade
|
|
412
|
+
- **Sem Side Effects:** Não causa efeitos colaterais
|
|
413
|
+
- **Composição:** Pode ser composto de outros VOs
|
|
414
|
+
|
|
415
|
+
### Exemplos de Value Objects
|
|
416
|
+
```markdown
|
|
417
|
+
### Exemplos Comuns
|
|
418
|
+
- **Endereço:** Rua, número, cidade, estado, CEP
|
|
419
|
+
- **Dinheiro:** Valor monetário com moeda
|
|
420
|
+
- **CPF:** Número de CPF formatado
|
|
421
|
+
- **Email:** Endereço de email validado
|
|
422
|
+
- **Telefone:** Número de telefone formatado
|
|
423
|
+
- **Período:** Data inicial e final
|
|
424
|
+
```
|
|
425
|
+
|
|
426
|
+
#### **Template de Value Object**
|
|
427
|
+
```typescript
|
|
428
|
+
// Template para Value Object
|
|
429
|
+
class ValueObject {
|
|
430
|
+
// Propriedades imutáveis
|
|
431
|
+
readonly [propriedade1]: [tipo];
|
|
432
|
+
readonly [propriedade2]: [tipo];
|
|
433
|
+
|
|
434
|
+
// Construtor com validação
|
|
435
|
+
constructor(valor1: [tipo], valor2: [tipo]) {
|
|
436
|
+
this.validar(valor1, valor2);
|
|
437
|
+
this[propriedade1] = valor1;
|
|
438
|
+
this[propriedade2] = valor2;
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
// Validação no construtor
|
|
442
|
+
private validar(valor1: [tipo], valor2: [tipo]): void {
|
|
443
|
+
if ([condição de validação]) {
|
|
444
|
+
throw new Error('[mensagem de erro]');
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
// Métodos de negócio (se aplicável)
|
|
449
|
+
[metodo](): [retorno] {
|
|
450
|
+
// Lógica de negócio
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
// Igualdade baseada em valores
|
|
454
|
+
equals(other: [tipo]): boolean {
|
|
455
|
+
if (other === null) return false;
|
|
456
|
+
return (
|
|
457
|
+
this[propriedade1] === other[propriedade1] &&
|
|
458
|
+
this[propriedade2] === other[propriedade2]
|
|
459
|
+
);
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
// Representação em string
|
|
463
|
+
toString(): string {
|
|
464
|
+
return `${this[propriedade1]} ${this[propriedade2]}`;
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
// Exemplo: Endereco
|
|
469
|
+
class Endereco extends ValueObject {
|
|
470
|
+
readonly rua: string;
|
|
471
|
+
readonly numero: string;
|
|
472
|
+
readonly cidade: string;
|
|
473
|
+
readonly estado: string;
|
|
474
|
+
readonly cep: string;
|
|
475
|
+
|
|
476
|
+
constructor(rua: string, numero: string, cidade: string, estado: string, cep: string) {
|
|
477
|
+
this.validarFormato(cep);
|
|
478
|
+
this.rua = rua.trim();
|
|
479
|
+
this.numero = numero.trim();
|
|
480
|
+
this.cidade = cidade.trim();
|
|
481
|
+
this.estado = estado.trim();
|
|
482
|
+
this.cep = cep.trim();
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
private validarFormato(cep: string): void {
|
|
486
|
+
const cepRegex = /^\d{5}-\d{3}$/;
|
|
487
|
+
if (!cepRegex.test(cep)) {
|
|
488
|
+
throw new Error('CEP inválido');
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
// Métodos de negócio
|
|
493
|
+
get enderecoCompleto(): string {
|
|
494
|
+
return `${this.rua}, ${this.numero} - ${this.cidade}/${this.estado}, CEP: ${this.cep}`;
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
equals(outro: Endereco): boolean {
|
|
498
|
+
return (
|
|
499
|
+
this.rua === outro.rua &&
|
|
500
|
+
this.numero === outro.numero &&
|
|
501
|
+
this.cidade === outro.cidade &&
|
|
502
|
+
this.estado === outro.estado &&
|
|
503
|
+
this.cep === outro.cep
|
|
504
|
+
);
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
```
|
|
508
|
+
|
|
509
|
+
### **6. Domain Events**
|
|
510
|
+
|
|
511
|
+
#### **Características de Domain Events**
|
|
512
|
+
```markdown
|
|
513
|
+
## Características de Domain Events
|
|
514
|
+
|
|
515
|
+
### Propriedades
|
|
516
|
+
- **Imutáveis:** Não podem ser modificados
|
|
517
|
+
- **Timestamp:** Quando ocorreram
|
|
518
|
+
- **Source ID:** ID da entidade que gerou
|
|
519
|
+
- **Tipo:** Tipo do evento
|
|
520
|
+
- **Dados:** Payload do evento
|
|
521
|
+
- **Versão:** Versão do evento
|
|
522
|
+
|
|
523
|
+
### Padrões de Nomenclatura
|
|
524
|
+
- **Nome:** [Entidade][Ação]Past
|
|
525
|
+
- **Exemplos:** PedidoCriado, ClienteAtualizado, ProdutoRemovido
|
|
526
|
+
- **Convenção:** Use tempo passado simples
|
|
527
|
+
|
|
528
|
+
### Fluxo de Eventos
|
|
529
|
+
```markdown
|
|
530
|
+
### Geração de Eventos
|
|
531
|
+
1. **Disparo:** Entidade gera evento
|
|
532
|
+
2. **Armazenamento:** Evento é armazenado
|
|
533
|
+
3. **Publicação:** Evento é publicado
|
|
534
|
+
4 - **Local:** Dentro do contexto
|
|
535
|
+
- **Externo:** Para outros contextos
|
|
536
|
+
5 - **Assíncrono:** Para processamento imediato
|
|
537
|
+
5 - **Persistência:** Para armazenamento permanente
|
|
538
|
+
```
|
|
539
|
+
|
|
540
|
+
#### **Template de Domain Event**
|
|
541
|
+
```typescript
|
|
542
|
+
// Template para Domain Event
|
|
543
|
+
interface DomainEvent {
|
|
544
|
+
readonly id: string;
|
|
545
|
+
readonly timestamp: Date;
|
|
546
|
+
readonly aggregateId: string;
|
|
547
|
+
readonly eventType: string;
|
|
548
|
+
readonly version: number;
|
|
549
|
+
|
|
550
|
+
// Dados do evento
|
|
551
|
+
readonly [dado1]: [tipo];
|
|
552
|
+
readonly [dado2]: [tipo];
|
|
553
|
+
|
|
554
|
+
constructor(
|
|
555
|
+
aggregateId: string,
|
|
556
|
+
[dado1]: [tipo],
|
|
557
|
+
[dado2]: [tipo]
|
|
558
|
+
) {
|
|
559
|
+
this.id = generateId();
|
|
560
|
+
this.timestamp = new Date();
|
|
561
|
+
this.aggregateId = aggregateId;
|
|
562
|
+
this.eventType = this.constructor.name;
|
|
563
|
+
this.version = 1;
|
|
564
|
+
this[dado1] = [dado1];
|
|
565
|
+
this[dado2] = [dado2];
|
|
566
|
+
}
|
|
567
|
+
|
|
568
|
+
private generateId(): string {
|
|
569
|
+
return `${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
|
|
570
|
+
}
|
|
571
|
+
}
|
|
572
|
+
|
|
573
|
+
// Exemplo: PedidoCriado
|
|
574
|
+
class PedidoCriado extends DomainEvent {
|
|
575
|
+
readonly clienteId: string;
|
|
576
|
+
readonly itens: ItemPedido[];
|
|
577
|
+
readonly total: number;
|
|
578
|
+
|
|
579
|
+
constructor(
|
|
580
|
+
aggregateId: string,
|
|
581
|
+
clienteId: string,
|
|
582
|
+
itens: ItemPedido[],
|
|
583
|
+
total: number
|
|
584
|
+
) {
|
|
585
|
+
super(aggregateId, clienteId, itens, total);
|
|
586
|
+
}
|
|
587
|
+
}
|
|
588
|
+
|
|
589
|
+
// Exemplo: ItemAdicionado
|
|
590
|
+
class ItemAdicionado extends DomainEvent {
|
|
591
|
+
readonly pedidoId: string;
|
|
592
|
+
readonly produtoId: string;
|
|
593
|
+
readonly quantidade: number;
|
|
594
|
+
readonly preco: number;
|
|
595
|
+
|
|
596
|
+
constructor(
|
|
597
|
+
aggregateId: string,
|
|
598
|
+
pedidoId: string,
|
|
599
|
+
produtoId: string,
|
|
600
|
+
quantidade: number,
|
|
601
|
+
preco: number
|
|
602
|
+
) {
|
|
603
|
+
super(aggregateId, pedidoId, produtoId, quantidade, preco);
|
|
604
|
+
}
|
|
605
|
+
}
|
|
606
|
+
```
|
|
607
|
+
|
|
608
|
+
---
|
|
609
|
+
|
|
610
|
+
## 🎯 **Exemplos Práticos**
|
|
611
|
+
|
|
612
|
+
### **Exemplo 1: Sistema de E-commerce**
|
|
613
|
+
```markdown
|
|
614
|
+
# Modelo de Domínio: E-commerce
|
|
615
|
+
|
|
616
|
+
## Contextos Identificados
|
|
617
|
+
### 1. Vendas
|
|
618
|
+
- **Descrição:** Gestão de vendas e pedidos
|
|
619
|
+
- **Entidades:** Cliente, Pedido, Produto, Pagamento
|
|
620
|
+
- **Aggregates:** Carrinho, OrdemCompra
|
|
621
|
+
- **Serviços:** PedidoService, ProdutoService
|
|
622
|
+
|
|
623
|
+
### 2. Catálogo
|
|
624
|
+
- **Descrição:** Gestão de produtos e estoque
|
|
625
|
+
- **Entidades:** Produto, Categoria, Fornecedor, Estoque
|
|
626
|
+
- **Aggregates:** Catálogo
|
|
627
|
+
- **Serviços:** ProdutoService, EstoqueService
|
|
628
|
+
|
|
629
|
+
### 3. Usuários
|
|
630
|
+
- **Descrição:** Gestão de contas e permissões
|
|
631
|
+
- **Entidades:** Usuário, Perfil, Permissão
|
|
632
|
+
- **Aggregates:** Conta
|
|
633
|
+
- **Serviços:** UserService, AutenticacaoService
|
|
634
|
+
|
|
635
|
+
## Entidades Principais
|
|
636
|
+
### Cliente
|
|
637
|
+
```typescript
|
|
638
|
+
interface Cliente extends Entity {
|
|
639
|
+
id: string;
|
|
640
|
+
nome: string;
|
|
641
|
+
email: string;
|
|
642
|
+
cpf: string;
|
|
643
|
+
dataNascimento: Date;
|
|
644
|
+
endereco: Endereco;
|
|
645
|
+
telefones: Telefone[];
|
|
646
|
+
|
|
647
|
+
// Comportamentos
|
|
648
|
+
atualizarEndereco(endereco: Endereco): void;
|
|
649
|
+
adicionarTelefone(telefone: Telefone): void;
|
|
650
|
+
validarCPF(): boolean;
|
|
651
|
+
}
|
|
652
|
+
```
|
|
653
|
+
|
|
654
|
+
### Pedido
|
|
655
|
+
```typescript
|
|
656
|
+
interface Pedido extends AggregateRoot {
|
|
657
|
+
id: string;
|
|
658
|
+
clienteId: string;
|
|
659
|
+
itens: ItemPedido[];
|
|
660
|
+
status: StatusPedido;
|
|
661
|
+
total: number;
|
|
662
|
+
dataCriacao: Date;
|
|
663
|
+
dataAtualizacao: Date;
|
|
664
|
+
|
|
665
|
+
// Comportamentos
|
|
666
|
+
adicionarItem(produtoId: string, quantidade: number, preco: number): void;
|
|
667
|
+
removerItem(itemId: string): void;
|
|
668
|
+
atualizarStatus(status: StatusPedido): void;
|
|
669
|
+
calcularTotal(): void;
|
|
670
|
+
}
|
|
671
|
+
```
|
|
672
|
+
|
|
673
|
+
### Produto
|
|
674
|
+
```typescript
|
|
675
|
+
interface Produto extends Entity {
|
|
676
|
+
id: string;
|
|
677
|
+
nome: string;
|
|
678
|
+
descricao: string;
|
|
679
|
+
preco: Dinheiro;
|
|
680
|
+
categoria: Categoria;
|
|
681
|
+
estoque: Estoque;
|
|
682
|
+
fornecedor: Fornecedor;
|
|
683
|
+
ativo: boolean;
|
|
684
|
+
dataCriacao: Date;
|
|
685
|
+
dataAtualizacao: Date;
|
|
686
|
+
|
|
687
|
+
// Comportamentos
|
|
688
|
+
atualizarPreco(preco: Dinheiro): void;
|
|
689
|
+
verificarDisponibilidade(): boolean;
|
|
690
|
+
aplicarDesconto(percentual: number): Dinheiro;
|
|
691
|
+
}
|
|
692
|
+
```
|
|
693
|
+
|
|
694
|
+
## Agregrates Principais
|
|
695
|
+
### Carrinho
|
|
696
|
+
```typescript
|
|
697
|
+
class Carrinho extends AggregateRoot {
|
|
698
|
+
private _id: string;
|
|
699
|
+
private _clienteId: string;
|
|
700
|
+
private _itens: ItemCarrinho[];
|
|
701
|
+
private _status: StatusCarrinho;
|
|
702
|
+
private _timestamp: Date;
|
|
703
|
+
|
|
704
|
+
adicionarProduto(produtoId: string, quantidade: number): void;
|
|
705
|
+
removerProduto(produtoId: string): void;
|
|
706
|
+
limpar(): void;
|
|
707
|
+
calcularTotal(): Dinheiro;
|
|
708
|
+
finalizar(): Pedido;
|
|
709
|
+
}
|
|
710
|
+
```
|
|
711
|
+
|
|
712
|
+
### OrdemCompra
|
|
713
|
+
```typescript
|
|
714
|
+
class OrdemCompra extends AggregateRoot {
|
|
715
|
+
private _id: string;
|
|
716
|
+
private _carrinhoId: string;
|
|
717
|
+
private _enderecoEntrega: Endereco;
|
|
718
|
+
private _metodoPagamento: MetodoPagamento;
|
|
719
|
+
private _status: StatusOrdem;
|
|
720
|
+
private _timestamp: Date;
|
|
721
|
+
|
|
722
|
+
finalizar(): Pedido;
|
|
723
|
+
atualizarEndereco(endereco: Endereco): void;
|
|
724
|
+
selecionarMetodoPagamento(metodo: MetodoPagamento): void;
|
|
725
|
+
processarPagamento(): void;
|
|
726
|
+
}
|
|
727
|
+
```
|
|
728
|
+
|
|
729
|
+
## Serviços de Domínio
|
|
730
|
+
### PedidoService
|
|
731
|
+
```typescript
|
|
732
|
+
interface PedidoService {
|
|
733
|
+
criarPedido(clienteId: string, itens: ItemCarrinho[]): Promise<Pedido>;
|
|
734
|
+
atualizarPedido(pedidoId: string, dados: Partial<Pedido>): Promise<Pedido>;
|
|
735
|
+
cancelarPedido(pedidoId: string): Promise<void>;
|
|
736
|
+
buscarPedido(pedidoId: string): Promise<Pedido>;
|
|
737
|
+
listarPedidos(clienteId: string): Promise<Pedido[]>;
|
|
738
|
+
}
|
|
739
|
+
```
|
|
740
|
+
|
|
741
|
+
### ProdutoService
|
|
742
|
+
```typescript
|
|
743
|
+
interface ProdutoService {
|
|
744
|
+
criarProduto(dados: CriarProdutoDTO): Promise<Produto>;
|
|
745
|
+
atualizarProduto(id: string, dados: Partial<Produto>): Promise<Produto>;
|
|
746
|
+
removerProduto(id: string): Promise<void>;
|
|
747
|
+
buscarProduto(id: string): Promise<Produto>;
|
|
748
|
+
listarProdutos(categoria?: string): Promise<Produto[]>;
|
|
749
|
+
buscarPorNome(nome: string): Promise<Produto[]>;
|
|
750
|
+
}
|
|
751
|
+
```
|
|
752
|
+
|
|
753
|
+
## Eventos de Domínio
|
|
754
|
+
### PedidoCriado
|
|
755
|
+
```typescript
|
|
756
|
+
class PedidoCriado extends DomainEvent {
|
|
757
|
+
readonly clienteId: string;
|
|
758
|
+
readonly itens: ItemPedido[];
|
|
759
|
+
readonly total: number;
|
|
760
|
+
|
|
761
|
+
constructor(
|
|
762
|
+
aggregateId: string,
|
|
763
|
+
clienteId: string,
|
|
764
|
+
itens: ItemPedido[],
|
|
765
|
+
total: number
|
|
766
|
+
) {
|
|
767
|
+
super(aggregateId, clienteId, itens, total);
|
|
768
|
+
}
|
|
769
|
+
}
|
|
770
|
+
```
|
|
771
|
+
|
|
772
|
+
### PedidoCancelado
|
|
773
|
+
```typescript
|
|
774
|
+
class PedidoCancelado extends DomainEvent {
|
|
775
|
+
readonly motivo: string;
|
|
776
|
+
readonly timestampCancelamento: Date;
|
|
777
|
+
|
|
778
|
+
constructor(
|
|
779
|
+
aggregateId: string,
|
|
780
|
+
motivo: string,
|
|
781
|
+
timestampCancelamento: Date
|
|
782
|
+
) {
|
|
783
|
+
super(aggregateId, motivo, timestampCancelamento);
|
|
784
|
+
}
|
|
785
|
+
}
|
|
786
|
+
```
|
|
787
|
+
|
|
788
|
+
### PagamentoAprovado
|
|
789
|
+
```typescript
|
|
790
|
+
class PagamentoAprovado extends DomainEvent {
|
|
791
|
+
readonly metodoPagamento: MetodoPagamento;
|
|
792
|
+
readonly valor: Dinheiro;
|
|
793
|
+
readonly dataAprovacao: Date;
|
|
794
|
+
|
|
795
|
+
constructor(
|
|
796
|
+
aggregateId: string,
|
|
797
|
+
metodoPagamento: MetodoPagamento,
|
|
798
|
+
valor: Dinheiro,
|
|
799
|
+
dataAprovacao: Date
|
|
800
|
+
) {
|
|
801
|
+
super(aggregateId, metodoPagamento, valor, dataAprovacao);
|
|
802
|
+
}
|
|
803
|
+
}
|
|
804
|
+
```
|
|
805
|
+
```
|
|
806
|
+
|
|
807
|
+
### **Exemplo 2: Sistema de Gestão de Conteúdo**
|
|
808
|
+
```markdown
|
|
809
|
+
# Modelo de Domínio: Gestão de Conteúdo
|
|
810
|
+
|
|
811
|
+
## Contextos Identificados
|
|
812
|
+
### 1. Publicação
|
|
813
|
+
- **Descrição:** Criação e gestão de conteúdo
|
|
814
|
+
- **Entidades:** Artigo, Autor, Categoria, Tag
|
|
815
|
+
- **Aggregates:** Publicacao, Edição
|
|
816
|
+
- **Serviços:** ArtigoService, AutorService
|
|
817
|
+
|
|
818
|
+
### 2. Assinatura
|
|
819
|
+
- **Descrição:** Assinatura digital de documentos
|
|
820
|
+
- **Entidades:** Documento, Assinatura, Validade
|
|
821
|
+
- **Aggregates:** ProcessoAssinatura
|
|
822
|
+
- **Serviços:** DocumentoService, AssinaturaService
|
|
823
|
+
|
|
824
|
+
### 3 Comentários
|
|
825
|
+
- **Descrição:** Sistema de comentários e feedback
|
|
826
|
+
- **Entidades:** Comentário, Usuário, Moderador
|
|
827
|
+
- **Aggregates:** Conversa
|
|
828
|
+
- **Serviços:** ComentarioService, ModeracaoService
|
|
829
|
+
|
|
830
|
+
## Entidades Principais
|
|
831
|
+
### Artigo
|
|
832
|
+
```typescript
|
|
833
|
+
interface Artigo extends Entity {
|
|
834
|
+
id: string;
|
|
835
|
+
titulo: string;
|
|
836
|
+
conteudo: string;
|
|
837
|
+
autorId: string;
|
|
838
|
+
categoriaId: string;
|
|
839
|
+
tags: string[];
|
|
840
|
+
status: StatusArtigo;
|
|
841
|
+
dataPublicacao: Date;
|
|
842
|
+
dataAtualizacao: Date;
|
|
843
|
+
visualizacoes: number;
|
|
844
|
+
curtidas: number;
|
|
845
|
+
|
|
846
|
+
// Comportamentos
|
|
847
|
+
atualizarConteudo(conteudo: string): void;
|
|
848
|
+
adicionarTag(tag: string): void;
|
|
849
|
+
removerTag(tag: string): void;
|
|
850
|
+
publicar(): void;
|
|
851
|
+
arquivar(): void;
|
|
852
|
+
}
|
|
853
|
+
```
|
|
854
|
+
|
|
855
|
+
### Autor
|
|
856
|
+
```typescript
|
|
857
|
+
interface Autor extends Entity {
|
|
858
|
+
id: string;
|
|
859
|
+
nome: string;
|
|
860
|
+
bio: string;
|
|
861
|
+
email: string;
|
|
862
|
+
avatar: string;
|
|
863
|
+
redesSociais: RedeSocial[];
|
|
864
|
+
artigos: string[];
|
|
865
|
+
seguidores: string[];
|
|
866
|
+
especialidades: string[];
|
|
867
|
+
|
|
868
|
+
// Comportamentos
|
|
869
|
+
atualizarBio(bio: string): void;
|
|
870
|
+
adicionarRedeSocial(redeSocial: RedeSocial): void;
|
|
871
|
+
adicionarSeguidor(seguidor: string): void;
|
|
872
|
+
publicarArtigo(artigoId: string): void;
|
|
873
|
+
}
|
|
874
|
+
```
|
|
875
|
+
|
|
876
|
+
### Categoria
|
|
877
|
+
```typescript
|
|
878
|
+
interface Categoria extends Entity {
|
|
879
|
+
id: string;
|
|
880
|
+
nome: string;
|
|
881
|
+
descricao: string;
|
|
882
|
+
slug: string;
|
|
883
|
+
cor: string;
|
|
884
|
+
icone: string;
|
|
885
|
+
artigoIds: string[];
|
|
886
|
+
ativa: boolean;
|
|
887
|
+
ordem: number;
|
|
888
|
+
|
|
889
|
+
// Comportamentos
|
|
890
|
+
adicionarArtigo(artigoId: string): void;
|
|
891
|
+
removerArtigo(artigoId: string): void;
|
|
892
|
+
atualizarOrdem(ordem: number): void;
|
|
893
|
+
}
|
|
894
|
+
```
|
|
895
|
+
|
|
896
|
+
## Agregrates Principais
|
|
897
|
+
### Publicacao
|
|
898
|
+
```typescript
|
|
899
|
+
class Publicacao extends AggregateRoot {
|
|
900
|
+
private _id: string;
|
|
901
|
+
private _autorId: string;
|
|
902
|
+
private _titulo: string;
|
|
903
|
+
_conteudo: string;
|
|
904
|
+
_categoriaId: string;
|
|
905
|
+
_tags: string[];
|
|
906
|
+
_status: StatusPublicacao;
|
|
907
|
+
_dataPublicacao: Date;
|
|
908
|
+
|
|
909
|
+
// Comportamentos
|
|
910
|
+
publicar(): void;
|
|
911
|
+
arquivar(): void;
|
|
912
|
+
atualizarConteudo(conteudo: string): void;
|
|
913
|
+
adicionarTag(tag: string): void;
|
|
914
|
+
removerTag(tag: string): void;
|
|
915
|
+
validarRegras(): boolean;
|
|
916
|
+
}
|
|
917
|
+
```
|
|
918
|
+
|
|
919
|
+
### Edição
|
|
920
|
+
```typescript
|
|
921
|
+
class Edicao extends AggregateRoot {
|
|
922
|
+
private _id: string;
|
|
923
|
+
_artigoId: string;
|
|
924
|
+
_autorId: string;
|
|
925
|
+
_conteudoAnterior: string;
|
|
926
|
+
_conteudoNovo: string;
|
|
927
|
+
_dataEdicao: Date;
|
|
928
|
+
_revisoes: Revisao[];
|
|
929
|
+
|
|
930
|
+
// Comportamentos
|
|
931
|
+
aplicarEdicao(): void;
|
|
932
|
+
adicionarRevisao(revisao: Revisao): void;
|
|
933
|
+
rejeitarEdicao(): void;
|
|
934
|
+
aprovarEdicao(): void;
|
|
935
|
+
publicar(): void;
|
|
936
|
+
}
|
|
937
|
+
```
|
|
938
|
+
|
|
939
|
+
## Serviços de Domínio
|
|
940
|
+
### ArtigoService
|
|
941
|
+
```typescript
|
|
942
|
+
interface ArtigoService {
|
|
943
|
+
criarArtigo(dados: CriarArtigoDTO): Promise<Artigo>;
|
|
944
|
+
atualizarArtigo(id: string, dados: Partial<Artigo>): Promise<Artigo>;
|
|
945
|
+
removerArtigo(id: string): Promise<void>;
|
|
946
|
+
buscarArtigo(id: string): Promise<Artigo>;
|
|
947
|
+
listarArtigos(categoriaId?: string): Promise<Artigo[]>;
|
|
948
|
+
buscarPorTitulo(titulo: string): Promise<Artigo[]>;
|
|
949
|
+
buscarPorAutor(autorId: string): Promise<Artigo[]>;
|
|
950
|
+
}
|
|
951
|
+
```
|
|
952
|
+
|
|
953
|
+
### AutorService
|
|
954
|
+
```typescript
|
|
955
|
+
interface AutorService {
|
|
956
|
+
criarAutor(dados: CriarAutorDTO): Promise<Autor>;
|
|
957
|
+
atualizarAutor(id: string, dados: Partial<Autor>): Promise<Autor>;
|
|
958
|
+
buscarAutor(id: string): Promise<Autor>;
|
|
959
|
+
listarAutores(): Promise<Autor[]>;
|
|
960
|
+
buscarPorNome(nome: string): Promise<Autor[]>;
|
|
961
|
+
}
|
|
962
|
+
```
|
|
963
|
+
|
|
964
|
+
## Eventos de Domínio
|
|
965
|
+
### ArtigoPublicado
|
|
966
|
+
```typescript
|
|
967
|
+
class ArtigoPublicado extends DomainEvent {
|
|
968
|
+
readonly artigoId: string;
|
|
969
|
+
readonly autorId: string;
|
|
970
|
+
readonly categoriaId: string;
|
|
971
|
+
readonly tags: string[];
|
|
972
|
+
readonly dataPublicacao: Date;
|
|
973
|
+
|
|
974
|
+
constructor(
|
|
975
|
+
aggregateId: string,
|
|
976
|
+
artigoId: string,
|
|
977
|
+
autorId: string,
|
|
978
|
+
categoriaId: string,
|
|
979
|
+
tags: string[],
|
|
980
|
+
dataPublicacao: Date
|
|
981
|
+
) {
|
|
982
|
+
super(aggregateId, artigoId, autorId, categoriaId, tags, dataPublicacao);
|
|
983
|
+
}
|
|
984
|
+
}
|
|
985
|
+
```
|
|
986
|
+
|
|
987
|
+
### ConteudoAtualizado
|
|
988
|
+
```typescript
|
|
989
|
+
class ConteudoAtualizado extends DomainEvent {
|
|
990
|
+
readonly artigoId: string;
|
|
991
|
+
conteudoAnterior: string;
|
|
992
|
+
conteudoNovo: string;
|
|
993
|
+
readonly autorId: string;
|
|
994
|
+
readonly dataAtualizacao: Date;
|
|
995
|
+
|
|
996
|
+
constructor(
|
|
997
|
+
aggregateId: string,
|
|
998
|
+
artigoId: string,
|
|
999
|
+
conteudoAnterior: string,
|
|
1000
|
+
conteudoNovo: string,
|
|
1001
|
+
autorId: string,
|
|
1002
|
+
dataAtualizacao: Date
|
|
1003
|
+
) {
|
|
1004
|
+
super(aggregateId, artigoId, {
|
|
1005
|
+
conteudoAnterior,
|
|
1006
|
+
conteudoNovo,
|
|
1007
|
+
autorId,
|
|
1008
|
+
dataAtualizacao
|
|
1009
|
+
});
|
|
1010
|
+
}
|
|
1011
|
+
}
|
|
1012
|
+
```
|
|
1013
|
+
```
|
|
1014
|
+
|
|
1015
|
+
---
|
|
1016
|
+
|
|
1017
|
+
## ✅ **Checklist de Validação**
|
|
1018
|
+
|
|
1019
|
+
### **Antes da Modelagem**
|
|
1020
|
+
- [ ] **Exploração completa** do domínio realizada
|
|
1021
|
+
- [ ] **Stakeholders** identificados e envolvidos
|
|
1022
|
+
- **Linguagem ubíqua** definida
|
|
1023
|
+
- **Contextos delimitados** identificados
|
|
1024
|
+
- [ ] **Entidades** principais mapeadas
|
|
1025
|
+
|
|
1026
|
+
### **Durante a Modelagem**
|
|
1027
|
+
- [ ] **Entidades** seguem critérios definidos
|
|
1028
|
+
- [ ] **Value Objects** são imutáveis
|
|
1029
|
+
- [ ] **Aggregates** garantem consistência
|
|
1030
|
+
- [ ] **Eventos** são imutáveis
|
|
1031
|
+
- [ ] **Relacionamentos** corretamente modelados
|
|
1032
|
+
|
|
1033
|
+
### **Após a Modelagem**
|
|
1034
|
+
- [ ] **Invariantes** validados em todos aggregates
|
|
1035
|
+
- [ ] **Serviços** definidos para cada contexto
|
|
1036
|
+
- [] **Eventos** gerados nos pontos certos
|
|
1037
|
+
- [ ] **Repositórios** interfaces criadas
|
|
1038
|
+
- [ ] **Validação** com stakeholders realizada
|
|
1039
|
+
|
|
1040
|
+
### **Qualidade do Modelo**
|
|
1041
|
+
- [ ] **Clareza:** Modelo fácil de entender
|
|
1042
|
+
- [ ] **Completude:** Todas regras implementadas
|
|
1043
|
+
- [] **Consistência:** Sem contradições internas
|
|
1044
|
+
- [ ] **Extensibilidade:** Fácil de evoluir
|
|
1045
|
+
- [ ] **Performance:** Otimizado para uso
|
|
1046
|
+
|
|
1047
|
+
---
|
|
1048
|
+
|
|
1049
|
+
## 🚀 **Dicas e Melhores Práticas**
|
|
1050
|
+
|
|
1051
|
+
### **Para Modelagem de Domínio**
|
|
1052
|
+
- **Comece pequeno:** Modele um contexto por vez
|
|
1053
|
+
- **Use workshops:** Envolva especialistas do negócio
|
|
1054
|
+
- **Fale a linguagem:** Use termos do negócio
|
|
1055
|
+
- **Valide cedo:** Teste invariantes regularmente
|
|
1056
|
+
- **Itere frequentemente:** Refine com base no feedback
|
|
1057
|
+
|
|
1058
|
+
### **Para Arquitetura**
|
|
1059
|
+
- **Context mapping:** Mapeie contextos para código
|
|
1060
|
+
- **Injeção de dependências:** Use DI containers
|
|
1061
|
+
- **Event sourcing:** Implemente quando apropriado
|
|
1062
|
+
- **CQRS:** Separa leitura de escrita se necessário
|
|
1063
|
+
- **Testes unitários:** Teste regras e invariantes
|
|
1064
|
+
|
|
1065
|
+
### **Para Colaboração**
|
|
1066
|
+
- **Documente tudo:** Mantenha histórico de decisões
|
|
1067
|
+
- **Use diagramas:** Visualize relacionamentos
|
|
1068
|
+
- **Revisão por pares:** Revise modelos regularmente
|
|
1069
|
+
- **Compartilhe conhecimento:** Eduque outros sobre DDD
|
|
1070
|
+
- **Celebre sucessos:** Reconheça boas modelagens
|
|
1071
|
+
|
|
1072
|
+
### **Para Manutenção**
|
|
1073
|
+
- **Versione o modelo:** Controle mudanças estruturais
|
|
1074
|
+
- **Monitore uso:** Analise padrões de uso
|
|
1075
|
+
- **Refatore quando necessário:** Melhore com o tempo
|
|
1076
|
+
- **Evolua com o negócio:** Adapte a mudanças no negócio
|
|
1077
|
+
- **Mantenha documentação:** Mantenha diagramas atualizados
|
|
1078
|
+
|
|
1079
|
+
---
|
|
1080
|
+
|
|
1081
|
+
## 📞 **Ferramentas e Recursos**
|
|
1082
|
+
|
|
1083
|
+
### **Ferramentas Essenciais**
|
|
1084
|
+
- **Draw.io:** [Link para diagramas]
|
|
1085
|
+
- **Lucidchart:** [Link para diagramas]
|
|
1086
|
+
- **Astah:** [Link para diagramas]
|
|
1087
|
+
- **PlantUML:** [Link para diagramas]
|
|
1088
|
+
- **Miro:** [Link para diagramas]
|
|
1089
|
+
|
|
1090
|
+
### **Bibliotecas e Frameworks**
|
|
1091
|
+
- **TypeScript:** [Link para documentação]
|
|
1092
|
+
- **Node.js:** [Link para documentação]
|
|
1093
|
+
- **Java:** [Link para documentação]
|
|
1094
|
+
- **Python:** [Link para documentação]
|
|
1095
|
+
- **.NET:** [Link para documentação]
|
|
1096
|
+
|
|
1097
|
+
### **Comunidade e Suporte**
|
|
1098
|
+
- **DDD Community:** [Fóruns e grupos]
|
|
1099
|
+
- **Stack Overflow:** [Busca de ajuda técnica]
|
|
1100
|
+
- **Livros Recomendados:** [Lista de livros]
|
|
1101
|
+
- **Tutoriais:** [Links para vídeos/guias]
|
|
1102
|
+
- **Blogues:** [Links para blogs sobre DDD]
|
|
1103
|
+
|
|
1104
|
+
---
|
|
1105
|
+
|
|
1106
|
+
## 🔄 **Atualizações e Manutenção**
|
|
1107
|
+
|
|
1108
|
+
### **Versão 1.0** (Data: [DATA])
|
|
1109
|
+
- Versão inicial do guia
|
|
1110
|
+
- Framework básico de DDD
|
|
1111
|
+
- Exemplos e templates iniciais
|
|
1112
|
+
- Processo de workshop
|
|
1113
|
+
|
|
1114
|
+
### **Próximas Versões**
|
|
1115
|
+
- **v1.1:** Adicionar exemplos avançados
|
|
1116
|
+
- **v1.2:** Incluir seção de Event Sourcing
|
|
1117
|
+
- **v1.3:** Adicionar CQRS e Event Store
|
|
1118
|
+
- **v2.0:** Framework completo de validação
|
|
1119
|
+
|
|
1120
|
+
---
|
|
1121
|
+
|
|
1122
|
+
**Versão:** 1.0
|
|
1123
|
+
**Data:** [DATA]
|
|
1124
|
+
**Próxima Atualização:** [DATA + 3 meses]
|
|
1125
|
+
**Mantenedor:** Equipe de Arquitetura Maestro
|
|
1126
|
+
**Contato:** [email@empresa.com]
|