moai-adk 0.25.4__py3-none-any.whl → 0.32.8__py3-none-any.whl
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.
Potentially problematic release.
This version of moai-adk might be problematic. Click here for more details.
- moai_adk/__init__.py +2 -5
- moai_adk/__main__.py +114 -82
- moai_adk/cli/__init__.py +6 -1
- moai_adk/cli/commands/__init__.py +1 -3
- moai_adk/cli/commands/analyze.py +5 -16
- moai_adk/cli/commands/doctor.py +6 -18
- moai_adk/cli/commands/init.py +56 -125
- moai_adk/cli/commands/language.py +14 -35
- moai_adk/cli/commands/status.py +9 -15
- moai_adk/cli/commands/update.py +1555 -190
- moai_adk/cli/prompts/init_prompts.py +112 -56
- moai_adk/cli/spec_status.py +263 -0
- moai_adk/cli/ui/__init__.py +44 -0
- moai_adk/cli/ui/progress.py +422 -0
- moai_adk/cli/ui/prompts.py +389 -0
- moai_adk/cli/ui/theme.py +129 -0
- moai_adk/cli/worktree/__init__.py +27 -0
- moai_adk/cli/worktree/__main__.py +31 -0
- moai_adk/cli/worktree/cli.py +672 -0
- moai_adk/cli/worktree/exceptions.py +89 -0
- moai_adk/cli/worktree/manager.py +490 -0
- moai_adk/cli/worktree/models.py +65 -0
- moai_adk/cli/worktree/registry.py +128 -0
- moai_adk/core/PHASE2_OPTIMIZATIONS.md +467 -0
- moai_adk/core/analysis/session_analyzer.py +17 -56
- moai_adk/core/claude_integration.py +26 -54
- moai_adk/core/command_helpers.py +10 -10
- moai_adk/core/comprehensive_monitoring_system.py +1183 -0
- moai_adk/core/config/auto_spec_config.py +5 -11
- moai_adk/core/config/migration.py +19 -9
- moai_adk/core/config/unified.py +436 -0
- moai_adk/core/context_manager.py +6 -12
- moai_adk/core/enterprise_features.py +1404 -0
- moai_adk/core/error_recovery_system.py +725 -112
- moai_adk/core/event_driven_hook_system.py +1371 -0
- moai_adk/core/git/__init__.py +8 -0
- moai_adk/core/git/branch_manager.py +3 -11
- moai_adk/core/git/checkpoint.py +1 -3
- moai_adk/core/git/conflict_detector.py +413 -0
- moai_adk/core/git/manager.py +91 -1
- moai_adk/core/hooks/post_tool_auto_spec_completion.py +56 -80
- moai_adk/core/input_validation_middleware.py +1006 -0
- moai_adk/core/integration/engine.py +6 -18
- moai_adk/core/integration/integration_tester.py +10 -9
- moai_adk/core/integration/utils.py +1 -1
- moai_adk/core/issue_creator.py +10 -28
- moai_adk/core/jit_context_loader.py +956 -0
- moai_adk/core/jit_enhanced_hook_manager.py +1987 -0
- moai_adk/core/language_config_resolver.py +485 -0
- moai_adk/core/language_validator.py +28 -41
- moai_adk/core/mcp/setup.py +15 -12
- moai_adk/core/merge/__init__.py +9 -0
- moai_adk/core/merge/analyzer.py +481 -0
- moai_adk/core/migration/alfred_to_moai_migrator.py +383 -0
- moai_adk/core/migration/backup_manager.py +78 -9
- moai_adk/core/migration/custom_element_scanner.py +358 -0
- moai_adk/core/migration/file_migrator.py +8 -17
- moai_adk/core/migration/interactive_checkbox_ui.py +488 -0
- moai_adk/core/migration/selective_restorer.py +470 -0
- moai_adk/core/migration/template_utils.py +74 -0
- moai_adk/core/migration/user_selection_ui.py +338 -0
- moai_adk/core/migration/version_detector.py +6 -10
- moai_adk/core/migration/version_migrator.py +3 -3
- moai_adk/core/performance/cache_system.py +8 -10
- moai_adk/core/phase_optimized_hook_scheduler.py +879 -0
- moai_adk/core/project/checker.py +2 -4
- moai_adk/core/project/detector.py +1 -3
- moai_adk/core/project/initializer.py +135 -23
- moai_adk/core/project/phase_executor.py +54 -81
- moai_adk/core/project/validator.py +6 -12
- moai_adk/core/quality/trust_checker.py +9 -27
- moai_adk/core/realtime_monitoring_dashboard.py +1724 -0
- moai_adk/core/robust_json_parser.py +611 -0
- moai_adk/core/rollback_manager.py +73 -148
- moai_adk/core/session_manager.py +10 -26
- moai_adk/core/skill_loading_system.py +579 -0
- moai_adk/core/spec/confidence_scoring.py +31 -100
- moai_adk/core/spec/ears_template_engine.py +351 -286
- moai_adk/core/spec/quality_validator.py +35 -69
- moai_adk/core/spec_status_manager.py +64 -74
- moai_adk/core/template/backup.py +45 -20
- moai_adk/core/template/config.py +112 -39
- moai_adk/core/template/merger.py +11 -19
- moai_adk/core/template/processor.py +253 -149
- moai_adk/core/template_engine.py +73 -40
- moai_adk/core/template_variable_synchronizer.py +417 -0
- moai_adk/core/unified_permission_manager.py +745 -0
- moai_adk/core/user_behavior_analytics.py +851 -0
- moai_adk/core/version_sync.py +429 -0
- moai_adk/foundation/__init__.py +56 -0
- moai_adk/foundation/backend.py +1027 -0
- moai_adk/foundation/database.py +1115 -0
- moai_adk/foundation/devops.py +1585 -0
- moai_adk/foundation/ears.py +431 -0
- moai_adk/foundation/frontend.py +870 -0
- moai_adk/foundation/git/commit_templates.py +4 -12
- moai_adk/foundation/git.py +376 -0
- moai_adk/foundation/langs.py +484 -0
- moai_adk/foundation/ml_ops.py +1162 -0
- moai_adk/foundation/testing.py +1524 -0
- moai_adk/foundation/trust/trust_principles.py +23 -72
- moai_adk/foundation/trust/validation_checklist.py +57 -162
- moai_adk/project/__init__.py +0 -0
- moai_adk/project/configuration.py +1084 -0
- moai_adk/project/documentation.py +566 -0
- moai_adk/project/schema.py +447 -0
- moai_adk/statusline/alfred_detector.py +1 -3
- moai_adk/statusline/config.py +13 -4
- moai_adk/statusline/enhanced_output_style_detector.py +23 -15
- moai_adk/statusline/main.py +51 -15
- moai_adk/statusline/renderer.py +104 -48
- moai_adk/statusline/update_checker.py +3 -9
- moai_adk/statusline/version_reader.py +140 -46
- moai_adk/templates/.claude/agents/moai/ai-nano-banana.md +549 -0
- moai_adk/templates/.claude/agents/moai/builder-agent.md +445 -0
- moai_adk/templates/.claude/agents/moai/builder-command.md +1132 -0
- moai_adk/templates/.claude/agents/moai/builder-skill.md +601 -0
- moai_adk/templates/.claude/agents/moai/expert-backend.md +831 -0
- moai_adk/templates/.claude/agents/moai/expert-database.md +774 -0
- moai_adk/templates/.claude/agents/moai/expert-debug.md +396 -0
- moai_adk/templates/.claude/agents/moai/expert-devops.md +711 -0
- moai_adk/templates/.claude/agents/moai/expert-frontend.md +666 -0
- moai_adk/templates/.claude/agents/moai/expert-security.md +474 -0
- moai_adk/templates/.claude/agents/moai/expert-uiux.md +1038 -0
- moai_adk/templates/.claude/agents/moai/manager-claude-code.md +429 -0
- moai_adk/templates/.claude/agents/moai/manager-docs.md +570 -0
- moai_adk/templates/.claude/agents/moai/manager-git.md +937 -0
- moai_adk/templates/.claude/agents/moai/manager-project.md +891 -0
- moai_adk/templates/.claude/agents/moai/manager-quality.md +598 -0
- moai_adk/templates/.claude/agents/moai/manager-spec.md +713 -0
- moai_adk/templates/.claude/agents/moai/manager-strategy.md +600 -0
- moai_adk/templates/.claude/agents/moai/manager-tdd.md +603 -0
- moai_adk/templates/.claude/agents/moai/mcp-context7.md +369 -0
- moai_adk/templates/.claude/agents/moai/mcp-figma.md +1567 -0
- moai_adk/templates/.claude/agents/moai/mcp-notion.md +749 -0
- moai_adk/templates/.claude/agents/moai/mcp-playwright.md +427 -0
- moai_adk/templates/.claude/agents/moai/mcp-sequential-thinking.md +994 -0
- moai_adk/templates/.claude/commands/moai/0-project.md +1143 -0
- moai_adk/templates/.claude/commands/moai/1-plan.md +1435 -0
- moai_adk/templates/.claude/commands/moai/2-run.md +883 -0
- moai_adk/templates/.claude/commands/moai/3-sync.md +993 -0
- moai_adk/templates/.claude/commands/moai/9-feedback.md +314 -0
- moai_adk/templates/.claude/hooks/__init__.py +8 -0
- moai_adk/templates/.claude/hooks/moai/__init__.py +8 -0
- moai_adk/templates/.claude/hooks/moai/lib/__init__.py +85 -0
- moai_adk/templates/.claude/hooks/moai/lib/checkpoint.py +244 -0
- moai_adk/templates/.claude/hooks/moai/lib/common.py +131 -0
- moai_adk/templates/.claude/hooks/moai/lib/config_manager.py +446 -0
- moai_adk/templates/.claude/hooks/moai/lib/config_validator.py +639 -0
- moai_adk/templates/.claude/hooks/moai/lib/example_config.json +104 -0
- moai_adk/templates/.claude/hooks/moai/lib/git_operations_manager.py +590 -0
- moai_adk/templates/.claude/hooks/moai/lib/language_validator.py +317 -0
- moai_adk/templates/.claude/hooks/moai/lib/models.py +102 -0
- moai_adk/templates/.claude/hooks/moai/lib/path_utils.py +28 -0
- moai_adk/templates/.claude/hooks/moai/lib/project.py +768 -0
- moai_adk/templates/.claude/hooks/moai/lib/test_hooks_improvements.py +443 -0
- moai_adk/templates/.claude/hooks/moai/lib/timeout.py +160 -0
- moai_adk/templates/.claude/hooks/moai/lib/unified_timeout_manager.py +530 -0
- moai_adk/templates/.claude/hooks/moai/session_end__auto_cleanup.py +862 -0
- moai_adk/templates/.claude/hooks/moai/session_start__show_project_info.py +921 -0
- moai_adk/templates/.claude/output-styles/moai/r2d2.md +380 -0
- moai_adk/templates/.claude/output-styles/moai/yoda.md +338 -0
- moai_adk/templates/.claude/settings.json +172 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/SKILL.md +247 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/README.md +44 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/api-documentation.md +130 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/code-documentation.md +152 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/multi-format-output.md +178 -0
- moai_adk/templates/.claude/skills/moai-docs-generation/modules/user-guides.md +147 -0
- moai_adk/templates/.claude/skills/moai-domain-backend/SKILL.md +319 -0
- moai_adk/templates/.claude/skills/moai-domain-database/SKILL.md +320 -0
- moai_adk/templates/.claude/skills/moai-domain-database/modules/README.md +53 -0
- moai_adk/templates/.claude/skills/moai-domain-database/modules/mongodb.md +231 -0
- moai_adk/templates/.claude/skills/moai-domain-database/modules/postgresql.md +169 -0
- moai_adk/templates/.claude/skills/moai-domain-database/modules/redis.md +262 -0
- moai_adk/templates/.claude/skills/moai-domain-frontend/SKILL.md +496 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/SKILL.md +453 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/examples.md +560 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/accessibility-wcag.md +260 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/component-architecture.md +228 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/design-system-tokens.md +405 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/icon-libraries.md +401 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/modules/theming-system.md +373 -0
- moai_adk/templates/.claude/skills/moai-domain-uiux/reference.md +243 -0
- moai_adk/templates/.claude/skills/moai-formats-data/SKILL.md +491 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/README.md +98 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/SKILL-MODULARIZATION-TEMPLATE.md +278 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/caching-performance.md +459 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/data-validation.md +485 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/json-optimization.md +374 -0
- moai_adk/templates/.claude/skills/moai-formats-data/modules/toon-encoding.md +308 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/SKILL.md +201 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/best-practices-checklist.md +616 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-custom-slash-commands-official.md +729 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-hooks-official.md +560 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-iam-official.md +635 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-memory-official.md +543 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-settings-official.md +663 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-skills-official.md +113 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/claude-code-sub-agents-official.md +238 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/complete-configuration-guide.md +175 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-examples.md +1674 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/skill-formatting-guide.md +729 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-examples.md +1513 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-formatting-guide.md +1086 -0
- moai_adk/templates/.claude/skills/moai-foundation-claude/reference/sub-agents/sub-agent-integration-patterns.md +1100 -0
- moai_adk/templates/.claude/skills/moai-foundation-context/SKILL.md +438 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/SKILL.md +515 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/README.md +296 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/agents-reference.md +346 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/commands-reference.md +432 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/delegation-patterns.md +757 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/execution-rules.md +687 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/modular-system.md +665 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/progressive-disclosure.md +649 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/spec-first-tdd.md +864 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/token-optimization.md +708 -0
- moai_adk/templates/.claude/skills/moai-foundation-core/modules/trust-5-framework.md +981 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/SKILL.md +362 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/examples.md +1232 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/modules/best-practices.md +261 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/modules/integration-patterns.md +194 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/modules/proactive-analysis.md +229 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/modules/trust5-validation.md +169 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/reference.md +1266 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/scripts/quality-gate.sh +668 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/templates/github-actions-quality.yml +481 -0
- moai_adk/templates/.claude/skills/moai-foundation-quality/templates/quality-config.yaml +519 -0
- moai_adk/templates/.claude/skills/moai-integration-mcp/SKILL.md +352 -0
- moai_adk/templates/.claude/skills/moai-integration-mcp/modules/README.md +52 -0
- moai_adk/templates/.claude/skills/moai-integration-mcp/modules/error-handling.md +334 -0
- moai_adk/templates/.claude/skills/moai-integration-mcp/modules/integration-patterns.md +310 -0
- moai_adk/templates/.claude/skills/moai-integration-mcp/modules/security-authentication.md +256 -0
- moai_adk/templates/.claude/skills/moai-integration-mcp/modules/server-architecture.md +253 -0
- moai_adk/templates/.claude/skills/moai-lang-unified/README.md +133 -0
- moai_adk/templates/.claude/skills/moai-lang-unified/SKILL.md +296 -0
- moai_adk/templates/.claude/skills/moai-lang-unified/examples.md +1269 -0
- moai_adk/templates/.claude/skills/moai-lang-unified/reference.md +331 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/SKILL.md +298 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/advanced-patterns.md +465 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/examples.md +270 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/optimization.md +440 -0
- moai_adk/templates/.claude/skills/moai-library-mermaid/reference.md +228 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/SKILL.md +316 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/advanced-patterns.md +336 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-deployment-patterns.md +182 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/advanced-patterns.md +17 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/configuration.md +57 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/content-architecture-optimization.md +162 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/deployment.md +52 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/framework-core-configuration.md +186 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/i18n-setup.md +55 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/modules/mdx-components.md +52 -0
- moai_adk/templates/.claude/skills/moai-library-nextra/optimization.md +303 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/SKILL.md +370 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/examples.md +575 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/modules/advanced-patterns.md +394 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/modules/optimization.md +278 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-components.md +457 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/modules/shadcn-theming.md +373 -0
- moai_adk/templates/.claude/skills/moai-library-shadcn/reference.md +74 -0
- moai_adk/templates/.claude/skills/moai-platform-baas/README.md +186 -0
- moai_adk/templates/.claude/skills/moai-platform-baas/SKILL.md +290 -0
- moai_adk/templates/.claude/skills/moai-platform-baas/examples.md +1225 -0
- moai_adk/templates/.claude/skills/moai-platform-baas/reference.md +567 -0
- moai_adk/templates/.claude/skills/moai-platform-baas/scripts/provider-selector.py +323 -0
- moai_adk/templates/.claude/skills/moai-platform-baas/templates/stack-config.yaml +204 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/SKILL.md +446 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/advanced-patterns.md +379 -0
- moai_adk/templates/.claude/skills/moai-workflow-jit-docs/optimization.md +286 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/README.md +190 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/SKILL.md +387 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/__init__.py +520 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/complete_workflow_demo_fixed.py +574 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_project_setup.py +317 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/complete_workflow_demo.py +663 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/config-migration-example.json +190 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/question-examples.json +135 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/examples/quick_start.py +196 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/__init__.py +17 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/advanced-patterns.md +158 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/ask_user_integration.py +340 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/batch_questions.py +713 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/config_manager.py +538 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/documentation_manager.py +1336 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/language_initializer.py +730 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/migration_manager.py +608 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/modules/template_optimizer.py +1005 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/schemas/config-schema.json +316 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/schemas/tab_schema.json +1362 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/config-template.json +71 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/product-template.md +44 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/structure-template.md +48 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/doc-templates/tech-template.md +71 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/config-manager-setup.json +109 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/language-initializer.json +228 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/menu-project-config.json +130 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/project-batch-questions.json +97 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/templates/question-templates/spec-workflow-setup.json +150 -0
- moai_adk/templates/.claude/skills/moai-workflow-project/test_integration_simple.py +436 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/SKILL.md +374 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/modules/code-templates.md +124 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/modules/feedback-templates.md +100 -0
- moai_adk/templates/.claude/skills/moai-workflow-templates/modules/template-optimizer.md +138 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/LICENSE.txt +202 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/SKILL.md +453 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/advanced-patterns.md +576 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/examples/ai-powered-testing.py +294 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/examples/console_logging.py +35 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/examples/element_discovery.py +40 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/examples/static_html_automation.py +34 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/README.md +220 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/ai-debugging.md +845 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/automated-code-review.md +1416 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/performance-optimization.md +1234 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/smart-refactoring.md +1243 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/modules/tdd-context7.md +1260 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/optimization.md +505 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/reference/playwright-best-practices.md +57 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/scripts/with_server.py +218 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/templates/alfred-integration.md +376 -0
- moai_adk/templates/.claude/skills/moai-workflow-testing/workflows/enterprise-testing-workflow.py +571 -0
- moai_adk/templates/.claude/skills/moai-worktree/SKILL.md +410 -0
- moai_adk/templates/.claude/skills/moai-worktree/examples.md +606 -0
- moai_adk/templates/.claude/skills/moai-worktree/modules/integration-patterns.md +982 -0
- moai_adk/templates/.claude/skills/moai-worktree/modules/parallel-development.md +778 -0
- moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-commands.md +646 -0
- moai_adk/templates/.claude/skills/moai-worktree/modules/worktree-management.md +782 -0
- moai_adk/templates/.claude/skills/moai-worktree/reference.md +357 -0
- moai_adk/templates/.git-hooks/pre-commit +103 -41
- moai_adk/templates/.git-hooks/pre-push +116 -21
- moai_adk/templates/.github/workflows/ci-universal.yml +513 -0
- moai_adk/templates/.github/workflows/security-secrets-check.yml +179 -0
- moai_adk/templates/.gitignore +184 -44
- moai_adk/templates/.mcp.json +7 -9
- moai_adk/templates/.moai/cache/personalization.json +10 -0
- moai_adk/templates/.moai/config/config.yaml +344 -0
- moai_adk/templates/.moai/config/presets/manual.yaml +28 -0
- moai_adk/templates/.moai/config/presets/personal.yaml +30 -0
- moai_adk/templates/.moai/config/presets/team.yaml +33 -0
- moai_adk/templates/.moai/config/questions/_schema.yaml +79 -0
- moai_adk/templates/.moai/config/questions/tab1-user.yaml +108 -0
- moai_adk/templates/.moai/config/questions/tab2-project.yaml +122 -0
- moai_adk/templates/.moai/config/questions/tab3-git.yaml +542 -0
- moai_adk/templates/.moai/config/questions/tab4-quality.yaml +167 -0
- moai_adk/templates/.moai/config/questions/tab5-system.yaml +152 -0
- moai_adk/templates/.moai/config/sections/git-strategy.yaml +40 -0
- moai_adk/templates/.moai/config/sections/language.yaml +11 -0
- moai_adk/templates/.moai/config/sections/project.yaml +13 -0
- moai_adk/templates/.moai/config/sections/quality.yaml +15 -0
- moai_adk/templates/.moai/config/sections/system.yaml +14 -0
- moai_adk/templates/.moai/config/sections/user.yaml +5 -0
- moai_adk/templates/.moai/config/statusline-config.yaml +86 -0
- moai_adk/templates/.moai/scripts/setup-glm.py +136 -0
- moai_adk/templates/CLAUDE.md +382 -501
- moai_adk/utils/__init__.py +24 -1
- moai_adk/utils/banner.py +7 -10
- moai_adk/utils/common.py +16 -30
- moai_adk/utils/link_validator.py +4 -12
- moai_adk/utils/safe_file_reader.py +2 -6
- moai_adk/utils/timeout.py +160 -0
- moai_adk/utils/toon_utils.py +256 -0
- moai_adk/version.py +22 -0
- moai_adk-0.32.8.dist-info/METADATA +2478 -0
- moai_adk-0.32.8.dist-info/RECORD +396 -0
- {moai_adk-0.25.4.dist-info → moai_adk-0.32.8.dist-info}/WHEEL +1 -1
- {moai_adk-0.25.4.dist-info → moai_adk-0.32.8.dist-info}/entry_points.txt +1 -0
- moai_adk/cli/commands/backup.py +0 -82
- moai_adk/cli/commands/improve_user_experience.py +0 -348
- moai_adk/cli/commands/migrate.py +0 -158
- moai_adk/cli/commands/validate_links.py +0 -118
- moai_adk/templates/.github/workflows/moai-gitflow.yml +0 -413
- moai_adk/templates/.github/workflows/moai-release-create.yml +0 -100
- moai_adk/templates/.github/workflows/moai-release-pipeline.yml +0 -188
- moai_adk/utils/user_experience.py +0 -531
- moai_adk-0.25.4.dist-info/METADATA +0 -2279
- moai_adk-0.25.4.dist-info/RECORD +0 -112
- {moai_adk-0.25.4.dist-info → moai_adk-0.32.8.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: moai-domain-database
|
|
3
|
+
description: Database specialist covering PostgreSQL, MongoDB, Redis, and advanced data patterns for modern applications
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
category: domain
|
|
6
|
+
tags:
|
|
7
|
+
- database
|
|
8
|
+
- postgresql
|
|
9
|
+
- mongodb
|
|
10
|
+
- redis
|
|
11
|
+
- data-patterns
|
|
12
|
+
- performance
|
|
13
|
+
updated: 2025-11-30
|
|
14
|
+
status: active
|
|
15
|
+
author: MoAI-ADK Team
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
# Database Domain Specialist
|
|
19
|
+
|
|
20
|
+
## Quick Reference (30 seconds)
|
|
21
|
+
|
|
22
|
+
Enterprise Database Expertise - Comprehensive database patterns and implementations covering PostgreSQL, MongoDB, Redis, and advanced data management for scalable modern applications.
|
|
23
|
+
|
|
24
|
+
Core Capabilities:
|
|
25
|
+
- PostgreSQL: Advanced relational patterns, optimization, and scaling
|
|
26
|
+
- MongoDB: Document modeling, aggregation, and NoSQL performance tuning
|
|
27
|
+
- Redis: In-memory caching, real-time analytics, and distributed systems
|
|
28
|
+
- Multi-Database: Hybrid architectures and data integration patterns
|
|
29
|
+
- Performance: Query optimization, indexing strategies, and scaling
|
|
30
|
+
- Operations: Connection management, migrations, and monitoring
|
|
31
|
+
|
|
32
|
+
When to Use:
|
|
33
|
+
- Designing database schemas and data models
|
|
34
|
+
- Implementing caching strategies and performance optimization
|
|
35
|
+
- Building scalable data architectures
|
|
36
|
+
- Working with multi-database systems
|
|
37
|
+
- Optimizing database queries and performance
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Implementation Guide (5 minutes)
|
|
42
|
+
|
|
43
|
+
### Quick Start Workflow
|
|
44
|
+
|
|
45
|
+
Database Stack Initialization:
|
|
46
|
+
```python
|
|
47
|
+
from moai_domain_database import DatabaseManager
|
|
48
|
+
|
|
49
|
+
# Initialize multi-database stack
|
|
50
|
+
db_manager = DatabaseManager()
|
|
51
|
+
|
|
52
|
+
# Configure PostgreSQL for relational data
|
|
53
|
+
postgresql = db_manager.setup_postgresql(
|
|
54
|
+
connection_string="postgresql://...",
|
|
55
|
+
connection_pool_size=20,
|
|
56
|
+
enable_query_logging=True
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
# Configure MongoDB for document storage
|
|
60
|
+
mongodb = db_manager.setup_mongodb(
|
|
61
|
+
connection_string="mongodb://...",
|
|
62
|
+
database_name="app_data",
|
|
63
|
+
enable_sharding=True
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
# Configure Redis for caching and real-time features
|
|
67
|
+
redis = db_manager.setup_redis(
|
|
68
|
+
connection_string="redis://...",
|
|
69
|
+
max_connections=50,
|
|
70
|
+
enable_clustering=True
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
# Use unified database interface
|
|
74
|
+
user_data = db_manager.get_user_with_profile(user_id)
|
|
75
|
+
analytics = db_manager.get_user_analytics(user_id, time_range="30d")
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Single Database Operations:
|
|
79
|
+
```bash
|
|
80
|
+
# PostgreSQL schema migration
|
|
81
|
+
moai db:migrate --database postgresql --migration-file schema_v2.sql
|
|
82
|
+
|
|
83
|
+
# MongoDB aggregation pipeline
|
|
84
|
+
moai db:aggregate --collection users --pipeline analytics_pipeline.json
|
|
85
|
+
|
|
86
|
+
# Redis cache warming
|
|
87
|
+
moai db:cache:warm --pattern "user:*" --ttl 3600
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### Core Components
|
|
91
|
+
|
|
92
|
+
1. PostgreSQL (`modules/postgresql.md`)
|
|
93
|
+
- Advanced schema design and constraints
|
|
94
|
+
- Complex query optimization and indexing
|
|
95
|
+
- Window functions and CTEs
|
|
96
|
+
- Partitioning and materialized views
|
|
97
|
+
- Connection pooling and performance tuning
|
|
98
|
+
|
|
99
|
+
2. MongoDB (`modules/mongodb.md`)
|
|
100
|
+
- Document modeling and schema design
|
|
101
|
+
- Aggregation pipelines for analytics
|
|
102
|
+
- Indexing strategies and performance
|
|
103
|
+
- Sharding and scaling patterns
|
|
104
|
+
- Data consistency and validation
|
|
105
|
+
|
|
106
|
+
3. Redis (`modules/redis.md`)
|
|
107
|
+
- Multi-layer caching strategies
|
|
108
|
+
- Real-time analytics and counting
|
|
109
|
+
- Distributed locking and coordination
|
|
110
|
+
- Pub/sub messaging and streams
|
|
111
|
+
- Advanced data structures (HyperLogLog, Geo)
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## Advanced Patterns (10+ minutes)
|
|
116
|
+
|
|
117
|
+
### Multi-Database Architecture
|
|
118
|
+
|
|
119
|
+
Polyglot Persistence Pattern:
|
|
120
|
+
```python
|
|
121
|
+
class DataRouter:
|
|
122
|
+
def __init__(self):
|
|
123
|
+
self.postgresql = PostgreSQLConnection()
|
|
124
|
+
self.mongodb = MongoDBConnection()
|
|
125
|
+
self.redis = RedisConnection()
|
|
126
|
+
|
|
127
|
+
def get_user_profile(self, user_id):
|
|
128
|
+
# Get structured user data from PostgreSQL
|
|
129
|
+
user = self.postgresql.get_user(user_id)
|
|
130
|
+
|
|
131
|
+
# Get flexible profile data from MongoDB
|
|
132
|
+
profile = self.mongodb.get_user_profile(user_id)
|
|
133
|
+
|
|
134
|
+
# Get real-time status from Redis
|
|
135
|
+
status = self.redis.get_user_status(user_id)
|
|
136
|
+
|
|
137
|
+
return self.merge_user_data(user, profile, status)
|
|
138
|
+
|
|
139
|
+
def update_user_data(self, user_id, data):
|
|
140
|
+
# Route different data types to appropriate databases
|
|
141
|
+
if 'structured_data' in data:
|
|
142
|
+
self.postgresql.update_user(user_id, data['structured_data'])
|
|
143
|
+
|
|
144
|
+
if 'profile_data' in data:
|
|
145
|
+
self.mongodb.update_user_profile(user_id, data['profile_data'])
|
|
146
|
+
|
|
147
|
+
if 'real_time_data' in data:
|
|
148
|
+
self.redis.set_user_status(user_id, data['real_time_data'])
|
|
149
|
+
|
|
150
|
+
# Invalidate cache across databases
|
|
151
|
+
self.invalidate_user_cache(user_id)
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
Data Synchronization:
|
|
155
|
+
```python
|
|
156
|
+
class DataSyncManager:
|
|
157
|
+
def sync_user_data(self, user_id):
|
|
158
|
+
# Sync from PostgreSQL to MongoDB for search
|
|
159
|
+
pg_user = self.postgresql.get_user(user_id)
|
|
160
|
+
search_document = self.create_search_document(pg_user)
|
|
161
|
+
self.mongodb.upsert_user_search(user_id, search_document)
|
|
162
|
+
|
|
163
|
+
# Update cache in Redis
|
|
164
|
+
cache_data = self.create_cache_document(pg_user)
|
|
165
|
+
self.redis.set_user_cache(user_id, cache_data, ttl=3600)
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### Performance Optimization
|
|
169
|
+
|
|
170
|
+
Query Performance Analysis:
|
|
171
|
+
```python
|
|
172
|
+
# PostgreSQL query optimization
|
|
173
|
+
def analyze_query_performance(query):
|
|
174
|
+
explain_result = postgresql.execute(f"EXPLAIN (ANALYZE, BUFFERS) {query}")
|
|
175
|
+
return QueryAnalyzer(explain_result).get_optimization_suggestions()
|
|
176
|
+
|
|
177
|
+
# MongoDB aggregation optimization
|
|
178
|
+
def optimize_aggregation_pipeline(pipeline):
|
|
179
|
+
optimizer = AggregationOptimizer()
|
|
180
|
+
return optimizer.optimize_pipeline(pipeline)
|
|
181
|
+
|
|
182
|
+
# Redis performance monitoring
|
|
183
|
+
def monitor_redis_performance():
|
|
184
|
+
metrics = redis.info()
|
|
185
|
+
return PerformanceAnalyzer(metrics).get_recommendations()
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
Scaling Strategies:
|
|
189
|
+
```python
|
|
190
|
+
# Read replicas for PostgreSQL
|
|
191
|
+
read_replicas = postgresql.setup_read_replicas([
|
|
192
|
+
"postgresql://replica1...",
|
|
193
|
+
"postgresql://replica2..."
|
|
194
|
+
])
|
|
195
|
+
|
|
196
|
+
# Sharding for MongoDB
|
|
197
|
+
mongodb.setup_sharding(
|
|
198
|
+
shard_key="user_id",
|
|
199
|
+
num_shards=4
|
|
200
|
+
)
|
|
201
|
+
|
|
202
|
+
# Redis clustering
|
|
203
|
+
redis.setup_cluster([
|
|
204
|
+
"redis://node1:7000",
|
|
205
|
+
"redis://node2:7000",
|
|
206
|
+
"redis://node3:7000"
|
|
207
|
+
])
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## Works Well With
|
|
213
|
+
|
|
214
|
+
Complementary Skills:
|
|
215
|
+
- `moai-domain-backend` - API integration and business logic
|
|
216
|
+
- `moai-foundation-core` - Database migration and schema management
|
|
217
|
+
- `moai-workflow-project` - Database project setup and configuration
|
|
218
|
+
- `moai-platform-baas` - BaaS database integration patterns
|
|
219
|
+
|
|
220
|
+
Technology Integration:
|
|
221
|
+
- ORMs and ODMs (SQLAlchemy, Mongoose, TypeORM)
|
|
222
|
+
- Connection pooling (PgBouncer, connection pools)
|
|
223
|
+
- Migration tools (Alembic, Flyway)
|
|
224
|
+
- Monitoring (pg_stat_statements, MongoDB Atlas)
|
|
225
|
+
- Cache invalidation and synchronization
|
|
226
|
+
|
|
227
|
+
---
|
|
228
|
+
|
|
229
|
+
## Usage Examples
|
|
230
|
+
|
|
231
|
+
### Database Operations
|
|
232
|
+
```python
|
|
233
|
+
# PostgreSQL advanced queries
|
|
234
|
+
users = postgresql.query(
|
|
235
|
+
"SELECT * FROM users WHERE created_at > %s ORDER BY activity_score DESC LIMIT 100",
|
|
236
|
+
[datetime.now() - timedelta(days=30)]
|
|
237
|
+
)
|
|
238
|
+
|
|
239
|
+
# MongoDB analytics
|
|
240
|
+
analytics = mongodb.aggregate('events', [
|
|
241
|
+
{"$match": {"timestamp": {"$gte": start_date}}},
|
|
242
|
+
{"$group": {"_id": "$type", "count": {"$sum": 1}}},
|
|
243
|
+
{"$sort": {"count": -1}}
|
|
244
|
+
])
|
|
245
|
+
|
|
246
|
+
# Redis caching operations
|
|
247
|
+
async def get_user_data(user_id):
|
|
248
|
+
cache_key = f"user:{user_id}"
|
|
249
|
+
data = await redis.get(cache_key)
|
|
250
|
+
|
|
251
|
+
if not data:
|
|
252
|
+
data = fetch_from_database(user_id)
|
|
253
|
+
await redis.setex(cache_key, 3600, json.dumps(data))
|
|
254
|
+
|
|
255
|
+
return json.loads(data)
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
### Multi-Database Transactions
|
|
259
|
+
```python
|
|
260
|
+
async def create_user_with_profile(user_data, profile_data):
|
|
261
|
+
try:
|
|
262
|
+
# Start transaction across databases
|
|
263
|
+
async with transaction_manager():
|
|
264
|
+
# Create user in PostgreSQL
|
|
265
|
+
user_id = await postgresql.insert_user(user_data)
|
|
266
|
+
|
|
267
|
+
# Create profile in MongoDB
|
|
268
|
+
await mongodb.insert_user_profile(user_id, profile_data)
|
|
269
|
+
|
|
270
|
+
# Set initial cache in Redis
|
|
271
|
+
await redis.set_user_cache(user_id, {
|
|
272
|
+
"id": user_id,
|
|
273
|
+
"status": "active",
|
|
274
|
+
"created_at": datetime.now().isoformat()
|
|
275
|
+
})
|
|
276
|
+
|
|
277
|
+
return user_id
|
|
278
|
+
|
|
279
|
+
except Exception as e:
|
|
280
|
+
# Automatic rollback across databases
|
|
281
|
+
logger.error(f"User creation failed: {e}")
|
|
282
|
+
raise
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
---
|
|
286
|
+
|
|
287
|
+
## Technology Stack
|
|
288
|
+
|
|
289
|
+
Relational Database:
|
|
290
|
+
- PostgreSQL 14+ (primary)
|
|
291
|
+
- MySQL 8.0+ (alternative)
|
|
292
|
+
- Connection pooling (PgBouncer, SQLAlchemy)
|
|
293
|
+
|
|
294
|
+
NoSQL Database:
|
|
295
|
+
- MongoDB 6.0+ (primary)
|
|
296
|
+
- Document modeling and validation
|
|
297
|
+
- Aggregation framework
|
|
298
|
+
- Sharding and replication
|
|
299
|
+
|
|
300
|
+
In-Memory Database:
|
|
301
|
+
- Redis 7.0+ (primary)
|
|
302
|
+
- Redis Stack for advanced features
|
|
303
|
+
- Clustering and high availability
|
|
304
|
+
- Advanced data structures
|
|
305
|
+
|
|
306
|
+
Supporting Tools:
|
|
307
|
+
- Migration tools (Alembic, Flyway)
|
|
308
|
+
- Monitoring (Prometheus, Grafana)
|
|
309
|
+
- ORMs/ODMs (SQLAlchemy, Mongoose)
|
|
310
|
+
- Connection management
|
|
311
|
+
|
|
312
|
+
Performance Features:
|
|
313
|
+
- Query optimization and analysis
|
|
314
|
+
- Index management and strategies
|
|
315
|
+
- Caching layers and invalidation
|
|
316
|
+
- Load balancing and failover
|
|
317
|
+
|
|
318
|
+
---
|
|
319
|
+
|
|
320
|
+
*For detailed implementation patterns and database-specific optimizations, see the `modules/` directory.*
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Database Domain Modules
|
|
2
|
+
|
|
3
|
+
This directory contains specialized modules for advanced database patterns and implementations across multiple database systems.
|
|
4
|
+
|
|
5
|
+
## Module Structure
|
|
6
|
+
|
|
7
|
+
### Core Database Systems
|
|
8
|
+
|
|
9
|
+
- postgresql.md - Advanced PostgreSQL patterns, optimization, and scaling
|
|
10
|
+
- mongodb.md - NoSQL document modeling, aggregation, and performance tuning
|
|
11
|
+
- redis.md - In-memory caching, real-time data structures, and distributed systems
|
|
12
|
+
|
|
13
|
+
### Usage Patterns
|
|
14
|
+
|
|
15
|
+
1. Relational Database: Use `postgresql.md` for structured data and complex queries
|
|
16
|
+
2. Document Database: Use `mongodb.md` for flexible schemas and rapid development
|
|
17
|
+
3. In-Memory Store: Use `redis.md` for caching, sessions, and real-time features
|
|
18
|
+
4. Multi-Database: Combine modules for hybrid data architectures
|
|
19
|
+
|
|
20
|
+
### Integration Guidelines
|
|
21
|
+
|
|
22
|
+
Each module provides comprehensive patterns for:
|
|
23
|
+
|
|
24
|
+
```python
|
|
25
|
+
# PostgreSQL integration
|
|
26
|
+
from moai_domain_database.modules.postgresql import AdvancedPostgreSQL
|
|
27
|
+
|
|
28
|
+
# MongoDB integration
|
|
29
|
+
from moai_domain_database.modules.mongodb import MongoAggregation
|
|
30
|
+
|
|
31
|
+
# Redis integration
|
|
32
|
+
from moai_domain_database.modules.redis import CacheManager
|
|
33
|
+
|
|
34
|
+
# Hybrid database architecture
|
|
35
|
+
def setup_database_stack():
|
|
36
|
+
postgresql = AdvancedPostgreSQL()
|
|
37
|
+
mongodb = MongoAggregation()
|
|
38
|
+
redis = CacheManager()
|
|
39
|
+
return DatabaseStack(postgresql, mongodb, redis)
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Progressive Disclosure
|
|
43
|
+
|
|
44
|
+
- Quick Start: Use individual database modules for specific needs
|
|
45
|
+
- Implementation: Combine modules for comprehensive data solutions
|
|
46
|
+
- Advanced: Custom implementations based on module patterns
|
|
47
|
+
|
|
48
|
+
### Dependencies
|
|
49
|
+
|
|
50
|
+
- PostgreSQL: asyncpg, SQLAlchemy, Psycopg2
|
|
51
|
+
- MongoDB: pymongo, motor, mongoose
|
|
52
|
+
- Redis: redis-py, ioredis, node-redis
|
|
53
|
+
- General: Connection pooling, ORM frameworks, migration tools
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
# MongoDB Advanced Patterns
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
Advanced MongoDB patterns covering document modeling, aggregation pipelines, indexing strategies, and performance optimization for scalable NoSQL applications.
|
|
5
|
+
|
|
6
|
+
## Quick Implementation
|
|
7
|
+
|
|
8
|
+
### Document Modeling
|
|
9
|
+
|
|
10
|
+
```javascript
|
|
11
|
+
// User schema with embedded and referenced patterns
|
|
12
|
+
const userSchema = new Schema({
|
|
13
|
+
_id: ObjectId,
|
|
14
|
+
username: { type: String, required: true, unique: true },
|
|
15
|
+
email: { type: String, required: true, unique: true },
|
|
16
|
+
profile: {
|
|
17
|
+
displayName: String,
|
|
18
|
+
bio: String,
|
|
19
|
+
avatar: String,
|
|
20
|
+
preferences: {
|
|
21
|
+
theme: { type: String, enum: ['light', 'dark'], default: 'light' },
|
|
22
|
+
language: { type: String, default: 'en' },
|
|
23
|
+
notifications: {
|
|
24
|
+
email: { type: Boolean, default: true },
|
|
25
|
+
push: { type: Boolean, default: false }
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
security: {
|
|
30
|
+
passwordHash: String,
|
|
31
|
+
lastLoginAt: Date,
|
|
32
|
+
failedLoginAttempts: { type: Number, default: 0 },
|
|
33
|
+
lockedUntil: Date
|
|
34
|
+
},
|
|
35
|
+
activity: {
|
|
36
|
+
lastSeenAt: Date,
|
|
37
|
+
loginCount: { type: Number, default: 0 }
|
|
38
|
+
}
|
|
39
|
+
}, {
|
|
40
|
+
timestamps: true,
|
|
41
|
+
// Optimized indexes
|
|
42
|
+
index: [
|
|
43
|
+
{ username: 1 },
|
|
44
|
+
{ email: 1 },
|
|
45
|
+
{ 'security.lastLoginAt': -1 },
|
|
46
|
+
{ 'activity.lastSeenAt': -1 }
|
|
47
|
+
]
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
// Post schema with comments embedded for performance
|
|
51
|
+
const postSchema = new Schema({
|
|
52
|
+
_id: ObjectId,
|
|
53
|
+
authorId: { type: ObjectId, ref: 'User', required: true },
|
|
54
|
+
title: { type: String, required: true },
|
|
55
|
+
content: { type: String, required: true },
|
|
56
|
+
tags: [String],
|
|
57
|
+
metadata: {
|
|
58
|
+
viewCount: { type: Number, default: 0 },
|
|
59
|
+
likeCount: { type: Number, default: 0 },
|
|
60
|
+
commentCount: { type: Number, default: 0 }
|
|
61
|
+
},
|
|
62
|
+
// Embed recent comments for performance
|
|
63
|
+
recentComments: [{
|
|
64
|
+
_id: ObjectId,
|
|
65
|
+
authorId: ObjectId,
|
|
66
|
+
authorName: String,
|
|
67
|
+
content: String,
|
|
68
|
+
createdAt: { type: Date, default: Date.now }
|
|
69
|
+
}],
|
|
70
|
+
status: { type: String, enum: ['draft', 'published', 'archived'], default: 'draft' }
|
|
71
|
+
}, {
|
|
72
|
+
timestamps: true,
|
|
73
|
+
index: [
|
|
74
|
+
{ authorId: 1, createdAt: -1 },
|
|
75
|
+
{ status: 1, createdAt: -1 },
|
|
76
|
+
{ tags: 1 },
|
|
77
|
+
{ 'metadata.viewCount': -1 }
|
|
78
|
+
]
|
|
79
|
+
});
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Advanced Aggregation Pipelines
|
|
83
|
+
|
|
84
|
+
```javascript
|
|
85
|
+
// User analytics with complex aggregation
|
|
86
|
+
const getUserAnalytics = async (userId, timeRange) => {
|
|
87
|
+
return await User.aggregate([
|
|
88
|
+
// Match specific user
|
|
89
|
+
{ $match: { _id: userId } },
|
|
90
|
+
|
|
91
|
+
// Lookup posts and engagement
|
|
92
|
+
{
|
|
93
|
+
$lookup: {
|
|
94
|
+
from: 'posts',
|
|
95
|
+
localField: '_id',
|
|
96
|
+
foreignField: 'authorId',
|
|
97
|
+
as: 'posts'
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
|
|
101
|
+
// Unwind posts for processing
|
|
102
|
+
{ $unwind: '$posts' },
|
|
103
|
+
|
|
104
|
+
// Filter by time range
|
|
105
|
+
{
|
|
106
|
+
$match: {
|
|
107
|
+
'posts.createdAt': {
|
|
108
|
+
$gte: timeRange.start,
|
|
109
|
+
$lte: timeRange.end
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
|
|
114
|
+
// Group by user and calculate metrics
|
|
115
|
+
{
|
|
116
|
+
$group: {
|
|
117
|
+
_id: '$_id',
|
|
118
|
+
username: { $first: '$username' },
|
|
119
|
+
totalPosts: { $sum: 1 },
|
|
120
|
+
totalViews: { $sum: '$posts.metadata.viewCount' },
|
|
121
|
+
totalLikes: { $sum: '$posts.metadata.likeCount' },
|
|
122
|
+
avgViewsPerPost: { $avg: '$posts.metadata.viewCount' },
|
|
123
|
+
tags: { $push: '$posts.tags' }
|
|
124
|
+
}
|
|
125
|
+
},
|
|
126
|
+
|
|
127
|
+
// Flatten and count tags
|
|
128
|
+
{
|
|
129
|
+
$addFields: {
|
|
130
|
+
allTags: { $reduce: {
|
|
131
|
+
input: '$tags',
|
|
132
|
+
initialValue: [],
|
|
133
|
+
in: { $concatArrays: ['$$value', '$$this'] }
|
|
134
|
+
}}
|
|
135
|
+
}
|
|
136
|
+
},
|
|
137
|
+
|
|
138
|
+
{
|
|
139
|
+
$addFields: {
|
|
140
|
+
uniqueTags: { $setUnion: ['$allTags', []] },
|
|
141
|
+
topTags: { $slice: [
|
|
142
|
+
{ $sortArray: { input: { $objectToArray: { $size: '$allTags' } }, sortBy: { count: -1 } } },
|
|
143
|
+
5
|
|
144
|
+
]}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
]);
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
// Time series aggregation for activity tracking
|
|
151
|
+
const getActivityTrends = async (userId, granularity = 'daily') => {
|
|
152
|
+
const groupFormat = granularity === 'daily' ?
|
|
153
|
+
{ $dateToString: { format: '%Y-%m-%d', date: '$createdAt' } } :
|
|
154
|
+
{ $dateToString: { format: '%Y-%U', date: '$createdAt' } };
|
|
155
|
+
|
|
156
|
+
return await Activity.aggregate([
|
|
157
|
+
{ $match: { userId } },
|
|
158
|
+
{
|
|
159
|
+
$group: {
|
|
160
|
+
_id: groupFormat,
|
|
161
|
+
totalEvents: { $sum: 1 },
|
|
162
|
+
eventTypes: { $addToSet: '$eventType' },
|
|
163
|
+
uniqueSessions: { $addToSet: '$sessionId' }
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
$addFields: {
|
|
168
|
+
eventCount: { $size: '$eventTypes' },
|
|
169
|
+
sessionCount: { $size: '$uniqueSessions' }
|
|
170
|
+
}
|
|
171
|
+
},
|
|
172
|
+
{ $sort: { _id: 1 } }
|
|
173
|
+
]);
|
|
174
|
+
};
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
## Key Features
|
|
178
|
+
|
|
179
|
+
### 1. Document Design Patterns
|
|
180
|
+
- Embedding vs referencing strategies
|
|
181
|
+
- Denormalization for read performance
|
|
182
|
+
- Schema validation and constraints
|
|
183
|
+
- Array and object modeling
|
|
184
|
+
|
|
185
|
+
### 2. Indexing Strategies
|
|
186
|
+
- Compound indexes for multi-field queries
|
|
187
|
+
- Text indexes for full-text search
|
|
188
|
+
- Geospatial indexes for location data
|
|
189
|
+
- TTL indexes for automatic expiration
|
|
190
|
+
|
|
191
|
+
### 3. Aggregation Framework
|
|
192
|
+
- Multi-stage data processing pipelines
|
|
193
|
+
- Lookup operations for joins
|
|
194
|
+
- Group and accumulate operations
|
|
195
|
+
- Window functions for analytics
|
|
196
|
+
|
|
197
|
+
### 4. Performance Optimization
|
|
198
|
+
- Query pattern analysis
|
|
199
|
+
- Index usage optimization
|
|
200
|
+
- Connection pooling strategies
|
|
201
|
+
- Sharding for horizontal scaling
|
|
202
|
+
|
|
203
|
+
## Design Patterns
|
|
204
|
+
|
|
205
|
+
### Embedding Patterns
|
|
206
|
+
- One-to-One: Embed related data
|
|
207
|
+
- One-to-Many: Embed for small arrays
|
|
208
|
+
- Many-to-Many: Use references with lookups
|
|
209
|
+
|
|
210
|
+
### Reference Patterns
|
|
211
|
+
- Population for related data
|
|
212
|
+
- Manual joins with aggregation
|
|
213
|
+
- Caching frequently accessed data
|
|
214
|
+
|
|
215
|
+
### Schema Evolution
|
|
216
|
+
- Version-controlled schema changes
|
|
217
|
+
- Backward compatibility strategies
|
|
218
|
+
- Data migration approaches
|
|
219
|
+
|
|
220
|
+
## Best Practices
|
|
221
|
+
- Design for query patterns
|
|
222
|
+
- Use appropriate data types
|
|
223
|
+
- Implement proper indexing
|
|
224
|
+
- Monitor performance metrics
|
|
225
|
+
- Plan for schema evolution
|
|
226
|
+
|
|
227
|
+
## Integration Points
|
|
228
|
+
- ORMs (Mongoose, TypeGOOSE)
|
|
229
|
+
- ODMs for Node.js applications
|
|
230
|
+
- Connection pooling libraries
|
|
231
|
+
- Monitoring and analytics tools
|