sinapse-ai 9.3.0 → 9.5.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/.claude/CLAUDE.md +60 -341
- package/.claude/hooks/enforce-architecture-first.py +197 -197
- package/.claude/hooks/enforce-git-push-authority.sh +25 -4
- package/.claude/hooks/mind-clone-governance.py +193 -193
- package/.claude/hooks/read-protection.py +152 -152
- package/.claude/hooks/sql-governance.py +183 -183
- package/.claude/hooks/verify-packages.cjs +83 -0
- package/.claude/hooks/write-path-validation.py +195 -195
- package/.claude/rules/agent-authority.md +6 -0
- package/.claude/rules/agent-handoff.md +5 -0
- package/.claude/rules/cross-squad-routing.md +5 -0
- package/.claude/rules/hook-governance.md +7 -0
- package/.claude/rules/mandatory-delegation.md +24 -0
- package/.claude/rules/mcp-usage.md +3 -1
- package/.claude/rules/project-intelligence.md +63 -0
- package/.claude/rules/response-format.md +4 -0
- package/.claude/rules/safe-collaboration.md +14 -2
- package/.claude/rules/security-data-protection.md +27 -0
- package/.claude/rules/squad-awareness.md +96 -68
- package/.claude/rules/token-economy.md +148 -0
- package/.claude/rules/tool-examples.md +6 -0
- package/.claude/rules/workflow-execution.md +7 -0
- package/.codex/agents/analyst.md +342 -71
- package/.codex/agents/architect.md +533 -68
- package/.codex/agents/data-engineer.md +530 -106
- package/.codex/agents/developer.md +657 -0
- package/.codex/agents/devops.md +639 -69
- package/.codex/agents/product-lead.md +362 -0
- package/.codex/agents/project-lead.md +405 -0
- package/.codex/agents/quality-gate.md +538 -0
- package/.codex/agents/sinapse-orqx.md +9 -7
- package/.codex/agents/sprint-lead.md +315 -0
- package/.codex/agents/squad-creator.md +402 -0
- package/.codex/agents/ux-design-expert.md +523 -0
- package/.codex/delegation-matrix.json +756 -44
- package/.codex/handoff-packet.schema.json +30 -6
- package/.sinapse-ai/core/code-intel/registry-syncer.js +56 -3
- package/.sinapse-ai/core/doctor/checks/agent-memory.js +5 -1
- package/.sinapse-ai/core/doctor/checks/claude-md.js +4 -1
- package/.sinapse-ai/core/doctor/checks/code-intel.js +5 -1
- package/.sinapse-ai/core/doctor/checks/commands-count.js +4 -1
- package/.sinapse-ai/core/doctor/checks/constitution-consistency.js +4 -1
- package/.sinapse-ai/core/doctor/checks/core-config.js +4 -1
- package/.sinapse-ai/core/doctor/checks/entity-registry.js +6 -1
- package/.sinapse-ai/core/doctor/checks/git-hooks.js +5 -1
- package/.sinapse-ai/core/doctor/checks/graph-dashboard.js +4 -1
- package/.sinapse-ai/core/doctor/checks/hooks-claude-count.js +5 -1
- package/.sinapse-ai/core/doctor/checks/ide-sync.js +4 -1
- package/.sinapse-ai/core/doctor/checks/node-version.js +4 -1
- package/.sinapse-ai/core/doctor/checks/npm-packages.js +4 -1
- package/.sinapse-ai/core/doctor/checks/rules-files.js +4 -1
- package/.sinapse-ai/core/doctor/checks/settings-json.js +4 -1
- package/.sinapse-ai/core/doctor/checks/skills-count.js +4 -1
- package/.sinapse-ai/core/doctor/index.js +157 -50
- package/.sinapse-ai/core/ids/registry-updater.js +6 -1
- package/.sinapse-ai/core/logger/index.js +319 -0
- package/.sinapse-ai/core/orchestration/terminal-spawner.js +2 -2
- package/.sinapse-ai/core/telemetry/index.js +247 -0
- package/.sinapse-ai/data/entity-registry.yaml +1060 -808
- package/.sinapse-ai/development/agents/analyst.md +90 -0
- package/.sinapse-ai/development/agents/architect.md +78 -0
- package/.sinapse-ai/development/agents/data-engineer.md +38 -0
- package/.sinapse-ai/development/agents/developer.md +97 -0
- package/.sinapse-ai/development/agents/devops.md +121 -0
- package/.sinapse-ai/development/agents/product-lead.md +27 -0
- package/.sinapse-ai/development/agents/project-lead.md +28 -0
- package/.sinapse-ai/development/agents/quality-gate.md +89 -0
- package/.sinapse-ai/development/agents/sprint-lead/MEMORY.md +8 -0
- package/.sinapse-ai/development/agents/sprint-lead.md +28 -0
- package/.sinapse-ai/development/agents/squad-creator.md +58 -0
- package/.sinapse-ai/development/agents/ux-design-expert.md +28 -0
- package/.sinapse-ai/development/checklists/agent-quality-gate.md +27 -0
- package/.sinapse-ai/development/checklists/brownfield-compatibility-checklist.md +20 -0
- package/.sinapse-ai/development/checklists/code-review-checklist.md +106 -0
- package/.sinapse-ai/development/checklists/issue-triage-checklist.md +9 -0
- package/.sinapse-ai/development/checklists/memory-audit-checklist.md +16 -0
- package/.sinapse-ai/development/checklists/pr-quality-checklist.md +72 -0
- package/.sinapse-ai/development/checklists/security-deployment-checklist.md +54 -0
- package/.sinapse-ai/development/checklists/self-critique-checklist.md +19 -1
- package/.sinapse-ai/development/knowledge-base/agent-communication-protocol.md +127 -0
- package/.sinapse-ai/development/knowledge-base/database-scaling-patterns.md +374 -0
- package/.sinapse-ai/development/knowledge-base/environment-deployment-patterns.md +353 -0
- package/.sinapse-ai/development/knowledge-base/gotchas-patterns.md +224 -0
- package/.sinapse-ai/development/knowledge-base/infrastructure-decision-framework.md +221 -0
- package/.sinapse-ai/development/knowledge-base/security-pre-deploy-checklist.md +410 -0
- package/.sinapse-ai/development/knowledge-base/software-architecture-patterns.md +299 -0
- package/.sinapse-ai/development/knowledge-base/token-economy-guide.md +198 -0
- package/.sinapse-ai/development/scripts/populate-entity-registry.js +5 -1
- package/.sinapse-ai/development/skills/captcha-handler.md +82 -0
- package/.sinapse-ai/development/skills/chrome-brain.md +81 -0
- package/.sinapse-ai/development/skills/debug.md +57 -0
- package/.sinapse-ai/development/skills/deploy-readiness.md +93 -0
- package/.sinapse-ai/development/skills/fast-review.md +69 -0
- package/.sinapse-ai/development/skills/model-router.md +92 -0
- package/.sinapse-ai/development/skills/research-synthesis.md +77 -0
- package/.sinapse-ai/development/skills/security-scan.md +73 -0
- package/.sinapse-ai/development/skills/sinapse-methodology.md +175 -0
- package/.sinapse-ai/development/skills/story-fast-track.md +71 -0
- package/.sinapse-ai/development/skills/verify.md +53 -0
- package/.sinapse-ai/development/tasks/dev-develop-story.md +10 -0
- package/.sinapse-ai/development/tasks/environment-promotion-pipeline.md +582 -0
- package/.sinapse-ai/development/tasks/generate-agent-handoff.md +223 -0
- package/.sinapse-ai/development/tasks/infrastructure-assessment.md +432 -0
- package/.sinapse-ai/development/tasks/load-testing-setup.md +611 -0
- package/.sinapse-ai/development/tasks/observability-blueprint.md +562 -0
- package/.sinapse-ai/development/templates/legal/breach-notification-tmpl.md +113 -0
- package/.sinapse-ai/development/templates/legal/privacy-policy-tmpl.md +93 -0
- package/.sinapse-ai/development/templates/legal/terms-of-service-tmpl.md +85 -0
- package/.sinapse-ai/development/templates/service-template/README.md.hbs +159 -159
- package/.sinapse-ai/development/templates/service-template/__tests__/index.test.ts.hbs +238 -238
- package/.sinapse-ai/development/templates/service-template/client.ts.hbs +404 -404
- package/.sinapse-ai/development/templates/service-template/errors.ts.hbs +183 -183
- package/.sinapse-ai/development/templates/service-template/index.ts.hbs +121 -121
- package/.sinapse-ai/development/templates/service-template/package.json.hbs +88 -88
- package/.sinapse-ai/development/templates/service-template/types.ts.hbs +146 -146
- package/.sinapse-ai/development/templates/squad/agent-template.md +17 -4
- package/.sinapse-ai/development/templates/squad/checklist-template.md +13 -5
- package/.sinapse-ai/development/templates/squad/task-template.md +7 -0
- package/.sinapse-ai/development/templates/squad/workflow-template.yaml +7 -0
- package/.sinapse-ai/development/templates/squad-template/LICENSE +22 -22
- package/.sinapse-ai/development/workflows/fast-track.yaml +87 -0
- package/.sinapse-ai/development/workflows/story-development-cycle.yaml +40 -1
- package/.sinapse-ai/hooks/ids-post-commit.js +22 -0
- package/.sinapse-ai/infrastructure/contracts/compatibility/README.md +42 -0
- package/.sinapse-ai/infrastructure/contracts/compatibility/sinapse-current.yaml +35 -0
- package/.sinapse-ai/infrastructure/scripts/llm-routing/templates/claude-free-tracked.cmd +127 -127
- package/.sinapse-ai/infrastructure/scripts/llm-routing/templates/deepseek-proxy.cmd +71 -71
- package/.sinapse-ai/infrastructure/scripts/llm-routing/templates/deepseek-usage.cmd +51 -51
- package/.sinapse-ai/infrastructure/scripts/pr-review-ai.js +16 -13
- package/.sinapse-ai/infrastructure/scripts/setup-project-infra.js +128 -0
- package/.sinapse-ai/infrastructure/scripts/test-discovery.js +8 -3
- package/.sinapse-ai/infrastructure/scripts/validate-codex-delegation.js +3 -1
- package/.sinapse-ai/infrastructure/scripts/validate-manifest-parity.js +380 -0
- package/.sinapse-ai/infrastructure/scripts/validate-parity.js +76 -25
- package/.sinapse-ai/infrastructure/templates/coderabbit.yaml.template +280 -280
- package/.sinapse-ai/infrastructure/templates/config/env.example +16 -0
- package/.sinapse-ai/infrastructure/templates/config/gitignore-additions.tmpl +59 -0
- package/.sinapse-ai/infrastructure/templates/github/CODEOWNERS.template +12 -0
- package/.sinapse-ai/infrastructure/templates/github/PULL_REQUEST_TEMPLATE.md +29 -0
- package/.sinapse-ai/infrastructure/templates/github/ci-template.yml +77 -0
- package/.sinapse-ai/infrastructure/templates/github/issue-templates/bug_report.md +34 -0
- package/.sinapse-ai/infrastructure/templates/github/issue-templates/feature_request.md +19 -0
- package/.sinapse-ai/infrastructure/templates/github-workflows/ci.yml.template +170 -170
- package/.sinapse-ai/infrastructure/templates/github-workflows/pr-automation.yml.template +331 -331
- package/.sinapse-ai/infrastructure/templates/github-workflows/release.yml.template +197 -197
- package/.sinapse-ai/infrastructure/templates/gitignore/gitignore-brownfield-merge.tmpl +19 -19
- package/.sinapse-ai/infrastructure/templates/gitignore/gitignore-node.tmpl +86 -86
- package/.sinapse-ai/infrastructure/templates/gitignore/gitignore-python.tmpl +146 -146
- package/.sinapse-ai/infrastructure/templates/gitignore/gitignore-sinapse-base.tmpl +64 -64
- package/.sinapse-ai/infrastructure/templates/sinapse-sync.yaml.template +183 -183
- package/.sinapse-ai/install-manifest.yaml +333 -162
- package/.sinapse-ai/local-config.yaml.template +65 -65
- package/.sinapse-ai/monitor/hooks/lib/__init__.py +2 -2
- package/.sinapse-ai/monitor/hooks/lib/enrich.py +59 -59
- package/.sinapse-ai/monitor/hooks/lib/send_event.py +48 -48
- package/.sinapse-ai/monitor/hooks/notification.py +30 -30
- package/.sinapse-ai/monitor/hooks/post_tool_use.py +46 -46
- package/.sinapse-ai/monitor/hooks/pre_compact.py +30 -30
- package/.sinapse-ai/monitor/hooks/pre_tool_use.py +41 -41
- package/.sinapse-ai/monitor/hooks/stop.py +30 -30
- package/.sinapse-ai/monitor/hooks/subagent_stop.py +30 -30
- package/.sinapse-ai/monitor/hooks/user_prompt_submit.py +39 -39
- package/.sinapse-ai/product/templates/adr.hbs +126 -126
- package/.sinapse-ai/product/templates/dbdr.hbs +242 -242
- package/.sinapse-ai/product/templates/epic.hbs +213 -213
- package/.sinapse-ai/product/templates/pmdr.hbs +187 -187
- package/.sinapse-ai/product/templates/prd-v2.0.hbs +217 -217
- package/.sinapse-ai/product/templates/prd.hbs +202 -202
- package/.sinapse-ai/product/templates/story-tmpl.yaml +59 -0
- package/.sinapse-ai/product/templates/story.hbs +264 -264
- package/.sinapse-ai/product/templates/task.hbs +171 -171
- package/.sinapse-ai/product/templates/tmpl-comment-on-examples.sql +159 -159
- package/.sinapse-ai/product/templates/tmpl-migration-script.sql +92 -92
- package/.sinapse-ai/product/templates/tmpl-rls-granular-policies.sql +105 -105
- package/.sinapse-ai/product/templates/tmpl-rls-kiss-policy.sql +11 -11
- package/.sinapse-ai/product/templates/tmpl-rls-roles.sql +136 -136
- package/.sinapse-ai/product/templates/tmpl-rls-simple.sql +78 -78
- package/.sinapse-ai/product/templates/tmpl-rls-tenant.sql +153 -153
- package/.sinapse-ai/product/templates/tmpl-rollback-script.sql +78 -78
- package/.sinapse-ai/product/templates/tmpl-seed-data.sql +141 -141
- package/.sinapse-ai/product/templates/tmpl-smoke-test.sql +17 -17
- package/.sinapse-ai/product/templates/tmpl-staging-copy-merge.sql +140 -140
- package/.sinapse-ai/product/templates/tmpl-stored-proc.sql +141 -141
- package/.sinapse-ai/product/templates/tmpl-trigger.sql +153 -153
- package/.sinapse-ai/product/templates/tmpl-view-materialized.sql +134 -134
- package/.sinapse-ai/product/templates/tmpl-view.sql +178 -178
- package/.sinapse-ai/scripts/diagnostics/health-dashboard/package-lock.json +427 -355
- package/LICENSE +34 -34
- package/README.en.md +167 -20
- package/README.md +190 -22
- package/bin/cli.js +510 -196
- package/bin/postinstall.js +564 -0
- package/bin/sinapse-cli +283 -283
- package/bin/sinapse-graph.js +9 -0
- package/bin/sinapse-init.js +36 -4
- package/bin/sinapse-minimal.js +20 -9
- package/bin/sinapse.js +202 -122
- package/bin/utils/deprecation-warning.js +46 -0
- package/bin/utils/pre-push-safety.js +14 -0
- package/docs/TELEMETRY.md +131 -0
- package/docs/chrome-brain-upgrade-plan.md +624 -0
- package/docs/codex-integration-process.md +22 -0
- package/docs/codex-parity-program.md +27 -0
- package/docs/framework/orqx-plan.md +1 -1
- package/docs/ide-integration.md +36 -0
- package/docs/installation/chrome-brain.md +17 -7
- package/docs/mega-upgrade-orchestration-plan.md +71 -0
- package/docs/pt/contributing.md +20 -0
- package/docs/research-synthesis-for-upgrade.md +511 -0
- package/docs/security-audit-report.md +306 -0
- package/package.json +20 -8
- package/packages/installer/src/config/configure-environment.js +19 -44
- package/packages/installer/src/detection/detect-project-type.js +181 -63
- package/packages/installer/src/installer/manifest-signature.js +32 -17
- package/packages/installer/src/wizard/i18n.js +12 -0
- package/packages/installer/src/wizard/ide-config-generator.js +8 -39
- package/packages/installer/src/wizard/index.js +119 -14
- package/packages/installer/src/wizard/questions.js +2 -3
- package/packages/installer/tests/integration/environment-configuration.test.js +7 -5
- package/packages/installer/tests/unit/detection/detect-project-type.test.js +138 -1
- package/packages/installer/tests/unit/doctor/doctor-orchestrator.test.js +3 -3
- package/packages/sinapse-install/bin/edmcp.js +0 -0
- package/packages/sinapse-install/bin/sinapse-install.js +0 -0
- package/packages/sinapse-pro-cli/bin/sinapse-pro.js +0 -0
- package/scripts/check-markdown-links.py +353 -353
- package/scripts/coverage-report-summary.js +169 -0
- package/scripts/generate-install-manifest.js +6 -2
- package/scripts/release-readiness.js +169 -0
- package/scripts/test-install-matrix-local.sh +153 -0
- package/scripts/validate-install-docs.js +394 -0
- package/scripts/validate-no-external-refs.js +376 -0
- package/scripts/validate-squad-orqx.js +302 -0
- package/scripts/validate-story-meta.js +263 -0
- package/squads/claude-code-mastery/CHANGELOG.md +1 -1
- package/squads/claude-code-mastery/README.md +2 -2
- package/squads/claude-code-mastery/knowledge-base/claude-code-internals-reference.md +927 -0
- package/squads/claude-code-mastery/squad.yaml +1 -1
- package/squads/squad-artdir/README.md +90 -0
- package/squads/squad-artdir/agents/accessibility-guardian.md +184 -0
- package/squads/squad-artdir/agents/artdir-orqx.md +145 -0
- package/squads/squad-artdir/agents/color-psychologist.md +166 -0
- package/squads/squad-artdir/agents/cro-persuasion.md +161 -0
- package/squads/squad-artdir/agents/design-system-architect.md +100 -0
- package/squads/squad-artdir/agents/ia-architect.md +169 -0
- package/squads/squad-artdir/agents/interaction-designer.md +162 -0
- package/squads/squad-artdir/agents/layout-engineer.md +163 -0
- package/squads/squad-artdir/agents/motion-architect.md +185 -0
- package/squads/squad-artdir/agents/platform-aesthetic-director.md +84 -0
- package/squads/squad-artdir/agents/premium-packaging-strategist.md +107 -0
- package/squads/squad-artdir/agents/product-surface-director.md +86 -0
- package/squads/squad-artdir/agents/type-systemist.md +138 -0
- package/squads/squad-artdir/agents/visual-strategist.md +127 -0
- package/squads/squad-artdir/checklists/seven-pillars-validation-checklist.md +172 -0
- package/squads/squad-artdir/knowledge-base/case-nyo-ia-reference.md +289 -0
- package/squads/squad-artdir/knowledge-base/deliverables-templates.md +457 -0
- package/squads/squad-artdir/knowledge-base/motion-technique-catalog.md +247 -0
- package/squads/squad-artdir/knowledge-base/premium-packaging-principles.md +133 -0
- package/squads/squad-artdir/knowledge-base/psychological-toolkit.md +229 -0
- package/squads/squad-artdir/knowledge-base/saas-art-direction-canon.md +242 -0
- package/squads/squad-artdir/knowledge-base/seven-pillars-framework.md +289 -0
- package/squads/squad-artdir/knowledge-base/ten-pillars-framework.md +221 -0
- package/squads/squad-artdir/package.json +20 -0
- package/squads/squad-artdir/squad.yaml +271 -0
- package/squads/squad-artdir/tasks/audit-conversion.md +97 -0
- package/squads/squad-artdir/tasks/audit-drift-multi-surface.md +55 -0
- package/squads/squad-artdir/tasks/consult-saas-canon.md +54 -0
- package/squads/squad-artdir/tasks/create-art-direction-brief.md +110 -0
- package/squads/squad-artdir/tasks/create-premium-packaging-brief.md +61 -0
- package/squads/squad-artdir/tasks/create-wireflow.md +84 -0
- package/squads/squad-artdir/tasks/design-color-system.md +81 -0
- package/squads/squad-artdir/tasks/design-product-surface.md +60 -0
- package/squads/squad-artdir/tasks/design-token-system.md +58 -0
- package/squads/squad-artdir/tasks/diagnose-visual-language.md +92 -0
- package/squads/squad-artdir/tasks/first-5-minutes-choreography.md +65 -0
- package/squads/squad-artdir/tasks/specify-motion-system.md +84 -0
- package/squads/squad-artdir/tasks/validate-against-pillars.md +143 -0
- package/squads/squad-artdir/templates/art-direction-brief-template.md +215 -0
- package/squads/squad-artdir/workflows/conversion-audit-cycle.yaml +78 -0
- package/squads/squad-artdir/workflows/full-art-direction-cycle.yaml +98 -0
- package/squads/squad-artdir/workflows/saas-platform-art-direction-cycle.yaml +174 -0
- package/squads/squad-brand/knowledge-base/ai-visual-generation-canon.md +234 -0
- package/squads/squad-brand/knowledge-base/archetype-brand-mapping.md +12 -1
- package/squads/squad-brand/knowledge-base/brand-activism-cultural-branding.md +216 -0
- package/squads/squad-brand/knowledge-base/brand-audit-criteria.md +58 -0
- package/squads/squad-brand/knowledge-base/brand-digital-strategy.md +188 -0
- package/squads/squad-brand/knowledge-base/brand-legal-ip.md +222 -0
- package/squads/squad-brand/knowledge-base/brand-naming-framework.md +163 -0
- package/squads/squad-brand/knowledge-base/branding-master-reference.md +1001 -0
- package/squads/squad-brand/knowledge-base/color-psychology.md +25 -12
- package/squads/squad-brand/knowledge-base/employer-personal-branding.md +206 -0
- package/squads/squad-brand/knowledge-base/routing-catalog.md +34 -0
- package/squads/squad-brand/knowledge-base/sonic-branding-principles.md +6 -1
- package/squads/squad-brand/knowledge-base/typography-personality.md +34 -0
- package/squads/squad-brand/squad.yaml +20 -6
- package/squads/squad-claude/knowledge-base/context-window-optimization.md +334 -0
- package/squads/squad-claude/knowledge-base/knowledge-architecture-reference.md +403 -0
- package/squads/squad-claude/knowledge-base/memory-systems-reference.md +412 -0
- package/squads/squad-claude/knowledge-base/obsidian-claude-integration.md +423 -0
- package/squads/squad-claude/knowledge-base/retrieval-augmented-generation.md +320 -0
- package/squads/squad-claude/knowledge-base/skill-creation-patterns.md +380 -0
- package/squads/squad-claude/knowledge-base/swarm-orchestration-patterns.md +411 -0
- package/squads/squad-cloning/knowledge-base/clone-quality-assurance.md +211 -0
- package/squads/squad-cloning/knowledge-base/confidence-scoring.md +51 -0
- package/squads/squad-cloning/knowledge-base/cross-squad-deployment.md +47 -0
- package/squads/squad-cloning/knowledge-base/ethical-guidelines.md +237 -0
- package/squads/squad-cloning/knowledge-base/knowledge-graph-for-clones.md +295 -0
- package/squads/squad-cloning/knowledge-base/memory-architecture-for-clones.md +229 -0
- package/squads/squad-cloning/knowledge-base/multi-agent-deployment-patterns.md +320 -0
- package/squads/squad-cloning/knowledge-base/skill-standard-for-clones.md +262 -0
- package/squads/squad-cloning/knowledge-base/sop-extraction-guide.md +243 -0
- package/squads/squad-commercial/knowledge-base/account-based-selling.md +206 -0
- package/squads/squad-commercial/knowledge-base/ai-as-competitive-infrastructure.md +14 -0
- package/squads/squad-commercial/knowledge-base/ai-in-sales.md +199 -0
- package/squads/squad-commercial/knowledge-base/brazilian-sales-context.md +195 -0
- package/squads/squad-commercial/knowledge-base/customer-success-operations.md +83 -2
- package/squads/squad-commercial/knowledge-base/prospecting-pipeline-generation.md +69 -0
- package/squads/squad-commercial/knowledge-base/sales-enablement-playbook.md +260 -0
- package/squads/squad-commercial/knowledge-base/sales-methodology-comparison.md +185 -0
- package/squads/squad-commercial/knowledge-base/sales-revenue-master-reference.md +1123 -0
- package/squads/squad-content/knowledge-base/ai-native-content-loop.md +220 -0
- package/squads/squad-content/knowledge-base/brazilian-content-context.md +176 -0
- package/squads/squad-content/knowledge-base/competitor-analysis-methods.md +40 -1
- package/squads/squad-content/knowledge-base/content-architecture-taxonomy.md +206 -0
- package/squads/squad-content/knowledge-base/content-formats-encyclopedia.md +58 -1
- package/squads/squad-content/knowledge-base/content-references-bibliography.md +130 -0
- package/squads/squad-content/knowledge-base/content-strategy-master-reference.md +1097 -0
- package/squads/squad-content/knowledge-base/content-tech-stack.md +150 -0
- package/squads/squad-content/knowledge-base/copywriting-formulas-library.md +188 -0
- package/squads/squad-content/knowledge-base/email-newsletter-strategy.md +161 -0
- package/squads/squad-content/knowledge-base/platform-algorithm-intelligence.md +86 -1
- package/squads/squad-content/knowledge-base/signal-intelligence-v2.md +234 -0
- package/squads/squad-content/knowledge-base/social-algorithms-master-reference.md +1007 -0
- package/squads/squad-content/knowledge-base/task-ownership-map.md +235 -0
- package/squads/squad-content/knowledge-base/video-audio-content-playbook.md +218 -0
- package/squads/squad-content/squad.yaml +187 -27
- package/squads/squad-copy/knowledge-base/ai-copy-human-loop-canon.md +235 -0
- package/squads/squad-copy/knowledge-base/ai-copy-production.md +254 -0
- package/squads/squad-copy/knowledge-base/brazilian-copywriting-context.md +242 -0
- package/squads/squad-copy/knowledge-base/email-copywriting-system.md +299 -0
- package/squads/squad-copy/knowledge-base/landing-page-copy-architecture.md +267 -0
- package/squads/squad-copy/knowledge-base/power-words-catalog.md +205 -0
- package/squads/squad-copy/knowledge-base/seo-copywriting.md +255 -0
- package/squads/squad-copy/knowledge-base/video-script-copywriting.md +239 -0
- package/squads/squad-copy/squad.yaml +19 -4
- package/squads/squad-council/knowledge-base/brand-strategy-models.md +193 -0
- package/squads/squad-council/knowledge-base/growth-strategy-models.md +267 -0
- package/squads/squad-council/knowledge-base/innovation-disruption-frameworks.md +193 -0
- package/squads/squad-council/knowledge-base/market-analysis-frameworks.md +240 -0
- package/squads/squad-council/knowledge-base/organizational-leadership-models.md +212 -0
- package/squads/squad-council/knowledge-base/sales-strategy-models.md +215 -0
- package/squads/squad-courses/knowledge-base/course-launch-strategy.md +251 -0
- package/squads/squad-courses/knowledge-base/domain-advocacia-curriculum.md +385 -0
- package/squads/squad-courses/knowledge-base/domain-contabilidade-curriculum.md +266 -0
- package/squads/squad-courses/knowledge-base/platform-comparison.md +68 -0
- package/squads/squad-courses/knowledge-base/video-production-guide.md +70 -0
- package/squads/squad-cybersecurity/knowledge-base/cloud-security-reference.md +363 -0
- package/squads/squad-cybersecurity/knowledge-base/compliance-frameworks.md +273 -0
- package/squads/squad-cybersecurity/knowledge-base/database-security.md +438 -0
- package/squads/squad-cybersecurity/knowledge-base/incident-response-playbook.md +420 -0
- package/squads/squad-cybersecurity/knowledge-base/network-security-reference.md +477 -0
- package/squads/squad-cybersecurity/knowledge-base/penetration-testing-methodology.md +350 -0
- package/squads/squad-cybersecurity/knowledge-base/vulnerability-management.md +349 -0
- package/squads/squad-design/knowledge-base/brazilian-design-context.md +223 -0
- package/squads/squad-design/knowledge-base/component-api-patterns.md +208 -4
- package/squads/squad-design/knowledge-base/cross-surface-token-canon.md +209 -0
- package/squads/squad-design/knowledge-base/design-system-master-reference.md +1302 -0
- package/squads/squad-design/knowledge-base/design-systems-frameworks.md +91 -1
- package/squads/squad-design/knowledge-base/responsive-modern-css.md +96 -4
- package/squads/squad-design/knowledge-base/wcag-aria-reference.md +117 -5
- package/squads/squad-design/knowledge-base/web-performance-reference.md +127 -4
- package/squads/squad-design/squad.yaml +19 -4
- package/squads/squad-finance/knowledge-base/brazilian-taxation.md +263 -0
- package/squads/squad-finance/knowledge-base/contabilidade-master-reference.md +998 -0
- package/squads/squad-finance/knowledge-base/finance-master-reference.md +946 -0
- package/squads/squad-finance/knowledge-base/financial-reporting-analysis.md +316 -0
- package/squads/squad-finance/knowledge-base/fintech-brazilian-context.md +242 -0
- package/squads/squad-finance/knowledge-base/fpa-planning-frameworks.md +286 -0
- package/squads/squad-finance/knowledge-base/ma-and-transactions.md +285 -0
- package/squads/squad-finance/knowledge-base/risk-management.md +233 -0
- package/squads/squad-finance/knowledge-base/startups-venture-capital.md +337 -0
- package/squads/squad-growth/knowledge-base/ai-growth-playbook.md +216 -0
- package/squads/squad-growth/knowledge-base/attribution-models.md +78 -0
- package/squads/squad-growth/knowledge-base/brazilian-growth-context.md +208 -0
- package/squads/squad-growth/knowledge-base/community-led-growth.md +175 -0
- package/squads/squad-growth/knowledge-base/content-marketing-flywheel.md +190 -0
- package/squads/squad-growth/knowledge-base/email-lifecycle-framework.md +192 -0
- package/squads/squad-growth/knowledge-base/growth-frameworks-catalog.md +82 -0
- package/squads/squad-growth/knowledge-base/growth-master-reference.md +1168 -0
- package/squads/squad-growth/knowledge-base/routing-catalog.md +53 -11
- package/squads/squad-paidmedia/knowledge-base/audiences-segmentation-deep.md +285 -0
- package/squads/squad-paidmedia/knowledge-base/creative-strategy-deep.md +294 -0
- package/squads/squad-paidmedia/knowledge-base/google-ads-account-architecture.md +87 -0
- package/squads/squad-paidmedia/knowledge-base/meta-ads-campaign-architecture.md +76 -0
- package/squads/squad-paidmedia/knowledge-base/paid-media-metrics-reference.md +117 -0
- package/squads/squad-paidmedia/knowledge-base/paid-traffic-master-reference.md +1308 -0
- package/squads/squad-paidmedia/knowledge-base/routing-catalog.md +95 -18
- package/squads/squad-paidmedia/knowledge-base/traffic-masters-frameworks.md +71 -0
- package/squads/squad-product/knowledge-base/brazilian-product-context.md +284 -0
- package/squads/squad-product/knowledge-base/discovery-methodology-playbook.md +141 -0
- package/squads/squad-product/knowledge-base/pm-frameworks-reference.md +125 -9
- package/squads/squad-product/knowledge-base/product-analytics-formulas.md +72 -0
- package/squads/squad-product/knowledge-base/product-led-growth-reference.md +155 -13
- package/squads/squad-product/knowledge-base/product-market-fit-framework.md +222 -0
- package/squads/squad-product/knowledge-base/routing-catalog.md +32 -0
- package/squads/squad-research/knowledge-base/agentic-second-brain-reference.md +591 -0
- package/squads/squad-research/knowledge-base/ai-augmented-research.md +212 -0
- package/squads/squad-research/knowledge-base/brazilian-market-research-sources.md +197 -0
- package/squads/squad-research/knowledge-base/community-platforms-reference.md +786 -0
- package/squads/squad-research/knowledge-base/community-research-methods.md +194 -0
- package/squads/squad-research/knowledge-base/mixed-methods-research-design.md +168 -0
- package/squads/squad-research/knowledge-base/network-effects-analysis.md +192 -0
- package/squads/squad-research/knowledge-base/qualitative-research-deep-methods.md +202 -0
- package/squads/squad-research/knowledge-base/quantitative-research-methods.md +208 -0
- package/squads/squad-research/knowledge-base/research-frameworks-encyclopedia.md +40 -0
- package/squads/squad-research/knowledge-base/research-synthesis-frameworks.md +223 -0
- package/squads/squad-storytelling/knowledge-base/brand-mythology-framework.md +236 -0
- package/squads/squad-storytelling/knowledge-base/brazilian-storytelling-context.md +237 -0
- package/squads/squad-storytelling/knowledge-base/data-storytelling.md +232 -0
- package/squads/squad-storytelling/knowledge-base/improv-storytelling.md +226 -0
- package/squads/squad-storytelling/knowledge-base/persuasion-narrative-techniques.md +269 -0
- package/squads/squad-storytelling/knowledge-base/social-movement-narratives.md +191 -0
- package/squads/squad-storytelling/knowledge-base/video-storytelling.md +252 -0
- package/.sinapse-ai/core/registry/service-registry.json +0 -6346
- package/.sinapse-ai/data/registry-update-log.jsonl +0 -1307
- package/.sinapse-ai/manifests/agents.csv +0 -29
- package/.sinapse-ai/manifests/tasks.csv +0 -204
- package/.sinapse-ai/manifests/workers.csv +0 -196
- package/squads/claude-code-mastery/data/swarm-orchestration-patterns.yaml +0 -378
- package/squads/squad-animations/knowledge-base/framer-motion-complete-reference.md +0 -710
- package/squads/squad-animations/knowledge-base/web-animations-api-view-transitions.md +0 -478
- package/squads/squad-growth/tasks/calculate-sample-size.md +0 -121
- package/squads/squad-paidmedia/tasks/calculate-sample-size.md +0 -57
|
@@ -0,0 +1,374 @@
|
|
|
1
|
+
# Database Scaling Patterns
|
|
2
|
+
|
|
3
|
+
> **Agente(s):** @data-engineer (Tensor)
|
|
4
|
+
> **Fonte:** supabase-at-scale.md, database-selection-architecture.md
|
|
5
|
+
> **Uso:** Consultar ao projetar schemas, otimizar queries, escolher banco de dados ou escalar Supabase
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 1. Regra "Start with PostgreSQL"
|
|
10
|
+
|
|
11
|
+
PostgreSQL cobre ~90% dos casos de uso. E a recomendacao default para QUALQUER projeto novo.
|
|
12
|
+
|
|
13
|
+
**Por que PostgreSQL primeiro:**
|
|
14
|
+
- #1 banco mais desejado (Stack Overflow 2026)
|
|
15
|
+
- 45.55% market share entre devs (superou MySQL em 2025)
|
|
16
|
+
- JSONB para dados semi-estruturados (evita precisar de MongoDB)
|
|
17
|
+
- pgvector para AI/ML (evita precisar de Pinecone)
|
|
18
|
+
- Full-text search nativo (evita Elasticsearch para casos simples)
|
|
19
|
+
- PostGIS para geoespacial
|
|
20
|
+
- pg_cron para agendamento
|
|
21
|
+
|
|
22
|
+
**Quando adicionar outro banco:**
|
|
23
|
+
```
|
|
24
|
+
PostgreSQL resolve seu problema?
|
|
25
|
+
|-- SIM --> Use PostgreSQL
|
|
26
|
+
+-- NAO --> Qual e o problema especifico?
|
|
27
|
+
|-- Latencia < 1ms para cache --> Redis / Upstash
|
|
28
|
+
|-- Busca full-text com typo tolerance --> Meilisearch / Typesense
|
|
29
|
+
|-- Time-series em volume extremo --> TimescaleDB (extension) ou InfluxDB
|
|
30
|
+
|-- Key-value com escala ilimitada --> DynamoDB
|
|
31
|
+
|-- Embeddings/vector search em escala --> Pinecone (se pgvector nao basta)
|
|
32
|
+
|-- Write throughput extremo (IoT) --> ScyllaDB / Cassandra
|
|
33
|
+
|-- Multi-region active-active com SQL --> CockroachDB / Aurora DSQL
|
|
34
|
+
+-- Schema variavel com nested docs --> MongoDB Atlas
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## 2. Database Selection Matrix
|
|
40
|
+
|
|
41
|
+
| Caso de Uso | Banco Primario | Alternativa | Evitar |
|
|
42
|
+
|------------|---------------|-------------|--------|
|
|
43
|
+
| CRUD web app | PostgreSQL (Supabase) | MySQL | MongoDB (overengineering) |
|
|
44
|
+
| Cache / Sessions | Redis (Upstash) | Memcached | PostgreSQL (lento para cache) |
|
|
45
|
+
| Busca textual < 10M docs | PostgreSQL FTS | Meilisearch | Elasticsearch (overhead) |
|
|
46
|
+
| Busca textual > 10M docs | Meilisearch / Typesense | Elasticsearch | PostgreSQL FTS (lento) |
|
|
47
|
+
| AI embeddings (< 5M vectors) | pgvector (PostgreSQL) | -- | Pinecone (custo) |
|
|
48
|
+
| AI embeddings (> 5M vectors) | Pinecone / pgvectorscale | Qdrant | pgvector puro (performance) |
|
|
49
|
+
| Real-time sync | Supabase Realtime | Firestore | WebSocket custom |
|
|
50
|
+
| Event logging | PostgreSQL + partitioning | TimescaleDB | DynamoDB (overengineering) |
|
|
51
|
+
| IoT / metrics volume extremo | TimescaleDB / InfluxDB | ScyllaDB | PostgreSQL (nao escala) |
|
|
52
|
+
| E-commerce catalogo variavel | PostgreSQL JSONB | MongoDB | DynamoDB (queries limitadas) |
|
|
53
|
+
| Mobile offline-first | Firestore | -- | Supabase (offline imaturo) |
|
|
54
|
+
| Multi-region global SQL | CockroachDB / Aurora DSQL | -- | PostgreSQL simples |
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## 3. Supabase Scaling Playbook
|
|
59
|
+
|
|
60
|
+
### 3.1 Connection Pooling (Supavisor)
|
|
61
|
+
|
|
62
|
+
| Modo | Porta | Prepared Statements | Ideal Para |
|
|
63
|
+
|------|-------|---------------------|------------|
|
|
64
|
+
| Transaction | 6543 | Nao | Serverless, APIs, Edge Functions |
|
|
65
|
+
| Session | 5432 | Sim | ORMs (Prisma, Drizzle) |
|
|
66
|
+
| Direct | conexao direta | Sim | Migrations, DDL |
|
|
67
|
+
|
|
68
|
+
**Regras:**
|
|
69
|
+
- Next.js API Routes / Edge Functions --> Transaction mode (6543)
|
|
70
|
+
- ORM com prepared statements --> Session mode (5432)
|
|
71
|
+
- Migrations / DDL --> Direct connection (sem pooler)
|
|
72
|
+
- Pool size default: 15. Para producao intensa, ajustar via dashboard.
|
|
73
|
+
|
|
74
|
+
### 3.2 Read Replicas
|
|
75
|
+
|
|
76
|
+
**Quando usar:**
|
|
77
|
+
|
|
78
|
+
| Cenario | Solucao | Motivo |
|
|
79
|
+
|---------|---------|--------|
|
|
80
|
+
| Alto volume de leitura | Read Replicas | Distribui carga de SELECT |
|
|
81
|
+
| Queries complexas pesadas | Compute maior | CPU/RAM por query |
|
|
82
|
+
| Usuarios globais | Replicas multi-regiao | Reduz latencia (geo-routing) |
|
|
83
|
+
| Writes pesados | Compute maior | Replicas nao aceitam writes |
|
|
84
|
+
| Analytics/reporting | Replica dedicada | Isola carga analitica |
|
|
85
|
+
|
|
86
|
+
**Mudanca abril 2025:** Geo-routing automatico (vs round-robin anterior).
|
|
87
|
+
|
|
88
|
+
### 3.3 Table Partitioning
|
|
89
|
+
|
|
90
|
+
| Tipo | Quando Usar | Exemplo |
|
|
91
|
+
|------|-------------|---------|
|
|
92
|
+
| Range | Dados temporais | `PARTITION BY RANGE (created_at)` |
|
|
93
|
+
| List | Categorias discretas | `PARTITION BY LIST (region)` |
|
|
94
|
+
| Hash | Distribuicao uniforme | `PARTITION BY HASH (user_id)` |
|
|
95
|
+
|
|
96
|
+
```sql
|
|
97
|
+
-- Exemplo: particoes mensais para eventos
|
|
98
|
+
CREATE TABLE events (
|
|
99
|
+
id BIGINT GENERATED ALWAYS AS IDENTITY,
|
|
100
|
+
tenant_id UUID NOT NULL,
|
|
101
|
+
payload JSONB,
|
|
102
|
+
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
103
|
+
) PARTITION BY RANGE (created_at);
|
|
104
|
+
|
|
105
|
+
CREATE TABLE events_2025_01 PARTITION OF events
|
|
106
|
+
FOR VALUES FROM ('2025-01-01') TO ('2025-02-01');
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
**Regra:** Particionar quando tabela > 10M rows ou > 10GB.
|
|
110
|
+
|
|
111
|
+
### 3.4 Vacuum Tuning
|
|
112
|
+
|
|
113
|
+
| Parametro | Default | Producao | Motivo |
|
|
114
|
+
|----------|---------|----------|--------|
|
|
115
|
+
| `autovacuum_max_workers` | 3 | 5 | Mais workers paralelos |
|
|
116
|
+
| `autovacuum_naptime` | 1min | 45s | Checa mais frequente |
|
|
117
|
+
| `vacuum_cost_limit` | 200 | 2000 | Vacuum mais agressivo |
|
|
118
|
+
| `autovacuum_vacuum_scale_factor` | 0.2 | 0.05 | Dispara com 5% dead tuples |
|
|
119
|
+
|
|
120
|
+
```sql
|
|
121
|
+
-- Tuning por tabela (alto volume de writes)
|
|
122
|
+
ALTER TABLE events SET (
|
|
123
|
+
autovacuum_vacuum_scale_factor = 0.01,
|
|
124
|
+
autovacuum_vacuum_threshold = 1000,
|
|
125
|
+
autovacuum_analyze_scale_factor = 0.02
|
|
126
|
+
);
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## 4. RLS Optimization Patterns
|
|
132
|
+
|
|
133
|
+
### Impacto Real
|
|
134
|
+
|
|
135
|
+
| Cenario | Sem otimizacao | Com otimizacao | Melhoria |
|
|
136
|
+
|---------|---------------|----------------|----------|
|
|
137
|
+
| SELECT com RLS em 1M rows | > 3 min (timeout) | 2ms | 90.000x |
|
|
138
|
+
| auth.uid() sem indice | Seq Scan | Index Scan | 100x+ |
|
|
139
|
+
| Funcao sem SELECT wrapper | Chamada por row | Cached (initPlan) | 1000x+ |
|
|
140
|
+
|
|
141
|
+
### Regra #1: SEMPRE indexe colunas em RLS policies
|
|
142
|
+
|
|
143
|
+
```sql
|
|
144
|
+
CREATE INDEX idx_orders_user_id ON orders USING btree (user_id);
|
|
145
|
+
CREATE INDEX idx_orders_tenant_id ON orders USING btree (tenant_id);
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### Regra #2: SELECT wrapper para cache de funcoes
|
|
149
|
+
|
|
150
|
+
```sql
|
|
151
|
+
-- ANTI-PATTERN (executado para CADA row)
|
|
152
|
+
CREATE POLICY "user_access" ON orders
|
|
153
|
+
FOR ALL USING (auth.uid() = user_id);
|
|
154
|
+
|
|
155
|
+
-- CORRETO (cached, executado UMA vez)
|
|
156
|
+
CREATE POLICY "user_access" ON orders
|
|
157
|
+
FOR ALL USING ((SELECT auth.uid()) = user_id);
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### Regra #3: Security definer para subqueries complexas
|
|
161
|
+
|
|
162
|
+
```sql
|
|
163
|
+
-- ANTI-PATTERN (subquery por row)
|
|
164
|
+
CREATE POLICY "team_access" ON documents
|
|
165
|
+
FOR ALL USING (
|
|
166
|
+
team_id IN (SELECT team_id FROM team_members WHERE user_id = auth.uid())
|
|
167
|
+
);
|
|
168
|
+
|
|
169
|
+
-- CORRETO (funcao cacheada)
|
|
170
|
+
CREATE OR REPLACE FUNCTION get_user_team_ids()
|
|
171
|
+
RETURNS UUID[]
|
|
172
|
+
LANGUAGE sql SECURITY DEFINER STABLE
|
|
173
|
+
SET search_path = ''
|
|
174
|
+
AS $$
|
|
175
|
+
SELECT ARRAY(
|
|
176
|
+
SELECT team_id FROM public.team_members
|
|
177
|
+
WHERE user_id = (SELECT auth.uid())
|
|
178
|
+
);
|
|
179
|
+
$$;
|
|
180
|
+
|
|
181
|
+
CREATE POLICY "team_access" ON documents
|
|
182
|
+
FOR ALL USING (team_id = ANY((SELECT get_user_team_ids())));
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
## 5. Multi-Tenant Decision Tree
|
|
188
|
+
|
|
189
|
+
```
|
|
190
|
+
Quantos tenants esperados?
|
|
191
|
+
|
|
|
192
|
+
+-- < 10 --> Schema por tenant (maximo isolamento)
|
|
193
|
+
| Cada tenant = schema PostgreSQL separado
|
|
194
|
+
| Pro: isolamento total, RLS por schema
|
|
195
|
+
| Con: migrations em N schemas, complexidade operacional
|
|
196
|
+
|
|
|
197
|
+
+-- 10-1000 --> Coluna tenant_id (shared database)
|
|
198
|
+
| Todas as tabelas tem coluna tenant_id
|
|
199
|
+
| RLS filtra por tenant via JWT custom claims
|
|
200
|
+
| Pro: simples, escala bem, uma migration
|
|
201
|
+
| Con: risco de data leak se RLS falhar
|
|
202
|
+
|
|
|
203
|
+
+-- > 1000 --> Database por tenant (se budget permitir)
|
|
204
|
+
| Ou: shared database com partitioning por tenant
|
|
205
|
+
| Pro: isolamento completo, escala independente
|
|
206
|
+
| Con: custo alto, gestao complexa
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
### Pattern Recomendado: Tenant via JWT Claims
|
|
210
|
+
|
|
211
|
+
```sql
|
|
212
|
+
-- RLS policy com tenant isolation
|
|
213
|
+
CREATE POLICY "tenant_isolation" ON orders
|
|
214
|
+
FOR ALL USING (
|
|
215
|
+
tenant_id = (
|
|
216
|
+
SELECT (auth.jwt() -> 'app_metadata' ->> 'tenant_id')::uuid
|
|
217
|
+
)
|
|
218
|
+
);
|
|
219
|
+
|
|
220
|
+
-- Indice obrigatorio
|
|
221
|
+
CREATE INDEX idx_orders_tenant ON orders (tenant_id);
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
---
|
|
225
|
+
|
|
226
|
+
## 6. Index Strategy Quick-Reference
|
|
227
|
+
|
|
228
|
+
### Tipos de Indice
|
|
229
|
+
|
|
230
|
+
| Tipo | Operadores | Quando Usar |
|
|
231
|
+
|------|-----------|-------------|
|
|
232
|
+
| B-Tree | `=`, `<`, `>`, `BETWEEN`, `ORDER BY` | Default para a maioria das queries |
|
|
233
|
+
| GIN | `@>`, `?`, `@@` | Arrays, JSONB, full-text search |
|
|
234
|
+
| GiST | `<<`, `>>`, `&&` | Geometria, ranges |
|
|
235
|
+
| BRIN | `<`, `>`, `=` | Dados naturalmente ordenados (time-series) |
|
|
236
|
+
| Hash | `=` apenas | Igualdade exata (sessions, tokens) |
|
|
237
|
+
|
|
238
|
+
### Patterns Avancados
|
|
239
|
+
|
|
240
|
+
```sql
|
|
241
|
+
-- Partial Index (indexa apenas linhas relevantes)
|
|
242
|
+
CREATE INDEX idx_active_users ON users (email)
|
|
243
|
+
WHERE status = 'active';
|
|
244
|
+
|
|
245
|
+
-- Covering Index (evita table lookup)
|
|
246
|
+
CREATE INDEX idx_orders_lookup ON orders (user_id, created_at)
|
|
247
|
+
INCLUDE (total, status);
|
|
248
|
+
|
|
249
|
+
-- Expression Index
|
|
250
|
+
CREATE INDEX idx_users_lower_email ON users (LOWER(email));
|
|
251
|
+
|
|
252
|
+
-- Composite Index (mais seletiva primeiro)
|
|
253
|
+
CREATE INDEX idx_products_cat_price ON products (category_id, price DESC);
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
### Regras de Ouro
|
|
257
|
+
|
|
258
|
+
1. Cada indice desacelera writes (INSERT, UPDATE, DELETE)
|
|
259
|
+
2. Monitore com `pg_stat_user_indexes` para indices nao utilizados
|
|
260
|
+
3. Use `EXPLAIN ANALYZE` antes e depois de criar indices
|
|
261
|
+
4. Indices em colunas boolean raramente ajudam
|
|
262
|
+
5. Composite: coluna mais seletiva primeiro
|
|
263
|
+
|
|
264
|
+
---
|
|
265
|
+
|
|
266
|
+
## 7. Query Optimization Checklist
|
|
267
|
+
|
|
268
|
+
### Diagnostico
|
|
269
|
+
|
|
270
|
+
```sql
|
|
271
|
+
-- Habilitar tracking de queries lentas
|
|
272
|
+
CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
|
|
273
|
+
|
|
274
|
+
-- Top 10 queries mais lentas
|
|
275
|
+
SELECT calls, mean_exec_time::numeric(10,2) AS avg_ms,
|
|
276
|
+
total_exec_time::numeric(10,2) AS total_ms, query
|
|
277
|
+
FROM pg_stat_statements
|
|
278
|
+
ORDER BY total_exec_time DESC LIMIT 10;
|
|
279
|
+
|
|
280
|
+
-- Analisar plano de execucao
|
|
281
|
+
EXPLAIN (ANALYZE, BUFFERS, FORMAT TEXT)
|
|
282
|
+
SELECT * FROM orders WHERE user_id = $1 AND created_at > NOW() - '30 days'::interval;
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
### Checklist de Otimizacao
|
|
286
|
+
|
|
287
|
+
- [ ] `EXPLAIN ANALYZE` mostra Index Scan (nao Seq Scan)?
|
|
288
|
+
- [ ] Indice existe para colunas em WHERE/JOIN/ORDER BY?
|
|
289
|
+
- [ ] N+1 queries eliminadas (usar JOINs ou batch)?
|
|
290
|
+
- [ ] CTEs nao estao forçando materializacao desnecessaria?
|
|
291
|
+
- [ ] Materialized views para dashboards pesados?
|
|
292
|
+
- [ ] Connection pool configurado corretamente?
|
|
293
|
+
- [ ] Vacuum rodando com frequencia adequada?
|
|
294
|
+
- [ ] Dead tuples abaixo de 5% em tabelas criticas?
|
|
295
|
+
|
|
296
|
+
### Materialized Views para Dashboards
|
|
297
|
+
|
|
298
|
+
```sql
|
|
299
|
+
CREATE MATERIALIZED VIEW mv_daily_revenue AS
|
|
300
|
+
SELECT DATE_TRUNC('day', created_at) AS day, tenant_id,
|
|
301
|
+
SUM(total) AS revenue, COUNT(*) AS order_count
|
|
302
|
+
FROM orders WHERE status = 'completed'
|
|
303
|
+
GROUP BY 1, 2;
|
|
304
|
+
|
|
305
|
+
-- Indice unico para REFRESH CONCURRENTLY
|
|
306
|
+
CREATE UNIQUE INDEX idx_mv_daily ON mv_daily_revenue (day, tenant_id);
|
|
307
|
+
|
|
308
|
+
-- Refresh sem lock
|
|
309
|
+
REFRESH MATERIALIZED VIEW CONCURRENTLY mv_daily_revenue;
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
---
|
|
313
|
+
|
|
314
|
+
## 8. Redis/Cache Patterns
|
|
315
|
+
|
|
316
|
+
### Quando Adicionar Cache
|
|
317
|
+
|
|
318
|
+
| Sinal | Acao |
|
|
319
|
+
|-------|------|
|
|
320
|
+
| Mesma query repetida > 100x/min | Cache-aside com Redis |
|
|
321
|
+
| API response > 200ms para dados estáticos | Stale-while-revalidate |
|
|
322
|
+
| Rate limiting necessario | Redis sorted sets ou Upstash Ratelimit |
|
|
323
|
+
| Session management em serverless | Upstash Redis (HTTP API) |
|
|
324
|
+
|
|
325
|
+
### Cache-Aside Pattern
|
|
326
|
+
|
|
327
|
+
```javascript
|
|
328
|
+
async function getUser(userId) {
|
|
329
|
+
const cached = await redis.get(`user:${userId}`);
|
|
330
|
+
if (cached) return JSON.parse(cached);
|
|
331
|
+
|
|
332
|
+
const user = await db.query('SELECT * FROM users WHERE id = $1', [userId]);
|
|
333
|
+
await redis.set(`user:${userId}`, JSON.stringify(user), 'EX', 3600);
|
|
334
|
+
return user;
|
|
335
|
+
}
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
**Upstash** para serverless (Edge Functions, Vercel): HTTP REST API, sem TCP connection.
|
|
339
|
+
|
|
340
|
+
---
|
|
341
|
+
|
|
342
|
+
## 9. Testing RLS com pgTAP
|
|
343
|
+
|
|
344
|
+
```sql
|
|
345
|
+
BEGIN;
|
|
346
|
+
SELECT plan(3);
|
|
347
|
+
|
|
348
|
+
SELECT tests.create_supabase_user('user_a', 'a@test.com');
|
|
349
|
+
SELECT tests.create_supabase_user('user_b', 'b@test.com');
|
|
350
|
+
|
|
351
|
+
-- User A insere dados
|
|
352
|
+
SELECT tests.authenticate_as('user_a');
|
|
353
|
+
INSERT INTO orders (user_id, total) VALUES ((SELECT auth.uid()), 100);
|
|
354
|
+
|
|
355
|
+
-- User B insere dados
|
|
356
|
+
SELECT tests.authenticate_as('user_b');
|
|
357
|
+
INSERT INTO orders (user_id, total) VALUES ((SELECT auth.uid()), 200);
|
|
358
|
+
|
|
359
|
+
-- User A so ve seus pedidos
|
|
360
|
+
SELECT tests.authenticate_as('user_a');
|
|
361
|
+
SELECT is((SELECT COUNT(*) FROM orders)::int, 1,
|
|
362
|
+
'User A should only see own orders');
|
|
363
|
+
|
|
364
|
+
SELECT * FROM finish();
|
|
365
|
+
ROLLBACK;
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
---
|
|
369
|
+
|
|
370
|
+
## 10. Cross-References
|
|
371
|
+
|
|
372
|
+
- Infrastructure tiers e quando graduar: ver `infrastructure-decision-framework.md`
|
|
373
|
+
- Secrets para database credentials: ver `environment-deployment-patterns.md`
|
|
374
|
+
- RLS validation no deploy: ver `security-pre-deploy-checklist.md`
|