@umacloud/knowledge 1.0.1
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/00-governance/governance-capabilities.md +557 -0
- package/00-governance/knowledge-map.md +39 -0
- package/00-governance/maintenance-policy.md +76 -0
- package/00-governance/review-checklist.md +81 -0
- package/README.md +13 -0
- package/ai/01-standards/agent-development-complete.md +691 -0
- package/ai/01-standards/llm-application-complete.md +488 -0
- package/ai/01-standards/mlops-complete.md +798 -0
- package/ai/01-standards/prompt-engineering-complete.md +646 -0
- package/ai/01-standards/rag-architecture-complete.md +649 -0
- package/ai/02-playbooks/llm-evaluation-playbook.md +847 -0
- package/ai/03-checklists/ai-project-checklist.md +215 -0
- package/ai/04-antipatterns/ai-antipatterns.md +661 -0
- package/ai/05-cases/case-rag-production.md +147 -0
- package/ai/06-glossary/ai-glossary.md +162 -0
- package/ai/agent-evaluation-benchmark.md +53 -0
- package/ai/ai-agent-memory-context-management.md +41 -0
- package/ai/ai-cost-capacity-optimization-playbook.md +42 -0
- package/ai/ai-data-security-and-compliance-playbook.md +37 -0
- package/ai/ai-domain-index-and-checklist.md +40 -0
- package/ai/ai-governance-maturity-model.md +50 -0
- package/ai/ai-model-selection-and-routing-strategy.md +47 -0
- package/ai/ai-observability-and-oncall-runbook.md +52 -0
- package/ai/ai-rag-engineering-playbook.md +42 -0
- package/ai/ai-red-team-and-safety-evaluation.md +42 -0
- package/ai/ai-release-readiness-and-rollback-gate.md +42 -0
- package/ai/llm-agent-engineering-deep-dive.md +57 -0
- package/ai/prompt-and-tool-guardrails.md +52 -0
- package/api/01-standards/enterprise-api-standards.md +198 -0
- package/api/01-standards/rest-api-design-guide.md +63 -0
- package/api/02-playbooks/api-pagination-playbook.md +93 -0
- package/api/02-playbooks/graphql-production-playbook.md +176 -0
- package/api/03-checklists/api-review-checklist.md +55 -0
- package/api/04-antipatterns/api-antipatterns.md +112 -0
- package/architecture/01-standards/api-gateway-patterns.md +496 -0
- package/architecture/01-standards/cloud-native-patterns.md +644 -0
- package/architecture/01-standards/distributed-systems-patterns.md +591 -0
- package/architecture/01-standards/event-driven-architecture.md +595 -0
- package/architecture/01-standards/microservices-patterns-complete.md +968 -0
- package/architecture/01-standards/microservices-patterns.md +495 -0
- package/architecture/01-standards/system-design-interview.md +664 -0
- package/architecture/02-playbooks/microservices-patterns-playbook.md +137 -0
- package/architecture/02-playbooks/migration-playbook.md +780 -0
- package/architecture/02-playbooks/system-design-playbook.md +779 -0
- package/architecture/03-checklists/architecture-decision-checklist.md +297 -0
- package/architecture/04-antipatterns/architecture-antipatterns.md +417 -0
- package/architecture/05-cases/case-netflix-microservices.md +413 -0
- package/architecture/06-glossary/architecture-glossary.md +164 -0
- package/architecture/adr-template-and-examples.md +38 -0
- package/architecture/api-gateway-deep-dive.md +1291 -0
- package/architecture/configuration-management.md +1162 -0
- package/architecture/distributed-transactions.md +1220 -0
- package/architecture/microservices-complete.md +735 -0
- package/architecture/resilience-and-disaster-patterns.md +37 -0
- package/architecture/service-governance.md +1198 -0
- package/architecture/system-architecture-deep-dive.md +37 -0
- package/backend/01-standards/analytics-and-growth.md +65 -0
- package/backend/01-standards/api-and-error-conventions.md +120 -0
- package/backend/01-standards/application-layering-and-packaging.md +160 -0
- package/backend/01-standards/auth-implementation.md +104 -0
- package/backend/01-standards/backend-framework-idioms.md +74 -0
- package/backend/01-standards/background-jobs-and-async.md +66 -0
- package/backend/01-standards/caching-strategies-complete.md +390 -0
- package/backend/01-standards/config-and-observability.md +77 -0
- package/backend/01-standards/data-modeling-and-persistence.md +94 -0
- package/backend/01-standards/django-complete.md +1765 -0
- package/backend/01-standards/email-and-notifications.md +64 -0
- package/backend/01-standards/fastapi-complete.md +925 -0
- package/backend/01-standards/file-upload-and-storage.md +66 -0
- package/backend/01-standards/graphql-api-complete.md +416 -0
- package/backend/01-standards/llm-application-standard.md +78 -0
- package/backend/01-standards/message-queue-patterns.md +379 -0
- package/backend/01-standards/microservices-and-distributed.md +78 -0
- package/backend/01-standards/nestjs-complete.md +2167 -0
- package/backend/01-standards/payment-integration.md +80 -0
- package/backend/01-standards/rate-limiting-complete.md +451 -0
- package/backend/01-standards/realtime-and-websocket.md +65 -0
- package/backend/01-standards/search-and-filtering.md +64 -0
- package/backend/01-standards/spring-boot-complete.md +445 -0
- package/backend/02-playbooks/api-design-playbook.md +718 -0
- package/backend/02-playbooks/email-send-playbook.md +130 -0
- package/backend/02-playbooks/file-upload-s3-playbook.md +153 -0
- package/backend/02-playbooks/typescript-enterprise-playbook.md +133 -0
- package/backend/02-playbooks/websocket-realtime-playbook.md +154 -0
- package/backend/03-checklists/api-launch-checklist.md +189 -0
- package/backend/04-antipatterns/backend-antipatterns.md +1051 -0
- package/blockchain/01-standards/blockchain-basics.md +557 -0
- package/blockchain/01-standards/smart-contract-development.md +1315 -0
- package/cicd/01-standards/deployment-and-delivery-standard.md +96 -0
- package/cicd/01-standards/github-actions-complete.md +473 -0
- package/cicd/01-standards/release-and-store-submission.md +75 -0
- package/cicd/02-playbooks/cicd-pipeline-playbook.md +144 -0
- package/cicd/02-playbooks/release-management-playbook.md +605 -0
- package/cicd/03-checklists/pipeline-security-checklist.md +168 -0
- package/cicd/04-antipatterns/cicd-antipatterns.md +589 -0
- package/cicd/05-cases/case-deployment-automation.md +221 -0
- package/cicd/05-cases/case-gitops-transformation.md +212 -0
- package/cicd/06-glossary/cicd-glossary.md +114 -0
- package/cicd/cicd-blueprint-deep-dive.md +38 -0
- package/cicd/release-readiness-gate.md +37 -0
- package/cloud-native/01-standards/container-security.md +741 -0
- package/cloud-native/01-standards/kubernetes-complete.md +812 -0
- package/cloud-native/02-playbooks/api-gateway-playbook.md +155 -0
- package/cloud-native/02-playbooks/gitops-with-argocd.md +760 -0
- package/cloud-native/02-playbooks/k8s-troubleshooting-playbook.md +1942 -0
- package/cloud-native/02-playbooks/message-queue-playbook.md +129 -0
- package/cloud-native/02-playbooks/multicloud-governance.md +726 -0
- package/cloud-native/02-playbooks/serverless-patterns.md +788 -0
- package/cloud-native/02-playbooks/service-mesh-playbook.md +612 -0
- package/cloud-native/02-playbooks/terraform-iac-playbook.md +143 -0
- package/cloud-native/03-checklists/container-security-checklist.md +431 -0
- package/cloud-native/03-checklists/k8s-production-readiness-checklist.md +460 -0
- package/cloud-native/04-antipatterns/container-antipatterns.md +660 -0
- package/cloud-native/04-antipatterns/k8s-antipatterns.md +743 -0
- package/cloud-native/05-cases/case-k8s-migration.md +478 -0
- package/cloud-native/05-cases/case-k8s-scaling.md +642 -0
- package/cloud-native/05-cases/case-k8s-security-incident.md +397 -0
- package/cloud-native/06-glossary/cloud-native-glossary.md +337 -0
- package/cross-platform/01-standards/cross-platform-frameworks.md +83 -0
- package/cross-platform/01-standards/platform-selection-and-architecture.md +77 -0
- package/data/01-standards/elasticsearch-complete.md +2098 -0
- package/data/01-standards/postgresql-complete.md +1613 -0
- package/data/01-standards/redis-complete.md +1527 -0
- package/data/02-playbooks/database-optimization-playbook.md +403 -0
- package/data/02-playbooks/elasticsearch-production-playbook.md +132 -0
- package/data/03-checklists/database-launch-checklist.md +187 -0
- package/data/04-antipatterns/database-antipatterns.md +873 -0
- package/data/05-cases/case-database-migration.md +310 -0
- package/data/06-glossary/database-glossary.md +440 -0
- package/data/data-governance-and-modeling-deep-dive.md +39 -0
- package/data-engineering/01-standards/airflow-complete.md +523 -0
- package/data-engineering/01-standards/kafka-complete.md +1521 -0
- package/data-engineering/02-playbooks/spark-etl-playbook.md +496 -0
- package/data-engineering/03-checklists/pipeline-launch-checklist.md +194 -0
- package/data-engineering/04-antipatterns/data-pipeline-antipatterns.md +684 -0
- package/data-engineering/05-cases/case-real-time-pipeline.md +355 -0
- package/data-engineering/06-glossary/data-engineering-glossary.md +429 -0
- package/database/01-standards/database-schema-standards.md +147 -0
- package/database/02-playbooks/postgresql-optimization-quick.md +52 -0
- package/database/02-playbooks/postgresql-performance-optimization.md +58 -0
- package/database/02-playbooks/postgresql-production-playbook.md +146 -0
- package/database/02-playbooks/redis-caching-playbook.md +117 -0
- package/database/03-checklists/database-review-checklist.md +50 -0
- package/database/04-antipatterns/database-antipatterns.md +112 -0
- package/design/01-standards/ui-design-system-complete.md +423 -0
- package/design/02-playbooks/design-handoff-playbook.md +254 -0
- package/design/02-playbooks/design-review-playbook.md +388 -0
- package/design/03-checklists/design-review-checklist.md +246 -0
- package/design/04-antipatterns/design-antipatterns.md +378 -0
- package/design/05-cases/case-design-system-adoption.md +328 -0
- package/design/06-glossary/design-glossary.md +329 -0
- package/design/ui-full-lifecycle-cross-platform-playbook.md +571 -0
- package/design/ux-system-deep-dive.md +38 -0
- package/design-systems/00-craft-rules.md +71 -0
- package/design-systems/aesthetic-families.md +43 -0
- package/design-systems/anti-ai-slop.md +162 -0
- package/design-systems/bold-geometric.md +120 -0
- package/design-systems/brutalist-bold.md +103 -0
- package/design-systems/editorial-clean.md +109 -0
- package/design-systems/glass-aurora.md +108 -0
- package/design-systems/modern-minimal.md +145 -0
- package/design-systems/premium-luxury.md +106 -0
- package/design-systems/product-type-design-map.md +48 -0
- package/design-systems/soft-warm.md +123 -0
- package/design-systems/tech-utility.md +113 -0
- package/desktop/01-standards/desktop-app-standard.md +72 -0
- package/desktop/01-standards/desktop-design.md +71 -0
- package/development/00-governance/document-template.md +41 -0
- package/development/01-standards/api-versioning-strategies.md +432 -0
- package/development/01-standards/authentication-patterns-complete.md +479 -0
- package/development/01-standards/css-architecture-complete.md +550 -0
- package/development/01-standards/database-migration-strategies.md +484 -0
- package/development/01-standards/elasticsearch-complete.md +347 -0
- package/development/01-standards/git-complete.md +371 -0
- package/development/01-standards/golang-complete.md +1565 -0
- package/development/01-standards/graphql-complete.md +298 -0
- package/development/01-standards/javascript-bundlers-complete.md +469 -0
- package/development/01-standards/javascript-typescript-complete.md +528 -0
- package/development/01-standards/jest-complete.md +275 -0
- package/development/01-standards/linux-complete.md +234 -0
- package/development/01-standards/logging-observability-complete.md +526 -0
- package/development/01-standards/microservices-communication.md +502 -0
- package/development/01-standards/mongodb-complete.md +406 -0
- package/development/01-standards/oauth2-complete.md +285 -0
- package/development/01-standards/performance-optimization-complete.md +289 -0
- package/development/01-standards/playwright-complete.md +247 -0
- package/development/01-standards/postgresql-complete.md +456 -0
- package/development/01-standards/pytest-complete.md +340 -0
- package/development/01-standards/python-async-programming.md +902 -0
- package/development/01-standards/python-complete.md +956 -0
- package/development/01-standards/python-decorators-complete.md +799 -0
- package/development/01-standards/python-design-patterns.md +2854 -0
- package/development/01-standards/python-packaging-distribution.md +420 -0
- package/development/01-standards/python-testing-strategies.md +607 -0
- package/development/01-standards/python-web-frameworks-comparison.md +471 -0
- package/development/01-standards/redis-complete.md +317 -0
- package/development/01-standards/rest-api-complete.md +316 -0
- package/development/01-standards/rust-complete.md +578 -0
- package/development/01-standards/typescript-advanced-types.md +1513 -0
- package/development/01-standards/web-security-complete.md +292 -0
- package/development/02-playbooks/api-design-playbook.md +810 -0
- package/development/02-playbooks/database-migration-playbook.md +580 -0
- package/development/02-playbooks/debugging-playbook.md +692 -0
- package/development/02-playbooks/feature-delivery-playbook.md +430 -0
- package/development/02-playbooks/incident-hotfix-playbook.md +387 -0
- package/development/02-playbooks/performance-optimization-playbook.md +531 -0
- package/development/02-playbooks/performance-tuning-playbook.md +652 -0
- package/development/02-playbooks/refactor-playbook.md +403 -0
- package/development/02-playbooks/release-playbook.md +469 -0
- package/development/03-checklists/architecture-review-checklist.md +168 -0
- package/development/03-checklists/data-migration-checklist.md +157 -0
- package/development/03-checklists/oncall-handover-checklist.md +173 -0
- package/development/03-checklists/pr-checklist.md +158 -0
- package/development/03-checklists/production-readiness-checklist.md +190 -0
- package/development/03-checklists/release-readiness-checklist.md +154 -0
- package/development/03-checklists/security-review-checklist.md +182 -0
- package/development/04-antipatterns/api-antipatterns.md +657 -0
- package/development/04-antipatterns/architecture-antipatterns.md +686 -0
- package/development/04-antipatterns/backend-antipatterns.md +648 -0
- package/development/04-antipatterns/cicd-antipatterns.md +540 -0
- package/development/04-antipatterns/code-smell-antipatterns.md +571 -0
- package/development/04-antipatterns/data-antipatterns.md +658 -0
- package/development/04-antipatterns/database-antipatterns.md +578 -0
- package/development/04-antipatterns/frontend-antipatterns.md +635 -0
- package/development/04-antipatterns/reliability-antipatterns.md +700 -0
- package/development/04-antipatterns/security-antipatterns.md +747 -0
- package/development/05-cases/case-api-version-migration.md +428 -0
- package/development/05-cases/case-authorization-hardening.md +383 -0
- package/development/05-cases/case-bluegreen-rollback.md +466 -0
- package/development/05-cases/case-cache-snowball-protection.md +485 -0
- package/development/05-cases/case-ci-cd-pipeline.md +544 -0
- package/development/05-cases/case-database-scaling.md +500 -0
- package/development/05-cases/case-db-hotspot-optimization.md +487 -0
- package/development/05-cases/case-incident-mttr-reduction.md +563 -0
- package/development/05-cases/case-microservice-migration.md +375 -0
- package/development/05-cases/case-performance-optimization.md +406 -0
- package/development/05-cases/case-security-incident-response.md +345 -0
- package/development/06-glossary/full-stack-glossary.md +166 -0
- package/development/09-maturity/quarterly-audit-template.md +35 -0
- package/development/11-ui-excellence/ui-aesthetic-system.md +41 -0
- package/development/11-ui-excellence/ui-engineering-excellence.md +435 -0
- package/development/12-scenarios/development-scenarios-guide.md +565 -0
- package/development/13-implementation-assets/implementation-toolkit.md +282 -0
- package/development/13-implementation-assets/knowledge-gates-execution.md +43 -0
- package/development/14-full-lifecycle/software-lifecycle-gates.md +511 -0
- package/development/15-lifecycle-templates/project-templates-collection.md +791 -0
- package/development/api-contract-and-versioning-guide.md +36 -0
- package/development/api-governance-complete.md +43 -0
- package/development/backend-engineering-complete.md +43 -0
- package/development/code-review-quality-complete.md +43 -0
- package/development/concurrency-reliability-complete.md +43 -0
- package/development/database-engineering-complete.md +43 -0
- package/development/engineering-effectiveness-complete.md +43 -0
- package/development/engineering-standards-deep-dive.md +38 -0
- package/development/frontend-engineering-complete.md +43 -0
- package/development/performance-capacity-complete.md +43 -0
- package/development/refactor-migration-complete.md +42 -0
- package/development/refactoring-and-techdebt-playbook.md +37 -0
- package/development/security-in-development-complete.md +43 -0
- package/devops/01-standards/cicd-pipeline-complete.md +262 -0
- package/devops/01-standards/docker-complete.md +1490 -0
- package/devops/01-standards/github-actions-complete.md +337 -0
- package/devops/01-standards/kubernetes-complete.md +638 -0
- package/devops/01-standards/terraform-complete.md +2117 -0
- package/devops/02-playbooks/docker-compose-playbook.md +233 -0
- package/devops/02-playbooks/docker-k8s-production-playbook.md +186 -0
- package/devops/02-playbooks/docker-production-playbook.md +952 -0
- package/edge-iot/01-standards/edge-iot-complete.md +473 -0
- package/experts/architect/api-design.md +178 -0
- package/experts/architect/methodology.md +124 -0
- package/experts/architect/security.md +75 -0
- package/experts/backend-lead/methodology.md +216 -0
- package/experts/devops/methodology.md +160 -0
- package/experts/frontend-lead/methodology.md +178 -0
- package/experts/product-manager/industry/ecommerce.md +43 -0
- package/experts/product-manager/industry/saas.md +40 -0
- package/experts/product-manager/methodology.md +97 -0
- package/experts/qa-lead/methodology.md +123 -0
- package/experts/qa-lead/test-strategy.md +128 -0
- package/experts/uiux-designer/methodology.md +125 -0
- package/frontend/01-standards/accessibility-complete.md +532 -0
- package/frontend/01-standards/accessibility-standard.md +74 -0
- package/frontend/01-standards/admin-dashboard-and-crud.md +72 -0
- package/frontend/01-standards/design-tokens-complete.md +444 -0
- package/frontend/01-standards/forms-and-validation.md +77 -0
- package/frontend/01-standards/frontend-architecture-and-layering.md +119 -0
- package/frontend/01-standards/i18n-and-localization.md +65 -0
- package/frontend/01-standards/nextjs-complete.md +451 -0
- package/frontend/01-standards/react-complete.md +713 -0
- package/frontend/01-standards/react-hooks-complete-guide.md +1100 -0
- package/frontend/01-standards/react-hooks-complete.md +1171 -0
- package/frontend/01-standards/seo-and-web-vitals.md +77 -0
- package/frontend/01-standards/state-management-complete.md +444 -0
- package/frontend/01-standards/vue-complete.md +499 -0
- package/frontend/01-standards/vue3-complete.md +2002 -0
- package/frontend/01-standards/web-framework-best-practices.md +64 -0
- package/frontend/01-standards/web-performance-complete.md +495 -0
- package/frontend/02-playbooks/accessibility-a11y-playbook.md +161 -0
- package/frontend/02-playbooks/frontend-performance-playbook.md +707 -0
- package/frontend/02-playbooks/i18n-internationalization-playbook.md +120 -0
- package/frontend/02-playbooks/performance-optimization-playbook.md +163 -0
- package/frontend/02-playbooks/react-nextjs-production-playbook.md +167 -0
- package/frontend/02-playbooks/react-state-management-playbook.md +173 -0
- package/frontend/03-checklists/component-quality-checklist.md +166 -0
- package/frontend/03-checklists/frontend-launch-checklist.md +299 -0
- package/frontend/04-antipatterns/frontend-antipatterns.md +886 -0
- package/frontend/05-cases/case-performance-optimization.md +274 -0
- package/harmony/01-standards/harmonyos-arkts-standard.md +75 -0
- package/harmony/01-standards/harmonyos-design.md +65 -0
- package/high-quality-engineering-playbook.md +54 -0
- package/incident/01-standards/incident-response-complete.md +303 -0
- package/incident/02-playbooks/chaos-engineering-playbook.md +883 -0
- package/incident/02-playbooks/postmortem-playbook.md +398 -0
- package/incident/03-checklists/incident-readiness-checklist.md +181 -0
- package/incident/04-antipatterns/incident-antipatterns.md +490 -0
- package/incident/05-cases/case-cascade-failure.md +176 -0
- package/incident/06-glossary/incident-glossary.md +114 -0
- package/incident/postmortem-and-response-deep-dive.md +39 -0
- package/industries/ecommerce/ecommerce-complete.md +631 -0
- package/industries/education/education-complete.md +555 -0
- package/industries/fintech/fintech-complete.md +501 -0
- package/industries/gaming/gaming-complete.md +587 -0
- package/industries/healthcare/healthcare-complete.md +452 -0
- package/low-code/01-standards/low-code-complete.md +944 -0
- package/miniprogram/01-standards/ai-common-mistakes.md +61 -0
- package/miniprogram/01-standards/miniprogram-custom-navbar-capsule.md +77 -0
- package/miniprogram/01-standards/miniprogram-design.md +61 -0
- package/miniprogram/01-standards/miniprogram-standard.md +81 -0
- package/mobile/01-standards/android-material-design.md +70 -0
- package/mobile/01-standards/flutter-complete.md +384 -0
- package/mobile/01-standards/ios-design-hig.md +78 -0
- package/mobile/01-standards/mobile-app-standard.md +85 -0
- package/mobile/01-standards/react-native-complete.md +352 -0
- package/mobile/02-playbooks/mobile-cross-platform-playbook.md +175 -0
- package/mobile/02-playbooks/mobile-performance.md +473 -0
- package/mobile/03-checklists/mobile-release-checklist.md +234 -0
- package/mobile/04-antipatterns/mobile-antipatterns.md +798 -0
- package/mobile/05-cases/case-app-performance.md +500 -0
- package/mobile/05-cases/case-app-startup-optimization.md +218 -0
- package/mobile/06-glossary/mobile-glossary.md +484 -0
- package/observability/01-standards/observability-standards.md +103 -0
- package/observability/02-playbooks/prometheus-grafana-playbook.md +135 -0
- package/observability/02-playbooks/structured-logging-playbook.md +73 -0
- package/observability/03-checklists/observability-checklist.md +54 -0
- package/observability/04-antipatterns/observability-antipatterns.md +106 -0
- package/operations/01-standards/prometheus-monitoring-complete.md +1578 -0
- package/operations/02-playbooks/capacity-planning-playbook.md +620 -0
- package/operations/03-checklists/production-launch-checklist.md +365 -0
- package/operations/04-antipatterns/operations-antipatterns.md +664 -0
- package/operations/05-cases/case-sre-practices.md +581 -0
- package/operations/06-glossary/operations-glossary.md +120 -0
- package/operations/aiops-anomaly-detection.md +758 -0
- package/operations/capacity-planning.md +1061 -0
- package/operations/chaos-engineering.md +659 -0
- package/operations/incident-command-system.md +38 -0
- package/operations/observability-complete.md +442 -0
- package/operations/slo-sli-playbook.md +517 -0
- package/operations/sre-operations-deep-dive.md +39 -0
- package/package.json +8 -0
- package/performance/01-standards/performance-and-scalability.md +80 -0
- package/performance/01-standards/performance-standards.md +156 -0
- package/performance/02-playbooks/query-optimization-playbook.md +103 -0
- package/performance/03-checklists/performance-checklist.md +56 -0
- package/performance/04-antipatterns/performance-antipatterns.md +146 -0
- package/product/01-standards/product-management-complete.md +285 -0
- package/product/02-playbooks/feature-launch-playbook.md +207 -0
- package/product/02-playbooks/user-research-playbook.md +532 -0
- package/product/03-checklists/feature-launch-checklist.md +275 -0
- package/product/04-antipatterns/product-antipatterns.md +355 -0
- package/product/05-cases/case-mvp-to-scale.md +384 -0
- package/product/06-glossary/product-glossary.md +462 -0
- package/product/feature-prioritization-framework.md +40 -0
- package/product/kpi-and-metric-tree.md +37 -0
- package/product/product-discovery-and-prd-deep-dive.md +41 -0
- package/quantum/01-standards/quantum-complete.md +1186 -0
- package/security/01-standards/api-security-complete.md +511 -0
- package/security/01-standards/container-runtime-security.md +574 -0
- package/security/01-standards/data-protection-gdpr.md +543 -0
- package/security/01-standards/owasp-top10-complete.md +1890 -0
- package/security/01-standards/secure-coding-baseline.md +90 -0
- package/security/01-standards/supply-chain-security.md +441 -0
- package/security/01-standards/web-security-checklist.md +108 -0
- package/security/01-standards/zero-trust-architecture.md +521 -0
- package/security/02-playbooks/auth-sso-playbook.md +166 -0
- package/security/02-playbooks/incident-response-security-playbook.md +588 -0
- package/security/02-playbooks/owasp-api-security-playbook.md +129 -0
- package/security/02-playbooks/payment-integration-playbook.md +119 -0
- package/security/02-playbooks/penetration-testing-playbook.md +517 -0
- package/security/03-checklists/security-audit-checklist.md +356 -0
- package/security/04-antipatterns/security-coding-antipatterns.md +580 -0
- package/security/05-cases/case-log4shell-incident.md +537 -0
- package/security/05-cases/case-major-breaches.md +468 -0
- package/security/06-glossary/security-glossary.md +212 -0
- package/security/compliance-automation.md +993 -0
- package/security/container-security.md +680 -0
- package/security/devsecops-complete.md +426 -0
- package/security/sast-dast-sca.md +775 -0
- package/security/secrets-management.md +594 -0
- package/security/security-architecture-deep-dive.md +37 -0
- package/security/threat-modeling-stride-playbook.md +40 -0
- package/seed-templates/auth-system.md +59 -0
- package/seed-templates/blog-content.md +94 -0
- package/seed-templates/dashboard.md +89 -0
- package/seed-templates/docs-site.md +73 -0
- package/seed-templates/e-commerce.md +50 -0
- package/seed-templates/saas-landing.md +92 -0
- package/seed-templates/settings-page.md +51 -0
- package/testing/01-standards/test-strategy-and-layering.md +83 -0
- package/testing/01-standards/testing-strategy-complete.md +422 -0
- package/testing/01-standards/unit-testing-best-practices.md +118 -0
- package/testing/02-playbooks/e2e-testing-playbook.md +988 -0
- package/testing/02-playbooks/testing-strategy-playbook.md +126 -0
- package/testing/03-checklists/test-strategy-checklist.md +208 -0
- package/testing/04-antipatterns/testing-antipatterns.md +718 -0
- package/testing/05-cases/case-testing-transformation.md +300 -0
- package/testing/06-glossary/testing-glossary.md +110 -0
- package/testing/risk-based-test-matrix.md +36 -0
- package/testing/testing-strategy-deep-dive.md +37 -0
|
@@ -0,0 +1,417 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: architecture-antipatterns
|
|
3
|
+
title: 架构反模式库
|
|
4
|
+
domain: architecture
|
|
5
|
+
category: 04-antipatterns
|
|
6
|
+
difficulty: intermediate
|
|
7
|
+
tags: [antipatterns, architecture, ball, distributed, golden, hammer, monolith, 候选方案]
|
|
8
|
+
quality_score: 70
|
|
9
|
+
last_updated: 2026-06-15
|
|
10
|
+
---
|
|
11
|
+
# 架构反模式库
|
|
12
|
+
|
|
13
|
+
> 覆盖软件架构设计中最常见的 8 类反模式,每个反模式包含描述、症状、真实案例和重构方案。
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## 反模式 1:大泥球 (Big Ball of Mud)
|
|
18
|
+
|
|
19
|
+
### 描述
|
|
20
|
+
|
|
21
|
+
系统缺乏清晰的模块边界和分层结构,代码随意耦合,任意组件可以调用任意其他组件。系统看似"能运行",但随着规模增长,修改任何一处都可能引发不可预测的级联故障。
|
|
22
|
+
|
|
23
|
+
### 症状
|
|
24
|
+
|
|
25
|
+
- 无法画出清晰的架构图——一切都连接一切
|
|
26
|
+
- 新人入职需要数月才能理解系统
|
|
27
|
+
- 任何"小改动"都需要全量回归测试
|
|
28
|
+
- 代码中充斥大量 `import` 指向不相关的模块
|
|
29
|
+
- 部署必须整体发布,无法独立部署子系统
|
|
30
|
+
- 循环依赖遍布代码库
|
|
31
|
+
|
|
32
|
+
### 真实案例
|
|
33
|
+
|
|
34
|
+
**某大型电商平台(2015-2018)**:初期为快速上线采用单体架构,3 年后代码量超过 200 万行,模块间超过 3000 个循环依赖。一次促销活动中修改购物车逻辑导致支付模块异常,全站故障 4 小时,直接损失超千万。事后复盘发现,购物车模块直接引用了支付模块的内部数据结构。
|
|
35
|
+
|
|
36
|
+
### 重构方案
|
|
37
|
+
|
|
38
|
+
1. **识别边界**:使用依赖分析工具(如 Structure101、Lattix)绘制实际依赖图
|
|
39
|
+
2. **定义模块契约**:为每个逻辑模块定义公开 API 接口,禁止跨模块直接访问内部类
|
|
40
|
+
3. **逐步解耦**:
|
|
41
|
+
- 引入反腐层(Anti-Corruption Layer)隔离遗留代码
|
|
42
|
+
- 按业务域拆分为独立模块,使用事件驱动通信
|
|
43
|
+
- 每次拆分一个边界,验证后再继续
|
|
44
|
+
4. **架构守护**:在 CI 中集成 ArchUnit / deptry 等工具,自动检测违规依赖
|
|
45
|
+
|
|
46
|
+
```java
|
|
47
|
+
// ArchUnit 规则示例:禁止 payment 模块访问 cart 内部实现
|
|
48
|
+
@ArchTest
|
|
49
|
+
static final ArchRule paymentShouldNotAccessCartInternals =
|
|
50
|
+
noClasses().that().resideInAPackage("..payment..")
|
|
51
|
+
.should().accessClassesThat().resideInAPackage("..cart.internal..");
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## 反模式 2:分布式单体 (Distributed Monolith)
|
|
57
|
+
|
|
58
|
+
### 描述
|
|
59
|
+
|
|
60
|
+
名义上是微服务架构,但服务之间强耦合:同步调用链过长、共享数据库、必须同时部署多个服务才能完成一次变更。拥有微服务的所有运维复杂性,却没有获得独立部署和弹性的收益。
|
|
61
|
+
|
|
62
|
+
### 症状
|
|
63
|
+
|
|
64
|
+
- 修改一个服务需要同时修改和部署其他 3-5 个服务
|
|
65
|
+
- 多个服务共享同一个数据库 schema
|
|
66
|
+
- 服务间使用同步 RPC 调用链,一个服务宕机导致全链路雪崩
|
|
67
|
+
- 没有独立的服务团队——一个团队同时维护多个服务
|
|
68
|
+
- 部署顺序有严格依赖关系
|
|
69
|
+
- 共享库包含业务逻辑而非纯工具函数
|
|
70
|
+
|
|
71
|
+
### 真实案例
|
|
72
|
+
|
|
73
|
+
**某金融科技公司(2019)**:将单体拆分为 40+ 微服务,但所有服务共享一个 PostgreSQL 实例的不同 schema,服务间通过 gRPC 同步调用。支付链路涉及 7 个服务的同步调用,平均延迟从 200ms 飙升到 1.2s。任一中间服务超时,整个支付链路失败。数据库成为瓶颈后无法独立扩容某个服务的数据层。
|
|
74
|
+
|
|
75
|
+
### 重构方案
|
|
76
|
+
|
|
77
|
+
1. **数据自治**:每个服务拥有独立数据库,通过事件同步数据
|
|
78
|
+
2. **异步化**:将同步 RPC 链替换为事件驱动(Kafka/RabbitMQ)
|
|
79
|
+
3. **Saga 模式**:长事务拆分为 Saga,每步有补偿操作
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
重构前(同步链):
|
|
83
|
+
Order → Payment → Inventory → Shipping → Notification
|
|
84
|
+
任一环节失败 = 全链路失败
|
|
85
|
+
|
|
86
|
+
重构后(编排 Saga):
|
|
87
|
+
Order Service 发布 OrderCreated 事件
|
|
88
|
+
├── Payment Service 订阅 → 发布 PaymentCompleted/PaymentFailed
|
|
89
|
+
├── Inventory Service 订阅 → 发布 StockReserved/StockFailed
|
|
90
|
+
└── Shipping Service 订阅 → 发布 ShipmentScheduled
|
|
91
|
+
每个服务独立部署、独立扩容、独立数据库
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
4. **团队对齐**:一个团队拥有一个服务(或一组内聚服务),遵循 Conway 定律
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## 反模式 3:金锤子 (Golden Hammer)
|
|
99
|
+
|
|
100
|
+
### 描述
|
|
101
|
+
|
|
102
|
+
团队对某项技术过度熟悉,将其应用于所有场景,不管是否适合。例如:所有数据存 MySQL、所有通信用 REST、所有前端用 React、所有部署用 Kubernetes。
|
|
103
|
+
|
|
104
|
+
### 症状
|
|
105
|
+
|
|
106
|
+
- 技术选型讨论时只有一个候选方案
|
|
107
|
+
- "我们一直都是这么做的"成为决策依据
|
|
108
|
+
- 简单问题用复杂方案解决(如 10 个页面的内部工具部署在 K8s 上)
|
|
109
|
+
- 不适合的场景被强行适配(如图数据存在关系数据库中用 JOIN 模拟)
|
|
110
|
+
- 团队拒绝学习新技术栈
|
|
111
|
+
|
|
112
|
+
### 真实案例
|
|
113
|
+
|
|
114
|
+
**某社交平台(2017)**:所有数据存储使用 MySQL,包括用户关系图谱(好友、关注)。当用户量突破 500 万后,6 层好友推荐查询需要多次 JOIN,单次查询耗时 12 秒。最终被迫迁移到 Neo4j,但迁移耗时 6 个月,期间该功能几乎不可用。如果初始技术选型时评估过图数据库,可以避免这次昂贵的迁移。
|
|
115
|
+
|
|
116
|
+
### 重构方案
|
|
117
|
+
|
|
118
|
+
1. **技术雷达**:建立团队技术雷达,定期评估新技术适用场景
|
|
119
|
+
2. **适配性评估框架**:每次技术选型使用 ADR(Architecture Decision Record)
|
|
120
|
+
|
|
121
|
+
```markdown
|
|
122
|
+
# ADR-007: 用户关系存储技术选型
|
|
123
|
+
|
|
124
|
+
## 背景
|
|
125
|
+
用户关系图谱查询(好友推荐、N 度关系)需要高效图遍历。
|
|
126
|
+
|
|
127
|
+
## 候选方案
|
|
128
|
+
| 方案 | 图遍历性能 | 团队熟悉度 | 运维成本 | 生态成熟度 |
|
|
129
|
+
|------|-----------|-----------|---------|-----------|
|
|
130
|
+
| MySQL + 邻接表 | 差(多次 JOIN) | 高 | 低 | 高 |
|
|
131
|
+
| Neo4j | 优(原生图引擎) | 低 | 中 | 中 |
|
|
132
|
+
| Amazon Neptune | 优 | 低 | 中(托管) | 中 |
|
|
133
|
+
|
|
134
|
+
## 决策
|
|
135
|
+
选择 Neo4j。虽然团队熟悉度低,但图遍历是核心需求,关系数据库无法满足性能要求。
|
|
136
|
+
|
|
137
|
+
## 后果
|
|
138
|
+
- 需投入 2 周团队培训
|
|
139
|
+
- 运维需增加 Neo4j 监控
|
|
140
|
+
- 图遍历查询预计从 12s 降至 50ms
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
3. **Polyglot Persistence**:接受不同数据用不同存储的事实
|
|
144
|
+
4. **PoC 验证**:关键技术选型前做 2-3 天的原型验证
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## 反模式 4:过度工程 (Over-Engineering)
|
|
149
|
+
|
|
150
|
+
### 描述
|
|
151
|
+
|
|
152
|
+
在需求不确定或规模很小时就引入大量抽象层、设计模式、框架和基础设施。"未来可能需要"成为工程决策的主要驱动力,导致系统复杂度远超实际需求。
|
|
153
|
+
|
|
154
|
+
### 症状
|
|
155
|
+
|
|
156
|
+
- 一个 CRUD 功能有 7 层抽象(Controller → Service → Manager → Repository → DAO → Mapper → Entity)
|
|
157
|
+
- 日活 100 的内部系统使用微服务 + K8s + Service Mesh
|
|
158
|
+
- 代码中大量接口只有一个实现
|
|
159
|
+
- 框架代码比业务代码多
|
|
160
|
+
- 简单功能的开发周期反而更长
|
|
161
|
+
- "这个抽象以后会有用的"——但从来没有用过
|
|
162
|
+
|
|
163
|
+
### 真实案例
|
|
164
|
+
|
|
165
|
+
**某创业公司 MVP(2020)**:3 人团队开发一个内部 CRM 工具,采用了微服务架构(12 个服务)、Kubernetes 部署、GraphQL + REST 双协议、CQRS + Event Sourcing、Redis + Elasticsearch + PostgreSQL。6 个月后只完成了用户登录和客户列表两个功能,且系统运维成本每月 3000 美元。竞争对手用 Rails 单体 3 周上线了完整 MVP。
|
|
166
|
+
|
|
167
|
+
### 重构方案
|
|
168
|
+
|
|
169
|
+
1. **YAGNI 原则**:You Aren't Gonna Need It——不到需要时不加抽象
|
|
170
|
+
2. **复杂度预算**:
|
|
171
|
+
|
|
172
|
+
```
|
|
173
|
+
规模估算公式:
|
|
174
|
+
日活用户 < 1000 → 单体 + 单数据库
|
|
175
|
+
日活用户 1000-10万 → 模块化单体 + 读写分离
|
|
176
|
+
日活用户 10万-100万 → 服务化 + 缓存层
|
|
177
|
+
日活用户 > 100万 → 微服务 + 分布式存储
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
3. **渐进式架构**:从简单开始,在真实痛点出现时再演进
|
|
181
|
+
4. **三次法则**:某个模式出现三次再抽象,而非预测性抽象
|
|
182
|
+
5. **定期审计**:移除未使用的抽象层和"预留"接口
|
|
183
|
+
|
|
184
|
+
---
|
|
185
|
+
|
|
186
|
+
## 反模式 5:循环依赖 (Circular Dependencies)
|
|
187
|
+
|
|
188
|
+
### 描述
|
|
189
|
+
|
|
190
|
+
模块 A 依赖模块 B,模块 B 又依赖模块 A(直接或间接循环)。导致无法独立编译、测试、部署,修改任一模块都可能影响整个循环链。
|
|
191
|
+
|
|
192
|
+
### 症状
|
|
193
|
+
|
|
194
|
+
- 无法单独编译或测试某个模块
|
|
195
|
+
- 导入顺序敏感,改变 import 顺序导致运行时错误
|
|
196
|
+
- 两个模块必须同时发版
|
|
197
|
+
- 依赖图中存在环路
|
|
198
|
+
- 重构时"牵一发而动全身"
|
|
199
|
+
|
|
200
|
+
### 真实案例
|
|
201
|
+
|
|
202
|
+
**某企业 ERP 系统**:订单模块依赖库存模块(检查库存),库存模块依赖订单模块(获取待发货订单),财务模块依赖订单模块(获取订单金额),订单模块又依赖财务模块(检查信用额度)。形成 Order ↔ Inventory ↔ Finance 三角循环。任何一个模块的变更都触发其他两个模块的回归测试,发版需要三个模块同时部署。
|
|
203
|
+
|
|
204
|
+
### 重构方案
|
|
205
|
+
|
|
206
|
+
1. **依赖倒置**:引入抽象接口,高层模块依赖抽象而非具体实现
|
|
207
|
+
|
|
208
|
+
```python
|
|
209
|
+
# 重构前:循环依赖
|
|
210
|
+
# order/service.py
|
|
211
|
+
from inventory.service import InventoryService # Order → Inventory
|
|
212
|
+
|
|
213
|
+
# inventory/service.py
|
|
214
|
+
from order.service import OrderService # Inventory → Order(循环!)
|
|
215
|
+
|
|
216
|
+
# 重构后:依赖倒置
|
|
217
|
+
# shared/interfaces.py
|
|
218
|
+
class OrderQueryPort(Protocol):
|
|
219
|
+
def get_pending_orders(self) -> list[Order]: ...
|
|
220
|
+
|
|
221
|
+
class InventoryQueryPort(Protocol):
|
|
222
|
+
def check_stock(self, sku: str) -> int: ...
|
|
223
|
+
|
|
224
|
+
# order/service.py
|
|
225
|
+
class OrderService:
|
|
226
|
+
def __init__(self, inventory: InventoryQueryPort): ...
|
|
227
|
+
|
|
228
|
+
# inventory/service.py
|
|
229
|
+
class InventoryService:
|
|
230
|
+
def __init__(self, orders: OrderQueryPort): ...
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
2. **事件解耦**:用领域事件替代直接调用
|
|
234
|
+
3. **提取公共模块**:将被双方依赖的逻辑提取为第三方模块
|
|
235
|
+
4. **CI 守护**:使用 deptry / import-linter 在 CI 中阻止新的循环依赖
|
|
236
|
+
|
|
237
|
+
---
|
|
238
|
+
|
|
239
|
+
## 反模式 6:神对象 (God Object)
|
|
240
|
+
|
|
241
|
+
### 描述
|
|
242
|
+
|
|
243
|
+
一个类或模块承担了过多职责,成为系统的"上帝"——它知道一切、做一切。通常表现为几千行的巨型类,修改频率极高,合并冲突频繁。
|
|
244
|
+
|
|
245
|
+
### 症状
|
|
246
|
+
|
|
247
|
+
- 单个类/文件超过 2000 行
|
|
248
|
+
- 该类被系统中 50% 以上的模块引用
|
|
249
|
+
- 修改该类的 PR 经常产生合并冲突
|
|
250
|
+
- 该类有 30+ 个公开方法,涵盖多个不同业务域
|
|
251
|
+
- 单元测试该类需要 mock 大量依赖
|
|
252
|
+
- 新人被告知"看这个类就能理解整个系统"
|
|
253
|
+
|
|
254
|
+
### 真实案例
|
|
255
|
+
|
|
256
|
+
**某 SaaS 平台的 UserManager 类**:一个 5000 行的 `UserManager` 类包含用户注册、登录认证、权限校验、个人资料管理、通知发送、活动日志、数据导出等功能。每周有 3-5 次合并冲突,新功能开发被迫在这个类中添加方法。重构前后对比:
|
|
257
|
+
|
|
258
|
+
```
|
|
259
|
+
重构前:
|
|
260
|
+
UserManager.java (5000 行, 47 个方法)
|
|
261
|
+
├── 注册/登录 (8 个方法)
|
|
262
|
+
├── 权限校验 (6 个方法)
|
|
263
|
+
├── 个人资料 (5 个方法)
|
|
264
|
+
├── 通知 (7 个方法)
|
|
265
|
+
├── 日志 (6 个方法)
|
|
266
|
+
├── 导出 (5 个方法)
|
|
267
|
+
└── 工具方法 (10 个方法)
|
|
268
|
+
|
|
269
|
+
重构后(单一职责拆分):
|
|
270
|
+
AuthenticationService.java (300 行)
|
|
271
|
+
AuthorizationService.java (250 行)
|
|
272
|
+
UserProfileService.java (200 行)
|
|
273
|
+
NotificationService.java (350 行)
|
|
274
|
+
AuditLogService.java (200 行)
|
|
275
|
+
UserDataExporter.java (180 行)
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
### 重构方案
|
|
279
|
+
|
|
280
|
+
1. **职责识别**:列出该类所有公开方法,按业务域分组
|
|
281
|
+
2. **逐步提取**:每次提取一个职责为独立类,保留旧方法作为委托(deprecate)
|
|
282
|
+
3. **Strangler Pattern**:新功能写在新类中,旧方法逐步迁移
|
|
283
|
+
4. **限制规则**:在 CI 中设置单文件行数上限警告(如 500 行)
|
|
284
|
+
|
|
285
|
+
---
|
|
286
|
+
|
|
287
|
+
## 反模式 7:上帝服务 (God Service)
|
|
288
|
+
|
|
289
|
+
### 描述
|
|
290
|
+
|
|
291
|
+
在微服务架构中,某个服务承担了过多业务逻辑,成为所有请求的必经节点。该服务成为系统的单点瓶颈和故障点,其可用性等同于整个系统的可用性。
|
|
292
|
+
|
|
293
|
+
### 症状
|
|
294
|
+
|
|
295
|
+
- 一个服务处理 60% 以上的 API 请求
|
|
296
|
+
- 该服务的 CPU/内存使用率是其他服务的 5-10 倍
|
|
297
|
+
- 该服务宕机等同于全站宕机
|
|
298
|
+
- 该服务的代码仓库提交频率是其他服务的 3 倍以上
|
|
299
|
+
- 扩容该服务时需要同步扩容其依赖的所有下游
|
|
300
|
+
- 该服务被称为"核心服务"/"平台服务"/"网关服务"
|
|
301
|
+
|
|
302
|
+
### 真实案例
|
|
303
|
+
|
|
304
|
+
**某在线教育平台(2021)**:一个名为 `platform-service` 的服务负责用户管理、课程管理、订单处理、支付对接、视频转码调度和数据报表。双十一活动期间,课程秒杀流量冲垮了该服务,连带视频播放和报表功能全部不可用。服务 SLA 从 99.9% 降到 95%。
|
|
305
|
+
|
|
306
|
+
### 重构方案
|
|
307
|
+
|
|
308
|
+
1. **领域拆分**:按 DDD 限界上下文拆分为独立服务
|
|
309
|
+
|
|
310
|
+
```
|
|
311
|
+
重构路径:
|
|
312
|
+
Phase 1: 将报表功能拆出(读多写少,可独立扩容)
|
|
313
|
+
Phase 2: 将支付对接拆出(安全合规要求独立审计)
|
|
314
|
+
Phase 3: 将视频转码调度拆出(计算密集型,需独立资源池)
|
|
315
|
+
Phase 4: 将订单处理拆出(高并发场景独立扩容)
|
|
316
|
+
Phase 5: 剩余用户 + 课程管理作为核心域服务
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
2. **BFF 模式**:前端不直连上帝服务,通过 BFF 层路由到正确的领域服务
|
|
320
|
+
3. **流量隔离**:高频/低频操作使用不同的服务实例和资源池
|
|
321
|
+
4. **熔断降级**:即使在拆分完成前,也要为不同功能设置独立的熔断策略
|
|
322
|
+
|
|
323
|
+
---
|
|
324
|
+
|
|
325
|
+
## 反模式 8:数据库驱动设计 (Database-Driven Design)
|
|
326
|
+
|
|
327
|
+
### 描述
|
|
328
|
+
|
|
329
|
+
以数据库表结构作为系统设计的起点和核心,业务逻辑围绕表结构编写。导致领域模型贫血、业务逻辑散落在 SQL 和存储过程中、技术迁移成本极高。
|
|
330
|
+
|
|
331
|
+
### 症状
|
|
332
|
+
|
|
333
|
+
- 设计讨论从 ER 图开始而非业务流程
|
|
334
|
+
- 业务规则写在存储过程和触发器中
|
|
335
|
+
- 代码中充斥直接的 SQL 查询而非领域操作
|
|
336
|
+
- 更换数据库需要重写大部分业务逻辑
|
|
337
|
+
- 领域对象只有 getter/setter,没有行为(贫血模型)
|
|
338
|
+
- 表之间的 JOIN 关系决定了代码的调用关系
|
|
339
|
+
|
|
340
|
+
### 真实案例
|
|
341
|
+
|
|
342
|
+
**某物流管理系统**:整个订单履约流程写在 15 个存储过程中(最大的一个超过 3000 行 PL/SQL),所有业务规则(运费计算、路线优化、异常处理)都在数据库层。当公司从 Oracle 迁移到 PostgreSQL 时,发现需要重写全部存储过程,且由于缺乏文档和测试,迁移耗时 18 个月,远超预期的 3 个月。
|
|
343
|
+
|
|
344
|
+
### 重构方案
|
|
345
|
+
|
|
346
|
+
1. **领域建模优先**:从业务流程和领域事件开始设计,而非表结构
|
|
347
|
+
|
|
348
|
+
```
|
|
349
|
+
数据库驱动(反模式):
|
|
350
|
+
1. 设计 ER 图
|
|
351
|
+
2. 创建表
|
|
352
|
+
3. 围绕表写 CRUD
|
|
353
|
+
4. 在存储过程中加业务逻辑
|
|
354
|
+
|
|
355
|
+
领域驱动(推荐):
|
|
356
|
+
1. 识别限界上下文和聚合根
|
|
357
|
+
2. 定义领域事件和业务操作
|
|
358
|
+
3. 实现领域模型(包含行为)
|
|
359
|
+
4. 持久化层适配领域模型
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
2. **存储过程迁移**:逐步将业务逻辑从存储过程迁移到应用层
|
|
363
|
+
3. **Repository 模式**:用 Repository 抽象隔离数据访问,领域模型不依赖数据库细节
|
|
364
|
+
|
|
365
|
+
```python
|
|
366
|
+
# 贫血模型(反模式)
|
|
367
|
+
class Order:
|
|
368
|
+
id: int
|
|
369
|
+
status: str
|
|
370
|
+
total: float
|
|
371
|
+
# 只有数据,没有行为
|
|
372
|
+
|
|
373
|
+
def cancel_order(order_id):
|
|
374
|
+
order = db.query("SELECT * FROM orders WHERE id = %s", order_id)
|
|
375
|
+
if order.status == "pending":
|
|
376
|
+
db.execute("UPDATE orders SET status = 'cancelled' WHERE id = %s", order_id)
|
|
377
|
+
db.execute("UPDATE inventory SET reserved = reserved - ... WHERE ...")
|
|
378
|
+
# 业务逻辑散落在服务层
|
|
379
|
+
|
|
380
|
+
# 充血模型(推荐)
|
|
381
|
+
class Order:
|
|
382
|
+
def cancel(self):
|
|
383
|
+
if self.status != OrderStatus.PENDING:
|
|
384
|
+
raise DomainError("只有待处理订单可以取消")
|
|
385
|
+
self.status = OrderStatus.CANCELLED
|
|
386
|
+
self.add_event(OrderCancelled(self.id))
|
|
387
|
+
# 业务逻辑内聚在领域对象中
|
|
388
|
+
```
|
|
389
|
+
|
|
390
|
+
4. **六边形架构**:领域核心不依赖任何基础设施,通过端口和适配器与外部交互
|
|
391
|
+
|
|
392
|
+
---
|
|
393
|
+
|
|
394
|
+
## 架构反模式检测与预防矩阵
|
|
395
|
+
|
|
396
|
+
| 反模式 | 早期信号 | 检测工具 | 预防措施 |
|
|
397
|
+
|--------|---------|---------|---------|
|
|
398
|
+
| 大泥球 | 循环依赖数 > 10 | Structure101, deptry | ArchUnit 规则 |
|
|
399
|
+
| 分布式单体 | 跨服务部署率 > 50% | 部署日志分析 | 服务独立性评审 |
|
|
400
|
+
| 金锤子 | 技术选型无 ADR | 技术雷达评审 | ADR 流程 |
|
|
401
|
+
| 过度工程 | 框架代码 > 业务代码 | 代码度量分析 | YAGNI 评审 |
|
|
402
|
+
| 循环依赖 | 编译/启动顺序敏感 | import-linter, Madge | CI 依赖检查 |
|
|
403
|
+
| 神对象 | 单文件 > 2000 行 | SonarQube, wc -l | 文件行数告警 |
|
|
404
|
+
| 上帝服务 | 单服务流量 > 60% | APM 监控 | DDD 限界上下文 |
|
|
405
|
+
| 数据库驱动 | 存储过程 > 50 个 | 代码搜索 | 领域建模优先 |
|
|
406
|
+
|
|
407
|
+
---
|
|
408
|
+
|
|
409
|
+
## Agent Checklist
|
|
410
|
+
|
|
411
|
+
- [ ] 所有反模式均包含描述、症状、真实案例和重构方案四部分
|
|
412
|
+
- [ ] 真实案例具有可信度和参考价值
|
|
413
|
+
- [ ] 重构方案提供渐进式路径而非"推倒重来"
|
|
414
|
+
- [ ] 包含代码示例和架构图辅助说明
|
|
415
|
+
- [ ] 检测与预防矩阵覆盖所有反模式
|
|
416
|
+
- [ ] 反模式覆盖从代码级(神对象)到系统级(分布式单体)
|
|
417
|
+
- [ ] 文件行数 >= 300 行
|