@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.
Files changed (418) hide show
  1. package/00-governance/governance-capabilities.md +557 -0
  2. package/00-governance/knowledge-map.md +39 -0
  3. package/00-governance/maintenance-policy.md +76 -0
  4. package/00-governance/review-checklist.md +81 -0
  5. package/README.md +13 -0
  6. package/ai/01-standards/agent-development-complete.md +691 -0
  7. package/ai/01-standards/llm-application-complete.md +488 -0
  8. package/ai/01-standards/mlops-complete.md +798 -0
  9. package/ai/01-standards/prompt-engineering-complete.md +646 -0
  10. package/ai/01-standards/rag-architecture-complete.md +649 -0
  11. package/ai/02-playbooks/llm-evaluation-playbook.md +847 -0
  12. package/ai/03-checklists/ai-project-checklist.md +215 -0
  13. package/ai/04-antipatterns/ai-antipatterns.md +661 -0
  14. package/ai/05-cases/case-rag-production.md +147 -0
  15. package/ai/06-glossary/ai-glossary.md +162 -0
  16. package/ai/agent-evaluation-benchmark.md +53 -0
  17. package/ai/ai-agent-memory-context-management.md +41 -0
  18. package/ai/ai-cost-capacity-optimization-playbook.md +42 -0
  19. package/ai/ai-data-security-and-compliance-playbook.md +37 -0
  20. package/ai/ai-domain-index-and-checklist.md +40 -0
  21. package/ai/ai-governance-maturity-model.md +50 -0
  22. package/ai/ai-model-selection-and-routing-strategy.md +47 -0
  23. package/ai/ai-observability-and-oncall-runbook.md +52 -0
  24. package/ai/ai-rag-engineering-playbook.md +42 -0
  25. package/ai/ai-red-team-and-safety-evaluation.md +42 -0
  26. package/ai/ai-release-readiness-and-rollback-gate.md +42 -0
  27. package/ai/llm-agent-engineering-deep-dive.md +57 -0
  28. package/ai/prompt-and-tool-guardrails.md +52 -0
  29. package/api/01-standards/enterprise-api-standards.md +198 -0
  30. package/api/01-standards/rest-api-design-guide.md +63 -0
  31. package/api/02-playbooks/api-pagination-playbook.md +93 -0
  32. package/api/02-playbooks/graphql-production-playbook.md +176 -0
  33. package/api/03-checklists/api-review-checklist.md +55 -0
  34. package/api/04-antipatterns/api-antipatterns.md +112 -0
  35. package/architecture/01-standards/api-gateway-patterns.md +496 -0
  36. package/architecture/01-standards/cloud-native-patterns.md +644 -0
  37. package/architecture/01-standards/distributed-systems-patterns.md +591 -0
  38. package/architecture/01-standards/event-driven-architecture.md +595 -0
  39. package/architecture/01-standards/microservices-patterns-complete.md +968 -0
  40. package/architecture/01-standards/microservices-patterns.md +495 -0
  41. package/architecture/01-standards/system-design-interview.md +664 -0
  42. package/architecture/02-playbooks/microservices-patterns-playbook.md +137 -0
  43. package/architecture/02-playbooks/migration-playbook.md +780 -0
  44. package/architecture/02-playbooks/system-design-playbook.md +779 -0
  45. package/architecture/03-checklists/architecture-decision-checklist.md +297 -0
  46. package/architecture/04-antipatterns/architecture-antipatterns.md +417 -0
  47. package/architecture/05-cases/case-netflix-microservices.md +413 -0
  48. package/architecture/06-glossary/architecture-glossary.md +164 -0
  49. package/architecture/adr-template-and-examples.md +38 -0
  50. package/architecture/api-gateway-deep-dive.md +1291 -0
  51. package/architecture/configuration-management.md +1162 -0
  52. package/architecture/distributed-transactions.md +1220 -0
  53. package/architecture/microservices-complete.md +735 -0
  54. package/architecture/resilience-and-disaster-patterns.md +37 -0
  55. package/architecture/service-governance.md +1198 -0
  56. package/architecture/system-architecture-deep-dive.md +37 -0
  57. package/backend/01-standards/analytics-and-growth.md +65 -0
  58. package/backend/01-standards/api-and-error-conventions.md +120 -0
  59. package/backend/01-standards/application-layering-and-packaging.md +160 -0
  60. package/backend/01-standards/auth-implementation.md +104 -0
  61. package/backend/01-standards/backend-framework-idioms.md +74 -0
  62. package/backend/01-standards/background-jobs-and-async.md +66 -0
  63. package/backend/01-standards/caching-strategies-complete.md +390 -0
  64. package/backend/01-standards/config-and-observability.md +77 -0
  65. package/backend/01-standards/data-modeling-and-persistence.md +94 -0
  66. package/backend/01-standards/django-complete.md +1765 -0
  67. package/backend/01-standards/email-and-notifications.md +64 -0
  68. package/backend/01-standards/fastapi-complete.md +925 -0
  69. package/backend/01-standards/file-upload-and-storage.md +66 -0
  70. package/backend/01-standards/graphql-api-complete.md +416 -0
  71. package/backend/01-standards/llm-application-standard.md +78 -0
  72. package/backend/01-standards/message-queue-patterns.md +379 -0
  73. package/backend/01-standards/microservices-and-distributed.md +78 -0
  74. package/backend/01-standards/nestjs-complete.md +2167 -0
  75. package/backend/01-standards/payment-integration.md +80 -0
  76. package/backend/01-standards/rate-limiting-complete.md +451 -0
  77. package/backend/01-standards/realtime-and-websocket.md +65 -0
  78. package/backend/01-standards/search-and-filtering.md +64 -0
  79. package/backend/01-standards/spring-boot-complete.md +445 -0
  80. package/backend/02-playbooks/api-design-playbook.md +718 -0
  81. package/backend/02-playbooks/email-send-playbook.md +130 -0
  82. package/backend/02-playbooks/file-upload-s3-playbook.md +153 -0
  83. package/backend/02-playbooks/typescript-enterprise-playbook.md +133 -0
  84. package/backend/02-playbooks/websocket-realtime-playbook.md +154 -0
  85. package/backend/03-checklists/api-launch-checklist.md +189 -0
  86. package/backend/04-antipatterns/backend-antipatterns.md +1051 -0
  87. package/blockchain/01-standards/blockchain-basics.md +557 -0
  88. package/blockchain/01-standards/smart-contract-development.md +1315 -0
  89. package/cicd/01-standards/deployment-and-delivery-standard.md +96 -0
  90. package/cicd/01-standards/github-actions-complete.md +473 -0
  91. package/cicd/01-standards/release-and-store-submission.md +75 -0
  92. package/cicd/02-playbooks/cicd-pipeline-playbook.md +144 -0
  93. package/cicd/02-playbooks/release-management-playbook.md +605 -0
  94. package/cicd/03-checklists/pipeline-security-checklist.md +168 -0
  95. package/cicd/04-antipatterns/cicd-antipatterns.md +589 -0
  96. package/cicd/05-cases/case-deployment-automation.md +221 -0
  97. package/cicd/05-cases/case-gitops-transformation.md +212 -0
  98. package/cicd/06-glossary/cicd-glossary.md +114 -0
  99. package/cicd/cicd-blueprint-deep-dive.md +38 -0
  100. package/cicd/release-readiness-gate.md +37 -0
  101. package/cloud-native/01-standards/container-security.md +741 -0
  102. package/cloud-native/01-standards/kubernetes-complete.md +812 -0
  103. package/cloud-native/02-playbooks/api-gateway-playbook.md +155 -0
  104. package/cloud-native/02-playbooks/gitops-with-argocd.md +760 -0
  105. package/cloud-native/02-playbooks/k8s-troubleshooting-playbook.md +1942 -0
  106. package/cloud-native/02-playbooks/message-queue-playbook.md +129 -0
  107. package/cloud-native/02-playbooks/multicloud-governance.md +726 -0
  108. package/cloud-native/02-playbooks/serverless-patterns.md +788 -0
  109. package/cloud-native/02-playbooks/service-mesh-playbook.md +612 -0
  110. package/cloud-native/02-playbooks/terraform-iac-playbook.md +143 -0
  111. package/cloud-native/03-checklists/container-security-checklist.md +431 -0
  112. package/cloud-native/03-checklists/k8s-production-readiness-checklist.md +460 -0
  113. package/cloud-native/04-antipatterns/container-antipatterns.md +660 -0
  114. package/cloud-native/04-antipatterns/k8s-antipatterns.md +743 -0
  115. package/cloud-native/05-cases/case-k8s-migration.md +478 -0
  116. package/cloud-native/05-cases/case-k8s-scaling.md +642 -0
  117. package/cloud-native/05-cases/case-k8s-security-incident.md +397 -0
  118. package/cloud-native/06-glossary/cloud-native-glossary.md +337 -0
  119. package/cross-platform/01-standards/cross-platform-frameworks.md +83 -0
  120. package/cross-platform/01-standards/platform-selection-and-architecture.md +77 -0
  121. package/data/01-standards/elasticsearch-complete.md +2098 -0
  122. package/data/01-standards/postgresql-complete.md +1613 -0
  123. package/data/01-standards/redis-complete.md +1527 -0
  124. package/data/02-playbooks/database-optimization-playbook.md +403 -0
  125. package/data/02-playbooks/elasticsearch-production-playbook.md +132 -0
  126. package/data/03-checklists/database-launch-checklist.md +187 -0
  127. package/data/04-antipatterns/database-antipatterns.md +873 -0
  128. package/data/05-cases/case-database-migration.md +310 -0
  129. package/data/06-glossary/database-glossary.md +440 -0
  130. package/data/data-governance-and-modeling-deep-dive.md +39 -0
  131. package/data-engineering/01-standards/airflow-complete.md +523 -0
  132. package/data-engineering/01-standards/kafka-complete.md +1521 -0
  133. package/data-engineering/02-playbooks/spark-etl-playbook.md +496 -0
  134. package/data-engineering/03-checklists/pipeline-launch-checklist.md +194 -0
  135. package/data-engineering/04-antipatterns/data-pipeline-antipatterns.md +684 -0
  136. package/data-engineering/05-cases/case-real-time-pipeline.md +355 -0
  137. package/data-engineering/06-glossary/data-engineering-glossary.md +429 -0
  138. package/database/01-standards/database-schema-standards.md +147 -0
  139. package/database/02-playbooks/postgresql-optimization-quick.md +52 -0
  140. package/database/02-playbooks/postgresql-performance-optimization.md +58 -0
  141. package/database/02-playbooks/postgresql-production-playbook.md +146 -0
  142. package/database/02-playbooks/redis-caching-playbook.md +117 -0
  143. package/database/03-checklists/database-review-checklist.md +50 -0
  144. package/database/04-antipatterns/database-antipatterns.md +112 -0
  145. package/design/01-standards/ui-design-system-complete.md +423 -0
  146. package/design/02-playbooks/design-handoff-playbook.md +254 -0
  147. package/design/02-playbooks/design-review-playbook.md +388 -0
  148. package/design/03-checklists/design-review-checklist.md +246 -0
  149. package/design/04-antipatterns/design-antipatterns.md +378 -0
  150. package/design/05-cases/case-design-system-adoption.md +328 -0
  151. package/design/06-glossary/design-glossary.md +329 -0
  152. package/design/ui-full-lifecycle-cross-platform-playbook.md +571 -0
  153. package/design/ux-system-deep-dive.md +38 -0
  154. package/design-systems/00-craft-rules.md +71 -0
  155. package/design-systems/aesthetic-families.md +43 -0
  156. package/design-systems/anti-ai-slop.md +162 -0
  157. package/design-systems/bold-geometric.md +120 -0
  158. package/design-systems/brutalist-bold.md +103 -0
  159. package/design-systems/editorial-clean.md +109 -0
  160. package/design-systems/glass-aurora.md +108 -0
  161. package/design-systems/modern-minimal.md +145 -0
  162. package/design-systems/premium-luxury.md +106 -0
  163. package/design-systems/product-type-design-map.md +48 -0
  164. package/design-systems/soft-warm.md +123 -0
  165. package/design-systems/tech-utility.md +113 -0
  166. package/desktop/01-standards/desktop-app-standard.md +72 -0
  167. package/desktop/01-standards/desktop-design.md +71 -0
  168. package/development/00-governance/document-template.md +41 -0
  169. package/development/01-standards/api-versioning-strategies.md +432 -0
  170. package/development/01-standards/authentication-patterns-complete.md +479 -0
  171. package/development/01-standards/css-architecture-complete.md +550 -0
  172. package/development/01-standards/database-migration-strategies.md +484 -0
  173. package/development/01-standards/elasticsearch-complete.md +347 -0
  174. package/development/01-standards/git-complete.md +371 -0
  175. package/development/01-standards/golang-complete.md +1565 -0
  176. package/development/01-standards/graphql-complete.md +298 -0
  177. package/development/01-standards/javascript-bundlers-complete.md +469 -0
  178. package/development/01-standards/javascript-typescript-complete.md +528 -0
  179. package/development/01-standards/jest-complete.md +275 -0
  180. package/development/01-standards/linux-complete.md +234 -0
  181. package/development/01-standards/logging-observability-complete.md +526 -0
  182. package/development/01-standards/microservices-communication.md +502 -0
  183. package/development/01-standards/mongodb-complete.md +406 -0
  184. package/development/01-standards/oauth2-complete.md +285 -0
  185. package/development/01-standards/performance-optimization-complete.md +289 -0
  186. package/development/01-standards/playwright-complete.md +247 -0
  187. package/development/01-standards/postgresql-complete.md +456 -0
  188. package/development/01-standards/pytest-complete.md +340 -0
  189. package/development/01-standards/python-async-programming.md +902 -0
  190. package/development/01-standards/python-complete.md +956 -0
  191. package/development/01-standards/python-decorators-complete.md +799 -0
  192. package/development/01-standards/python-design-patterns.md +2854 -0
  193. package/development/01-standards/python-packaging-distribution.md +420 -0
  194. package/development/01-standards/python-testing-strategies.md +607 -0
  195. package/development/01-standards/python-web-frameworks-comparison.md +471 -0
  196. package/development/01-standards/redis-complete.md +317 -0
  197. package/development/01-standards/rest-api-complete.md +316 -0
  198. package/development/01-standards/rust-complete.md +578 -0
  199. package/development/01-standards/typescript-advanced-types.md +1513 -0
  200. package/development/01-standards/web-security-complete.md +292 -0
  201. package/development/02-playbooks/api-design-playbook.md +810 -0
  202. package/development/02-playbooks/database-migration-playbook.md +580 -0
  203. package/development/02-playbooks/debugging-playbook.md +692 -0
  204. package/development/02-playbooks/feature-delivery-playbook.md +430 -0
  205. package/development/02-playbooks/incident-hotfix-playbook.md +387 -0
  206. package/development/02-playbooks/performance-optimization-playbook.md +531 -0
  207. package/development/02-playbooks/performance-tuning-playbook.md +652 -0
  208. package/development/02-playbooks/refactor-playbook.md +403 -0
  209. package/development/02-playbooks/release-playbook.md +469 -0
  210. package/development/03-checklists/architecture-review-checklist.md +168 -0
  211. package/development/03-checklists/data-migration-checklist.md +157 -0
  212. package/development/03-checklists/oncall-handover-checklist.md +173 -0
  213. package/development/03-checklists/pr-checklist.md +158 -0
  214. package/development/03-checklists/production-readiness-checklist.md +190 -0
  215. package/development/03-checklists/release-readiness-checklist.md +154 -0
  216. package/development/03-checklists/security-review-checklist.md +182 -0
  217. package/development/04-antipatterns/api-antipatterns.md +657 -0
  218. package/development/04-antipatterns/architecture-antipatterns.md +686 -0
  219. package/development/04-antipatterns/backend-antipatterns.md +648 -0
  220. package/development/04-antipatterns/cicd-antipatterns.md +540 -0
  221. package/development/04-antipatterns/code-smell-antipatterns.md +571 -0
  222. package/development/04-antipatterns/data-antipatterns.md +658 -0
  223. package/development/04-antipatterns/database-antipatterns.md +578 -0
  224. package/development/04-antipatterns/frontend-antipatterns.md +635 -0
  225. package/development/04-antipatterns/reliability-antipatterns.md +700 -0
  226. package/development/04-antipatterns/security-antipatterns.md +747 -0
  227. package/development/05-cases/case-api-version-migration.md +428 -0
  228. package/development/05-cases/case-authorization-hardening.md +383 -0
  229. package/development/05-cases/case-bluegreen-rollback.md +466 -0
  230. package/development/05-cases/case-cache-snowball-protection.md +485 -0
  231. package/development/05-cases/case-ci-cd-pipeline.md +544 -0
  232. package/development/05-cases/case-database-scaling.md +500 -0
  233. package/development/05-cases/case-db-hotspot-optimization.md +487 -0
  234. package/development/05-cases/case-incident-mttr-reduction.md +563 -0
  235. package/development/05-cases/case-microservice-migration.md +375 -0
  236. package/development/05-cases/case-performance-optimization.md +406 -0
  237. package/development/05-cases/case-security-incident-response.md +345 -0
  238. package/development/06-glossary/full-stack-glossary.md +166 -0
  239. package/development/09-maturity/quarterly-audit-template.md +35 -0
  240. package/development/11-ui-excellence/ui-aesthetic-system.md +41 -0
  241. package/development/11-ui-excellence/ui-engineering-excellence.md +435 -0
  242. package/development/12-scenarios/development-scenarios-guide.md +565 -0
  243. package/development/13-implementation-assets/implementation-toolkit.md +282 -0
  244. package/development/13-implementation-assets/knowledge-gates-execution.md +43 -0
  245. package/development/14-full-lifecycle/software-lifecycle-gates.md +511 -0
  246. package/development/15-lifecycle-templates/project-templates-collection.md +791 -0
  247. package/development/api-contract-and-versioning-guide.md +36 -0
  248. package/development/api-governance-complete.md +43 -0
  249. package/development/backend-engineering-complete.md +43 -0
  250. package/development/code-review-quality-complete.md +43 -0
  251. package/development/concurrency-reliability-complete.md +43 -0
  252. package/development/database-engineering-complete.md +43 -0
  253. package/development/engineering-effectiveness-complete.md +43 -0
  254. package/development/engineering-standards-deep-dive.md +38 -0
  255. package/development/frontend-engineering-complete.md +43 -0
  256. package/development/performance-capacity-complete.md +43 -0
  257. package/development/refactor-migration-complete.md +42 -0
  258. package/development/refactoring-and-techdebt-playbook.md +37 -0
  259. package/development/security-in-development-complete.md +43 -0
  260. package/devops/01-standards/cicd-pipeline-complete.md +262 -0
  261. package/devops/01-standards/docker-complete.md +1490 -0
  262. package/devops/01-standards/github-actions-complete.md +337 -0
  263. package/devops/01-standards/kubernetes-complete.md +638 -0
  264. package/devops/01-standards/terraform-complete.md +2117 -0
  265. package/devops/02-playbooks/docker-compose-playbook.md +233 -0
  266. package/devops/02-playbooks/docker-k8s-production-playbook.md +186 -0
  267. package/devops/02-playbooks/docker-production-playbook.md +952 -0
  268. package/edge-iot/01-standards/edge-iot-complete.md +473 -0
  269. package/experts/architect/api-design.md +178 -0
  270. package/experts/architect/methodology.md +124 -0
  271. package/experts/architect/security.md +75 -0
  272. package/experts/backend-lead/methodology.md +216 -0
  273. package/experts/devops/methodology.md +160 -0
  274. package/experts/frontend-lead/methodology.md +178 -0
  275. package/experts/product-manager/industry/ecommerce.md +43 -0
  276. package/experts/product-manager/industry/saas.md +40 -0
  277. package/experts/product-manager/methodology.md +97 -0
  278. package/experts/qa-lead/methodology.md +123 -0
  279. package/experts/qa-lead/test-strategy.md +128 -0
  280. package/experts/uiux-designer/methodology.md +125 -0
  281. package/frontend/01-standards/accessibility-complete.md +532 -0
  282. package/frontend/01-standards/accessibility-standard.md +74 -0
  283. package/frontend/01-standards/admin-dashboard-and-crud.md +72 -0
  284. package/frontend/01-standards/design-tokens-complete.md +444 -0
  285. package/frontend/01-standards/forms-and-validation.md +77 -0
  286. package/frontend/01-standards/frontend-architecture-and-layering.md +119 -0
  287. package/frontend/01-standards/i18n-and-localization.md +65 -0
  288. package/frontend/01-standards/nextjs-complete.md +451 -0
  289. package/frontend/01-standards/react-complete.md +713 -0
  290. package/frontend/01-standards/react-hooks-complete-guide.md +1100 -0
  291. package/frontend/01-standards/react-hooks-complete.md +1171 -0
  292. package/frontend/01-standards/seo-and-web-vitals.md +77 -0
  293. package/frontend/01-standards/state-management-complete.md +444 -0
  294. package/frontend/01-standards/vue-complete.md +499 -0
  295. package/frontend/01-standards/vue3-complete.md +2002 -0
  296. package/frontend/01-standards/web-framework-best-practices.md +64 -0
  297. package/frontend/01-standards/web-performance-complete.md +495 -0
  298. package/frontend/02-playbooks/accessibility-a11y-playbook.md +161 -0
  299. package/frontend/02-playbooks/frontend-performance-playbook.md +707 -0
  300. package/frontend/02-playbooks/i18n-internationalization-playbook.md +120 -0
  301. package/frontend/02-playbooks/performance-optimization-playbook.md +163 -0
  302. package/frontend/02-playbooks/react-nextjs-production-playbook.md +167 -0
  303. package/frontend/02-playbooks/react-state-management-playbook.md +173 -0
  304. package/frontend/03-checklists/component-quality-checklist.md +166 -0
  305. package/frontend/03-checklists/frontend-launch-checklist.md +299 -0
  306. package/frontend/04-antipatterns/frontend-antipatterns.md +886 -0
  307. package/frontend/05-cases/case-performance-optimization.md +274 -0
  308. package/harmony/01-standards/harmonyos-arkts-standard.md +75 -0
  309. package/harmony/01-standards/harmonyos-design.md +65 -0
  310. package/high-quality-engineering-playbook.md +54 -0
  311. package/incident/01-standards/incident-response-complete.md +303 -0
  312. package/incident/02-playbooks/chaos-engineering-playbook.md +883 -0
  313. package/incident/02-playbooks/postmortem-playbook.md +398 -0
  314. package/incident/03-checklists/incident-readiness-checklist.md +181 -0
  315. package/incident/04-antipatterns/incident-antipatterns.md +490 -0
  316. package/incident/05-cases/case-cascade-failure.md +176 -0
  317. package/incident/06-glossary/incident-glossary.md +114 -0
  318. package/incident/postmortem-and-response-deep-dive.md +39 -0
  319. package/industries/ecommerce/ecommerce-complete.md +631 -0
  320. package/industries/education/education-complete.md +555 -0
  321. package/industries/fintech/fintech-complete.md +501 -0
  322. package/industries/gaming/gaming-complete.md +587 -0
  323. package/industries/healthcare/healthcare-complete.md +452 -0
  324. package/low-code/01-standards/low-code-complete.md +944 -0
  325. package/miniprogram/01-standards/ai-common-mistakes.md +61 -0
  326. package/miniprogram/01-standards/miniprogram-custom-navbar-capsule.md +77 -0
  327. package/miniprogram/01-standards/miniprogram-design.md +61 -0
  328. package/miniprogram/01-standards/miniprogram-standard.md +81 -0
  329. package/mobile/01-standards/android-material-design.md +70 -0
  330. package/mobile/01-standards/flutter-complete.md +384 -0
  331. package/mobile/01-standards/ios-design-hig.md +78 -0
  332. package/mobile/01-standards/mobile-app-standard.md +85 -0
  333. package/mobile/01-standards/react-native-complete.md +352 -0
  334. package/mobile/02-playbooks/mobile-cross-platform-playbook.md +175 -0
  335. package/mobile/02-playbooks/mobile-performance.md +473 -0
  336. package/mobile/03-checklists/mobile-release-checklist.md +234 -0
  337. package/mobile/04-antipatterns/mobile-antipatterns.md +798 -0
  338. package/mobile/05-cases/case-app-performance.md +500 -0
  339. package/mobile/05-cases/case-app-startup-optimization.md +218 -0
  340. package/mobile/06-glossary/mobile-glossary.md +484 -0
  341. package/observability/01-standards/observability-standards.md +103 -0
  342. package/observability/02-playbooks/prometheus-grafana-playbook.md +135 -0
  343. package/observability/02-playbooks/structured-logging-playbook.md +73 -0
  344. package/observability/03-checklists/observability-checklist.md +54 -0
  345. package/observability/04-antipatterns/observability-antipatterns.md +106 -0
  346. package/operations/01-standards/prometheus-monitoring-complete.md +1578 -0
  347. package/operations/02-playbooks/capacity-planning-playbook.md +620 -0
  348. package/operations/03-checklists/production-launch-checklist.md +365 -0
  349. package/operations/04-antipatterns/operations-antipatterns.md +664 -0
  350. package/operations/05-cases/case-sre-practices.md +581 -0
  351. package/operations/06-glossary/operations-glossary.md +120 -0
  352. package/operations/aiops-anomaly-detection.md +758 -0
  353. package/operations/capacity-planning.md +1061 -0
  354. package/operations/chaos-engineering.md +659 -0
  355. package/operations/incident-command-system.md +38 -0
  356. package/operations/observability-complete.md +442 -0
  357. package/operations/slo-sli-playbook.md +517 -0
  358. package/operations/sre-operations-deep-dive.md +39 -0
  359. package/package.json +8 -0
  360. package/performance/01-standards/performance-and-scalability.md +80 -0
  361. package/performance/01-standards/performance-standards.md +156 -0
  362. package/performance/02-playbooks/query-optimization-playbook.md +103 -0
  363. package/performance/03-checklists/performance-checklist.md +56 -0
  364. package/performance/04-antipatterns/performance-antipatterns.md +146 -0
  365. package/product/01-standards/product-management-complete.md +285 -0
  366. package/product/02-playbooks/feature-launch-playbook.md +207 -0
  367. package/product/02-playbooks/user-research-playbook.md +532 -0
  368. package/product/03-checklists/feature-launch-checklist.md +275 -0
  369. package/product/04-antipatterns/product-antipatterns.md +355 -0
  370. package/product/05-cases/case-mvp-to-scale.md +384 -0
  371. package/product/06-glossary/product-glossary.md +462 -0
  372. package/product/feature-prioritization-framework.md +40 -0
  373. package/product/kpi-and-metric-tree.md +37 -0
  374. package/product/product-discovery-and-prd-deep-dive.md +41 -0
  375. package/quantum/01-standards/quantum-complete.md +1186 -0
  376. package/security/01-standards/api-security-complete.md +511 -0
  377. package/security/01-standards/container-runtime-security.md +574 -0
  378. package/security/01-standards/data-protection-gdpr.md +543 -0
  379. package/security/01-standards/owasp-top10-complete.md +1890 -0
  380. package/security/01-standards/secure-coding-baseline.md +90 -0
  381. package/security/01-standards/supply-chain-security.md +441 -0
  382. package/security/01-standards/web-security-checklist.md +108 -0
  383. package/security/01-standards/zero-trust-architecture.md +521 -0
  384. package/security/02-playbooks/auth-sso-playbook.md +166 -0
  385. package/security/02-playbooks/incident-response-security-playbook.md +588 -0
  386. package/security/02-playbooks/owasp-api-security-playbook.md +129 -0
  387. package/security/02-playbooks/payment-integration-playbook.md +119 -0
  388. package/security/02-playbooks/penetration-testing-playbook.md +517 -0
  389. package/security/03-checklists/security-audit-checklist.md +356 -0
  390. package/security/04-antipatterns/security-coding-antipatterns.md +580 -0
  391. package/security/05-cases/case-log4shell-incident.md +537 -0
  392. package/security/05-cases/case-major-breaches.md +468 -0
  393. package/security/06-glossary/security-glossary.md +212 -0
  394. package/security/compliance-automation.md +993 -0
  395. package/security/container-security.md +680 -0
  396. package/security/devsecops-complete.md +426 -0
  397. package/security/sast-dast-sca.md +775 -0
  398. package/security/secrets-management.md +594 -0
  399. package/security/security-architecture-deep-dive.md +37 -0
  400. package/security/threat-modeling-stride-playbook.md +40 -0
  401. package/seed-templates/auth-system.md +59 -0
  402. package/seed-templates/blog-content.md +94 -0
  403. package/seed-templates/dashboard.md +89 -0
  404. package/seed-templates/docs-site.md +73 -0
  405. package/seed-templates/e-commerce.md +50 -0
  406. package/seed-templates/saas-landing.md +92 -0
  407. package/seed-templates/settings-page.md +51 -0
  408. package/testing/01-standards/test-strategy-and-layering.md +83 -0
  409. package/testing/01-standards/testing-strategy-complete.md +422 -0
  410. package/testing/01-standards/unit-testing-best-practices.md +118 -0
  411. package/testing/02-playbooks/e2e-testing-playbook.md +988 -0
  412. package/testing/02-playbooks/testing-strategy-playbook.md +126 -0
  413. package/testing/03-checklists/test-strategy-checklist.md +208 -0
  414. package/testing/04-antipatterns/testing-antipatterns.md +718 -0
  415. package/testing/05-cases/case-testing-transformation.md +300 -0
  416. package/testing/06-glossary/testing-glossary.md +110 -0
  417. package/testing/risk-based-test-matrix.md +36 -0
  418. package/testing/testing-strategy-deep-dive.md +37 -0
@@ -0,0 +1,580 @@
1
+ ---
2
+ id: database-migration-playbook
3
+ title: 数据库迁移作战手册 (Database Migration Playbook)
4
+ domain: development
5
+ category: 02-playbooks
6
+ difficulty: intermediate
7
+ tags: [agent, checklist, database, development, migration, playbook, 前置条件, 回滚方案]
8
+ quality_score: 70
9
+ last_updated: 2026-06-15
10
+ ---
11
+ # 数据库迁移作战手册 (Database Migration Playbook)
12
+
13
+ ## 概述
14
+
15
+ 数据库迁移是对数据库 Schema 或数据进行变更的结构化操作流程。由于数据库变更通常不可逆且直接影响线上业务,本手册定义了严格的前向/后向兼容策略、安全执行步骤、蓝绿部署方案和回滚机制,确保每次迁移可控、可回滚、零停机。
16
+
17
+ ## 前置条件
18
+
19
+ ### 必须满足
20
+
21
+ - [ ] 数据库有最新的完整备份(已验证可恢复)
22
+ - [ ] 已在与生产环境一致的测试环境验证迁移脚本
23
+ - [ ] 已评估迁移对表锁、写入性能的影响
24
+ - [ ] 已评估大表变更的执行时间(数据量 > 100 万行需特别关注)
25
+ - [ ] 已准备回滚脚本并验证
26
+ - [ ] 已获得 DBA 或技术负责人审批
27
+
28
+ ### 建议满足
29
+
30
+ - [ ] 有数据库变更审计日志
31
+ - [ ] 有自动化迁移工具(Alembic、Flyway、Django Migrations、Prisma Migrate)
32
+ - [ ] 有数据库只读副本可用于验证
33
+ - [ ] 有慢查询监控
34
+
35
+ ---
36
+
37
+ ## 步骤一:迁移设计
38
+
39
+ ### 1.1 前向兼容原则
40
+
41
+ 前向兼容:新 Schema 能被旧代码正常使用。这是零停机部署的核心要求。
42
+
43
+ ```
44
+ 安全的变更(前向兼容):
45
+ ✓ 新增列(带默认值或允许 NULL)
46
+ ✓ 新增表
47
+ ✓ 新增索引(CONCURRENTLY)
48
+ ✓ 放宽约束(如 NOT NULL -> NULL)
49
+
50
+ 危险的变更(需要特殊处理):
51
+ ⚠ 重命名列/表
52
+ ⚠ 修改列类型
53
+ ⚠ 添加 NOT NULL 约束
54
+ ⚠ 删除列/表
55
+
56
+ 禁止直接执行的变更:
57
+ ✗ 删除正在使用的列
58
+ ✗ 重命名正在使用的列
59
+ ✗ 修改正在使用列的类型(不兼容)
60
+ ```
61
+
62
+ ### 1.2 安全重命名列的多步迁移
63
+
64
+ ```sql
65
+ -- 场景:将 orders.user_name 重命名为 orders.customer_name
66
+
67
+ -- 迁移 1:添加新列
68
+ ALTER TABLE orders ADD COLUMN customer_name VARCHAR(100);
69
+
70
+ -- 迁移 2:双写(应用层同时写两列)
71
+ -- 代码变更:INSERT/UPDATE 同时写 user_name 和 customer_name
72
+
73
+ -- 迁移 3:数据回填
74
+ UPDATE orders SET customer_name = user_name WHERE customer_name IS NULL;
75
+
76
+ -- 迁移 4:切换读取(应用层从 customer_name 读取)
77
+ -- 代码变更:SELECT 改为读 customer_name
78
+
79
+ -- 迁移 5:停止写旧列
80
+ -- 代码变更:INSERT/UPDATE 只写 customer_name
81
+
82
+ -- 迁移 6:删除旧列(确认无代码引用后)
83
+ ALTER TABLE orders DROP COLUMN user_name;
84
+ ```
85
+
86
+ ### 1.3 安全添加 NOT NULL 约束
87
+
88
+ ```sql
89
+ -- 场景:为 orders.status 添加 NOT NULL 约束
90
+
91
+ -- 迁移 1:设置默认值并回填
92
+ ALTER TABLE orders ALTER COLUMN status SET DEFAULT 'draft';
93
+ UPDATE orders SET status = 'draft' WHERE status IS NULL;
94
+
95
+ -- 迁移 2:添加 CHECK 约束(不阻塞写入)
96
+ ALTER TABLE orders ADD CONSTRAINT orders_status_not_null
97
+ CHECK (status IS NOT NULL) NOT VALID;
98
+
99
+ -- 迁移 3:验证约束(扫描全表但不阻塞写入)
100
+ ALTER TABLE orders VALIDATE CONSTRAINT orders_status_not_null;
101
+
102
+ -- 迁移 4:转换为正式 NOT NULL(可选,PostgreSQL 12+)
103
+ ALTER TABLE orders ALTER COLUMN status SET NOT NULL;
104
+ ALTER TABLE orders DROP CONSTRAINT orders_status_not_null;
105
+ ```
106
+
107
+ ### 1.4 大表安全加索引
108
+
109
+ ```sql
110
+ -- PostgreSQL: 使用 CONCURRENTLY 避免锁表
111
+ CREATE INDEX CONCURRENTLY idx_orders_user_created
112
+ ON orders(user_id, created_at DESC);
113
+
114
+ -- 注意事项:
115
+ -- 1. CONCURRENTLY 不能在事务内执行
116
+ -- 2. 如果中途失败,会留下 INVALID 索引,需要手动清理:
117
+ -- DROP INDEX CONCURRENTLY idx_orders_user_created;
118
+ -- 3. 会增加临时磁盘空间使用
119
+
120
+ -- MySQL: 使用 ALGORITHM=INPLACE 或 pt-online-schema-change
121
+ ALTER TABLE orders ADD INDEX idx_user_created (user_id, created_at),
122
+ ALGORITHM=INPLACE, LOCK=NONE;
123
+
124
+ -- 或使用 pt-online-schema-change(大表推荐)
125
+ pt-online-schema-change \
126
+ --alter "ADD INDEX idx_user_created (user_id, created_at)" \
127
+ --execute \
128
+ --chunk-size=1000 \
129
+ --max-lag=1 \
130
+ D=mydb,t=orders
131
+ ```
132
+
133
+ ---
134
+
135
+ ## 步骤二:迁移脚本编写
136
+
137
+ ### 2.1 Alembic (Python/SQLAlchemy)
138
+
139
+ ```python
140
+ """add customer_name column to orders
141
+
142
+ Revision ID: a1b2c3d4e5f6
143
+ Revises: 9z8y7x6w5v4u
144
+ Create Date: 2024-01-15 10:30:00.000000
145
+ """
146
+ from alembic import op
147
+ import sqlalchemy as sa
148
+
149
+ revision = 'a1b2c3d4e5f6'
150
+ down_revision = '9z8y7x6w5v4u'
151
+
152
+ def upgrade():
153
+ op.add_column('orders',
154
+ sa.Column('customer_name', sa.String(100), nullable=True, comment='客户名称')
155
+ )
156
+ # 回填数据
157
+ op.execute("""
158
+ UPDATE orders SET customer_name = user_name
159
+ WHERE customer_name IS NULL
160
+ """)
161
+
162
+ def downgrade():
163
+ op.drop_column('orders', 'customer_name')
164
+ ```
165
+
166
+ ### 2.2 Flyway (Java)
167
+
168
+ ```sql
169
+ -- V20240115_1030__add_customer_name_to_orders.sql
170
+
171
+ -- 前向迁移
172
+ ALTER TABLE orders ADD COLUMN customer_name VARCHAR(100);
173
+
174
+ -- 回填
175
+ UPDATE orders SET customer_name = user_name WHERE customer_name IS NULL;
176
+
177
+ -- 添加注释
178
+ COMMENT ON COLUMN orders.customer_name IS '客户名称';
179
+ ```
180
+
181
+ ```sql
182
+ -- U20240115_1030__add_customer_name_to_orders.sql (回滚脚本)
183
+
184
+ ALTER TABLE orders DROP COLUMN IF EXISTS customer_name;
185
+ ```
186
+
187
+ ### 2.3 Prisma Migrate (Node.js)
188
+
189
+ ```prisma
190
+ // schema.prisma - 变更后
191
+ model Order {
192
+ id Int @id @default(autoincrement())
193
+ userId Int @map("user_id")
194
+ customerName String? @map("customer_name") @db.VarChar(100)
195
+ status String @default("draft") @db.VarChar(20)
196
+ createdAt DateTime @default(now()) @map("created_at")
197
+
198
+ @@map("orders")
199
+ @@index([userId, createdAt(sort: Desc)])
200
+ }
201
+ ```
202
+
203
+ ```bash
204
+ # 生成迁移
205
+ npx prisma migrate dev --name add_customer_name
206
+
207
+ # 检查生成的 SQL
208
+ cat prisma/migrations/20240115103000_add_customer_name/migration.sql
209
+
210
+ # 生产环境执行
211
+ npx prisma migrate deploy
212
+ ```
213
+
214
+ ### 2.4 迁移脚本审查清单
215
+
216
+ ```markdown
217
+ 每个迁移脚本必须检查:
218
+
219
+ - [ ] 有对应的 downgrade/回滚脚本
220
+ - [ ] 不包含不可逆操作(或已标注风险并有备份方案)
221
+ - [ ] 大表操作有执行时间预估
222
+ - [ ] 索引变更使用 CONCURRENTLY 或等价方式
223
+ - [ ] 不在事务中执行耗时操作(避免长事务锁表)
224
+ - [ ] 有数据回填逻辑时分批执行
225
+ - [ ] 不包含硬编码的业务数据
226
+ ```
227
+
228
+ ---
229
+
230
+ ## 步骤三:迁移执行
231
+
232
+ ### 3.1 预发布环境验证
233
+
234
+ ```bash
235
+ # 在预发布环境执行迁移
236
+ # 1. 获取当前状态
237
+ alembic current
238
+
239
+ # 2. 检查待执行的迁移
240
+ alembic history --verbose
241
+
242
+ # 3. 模拟执行(只输出 SQL,不实际执行)
243
+ alembic upgrade head --sql > migration_preview.sql
244
+ cat migration_preview.sql
245
+
246
+ # 4. 实际执行
247
+ alembic upgrade head
248
+
249
+ # 5. 验证
250
+ alembic current
251
+ psql -c "\d orders" # 检查表结构
252
+ ```
253
+
254
+ ### 3.2 生产环境执行
255
+
256
+ ```bash
257
+ #!/bin/bash
258
+ # migrate_production.sh
259
+
260
+ set -euo pipefail
261
+
262
+ DB_HOST="production-db.example.com"
263
+ DB_NAME="production"
264
+ DB_USER="migrate_user"
265
+ BACKUP_DIR="/backups/$(date +%Y%m%d_%H%M%S)"
266
+
267
+ echo "=== 生产环境数据库迁移 ==="
268
+ echo "时间: $(date)"
269
+ echo "目标: $DB_HOST/$DB_NAME"
270
+
271
+ # 步骤 1: 备份
272
+ echo "[1/6] 创建备份..."
273
+ mkdir -p "$BACKUP_DIR"
274
+ pg_dump -h "$DB_HOST" -U "$DB_USER" -d "$DB_NAME" \
275
+ --format=custom \
276
+ --compress=9 \
277
+ > "$BACKUP_DIR/pre_migration.dump"
278
+ echo "备份完成: $BACKUP_DIR/pre_migration.dump"
279
+ echo "备份大小: $(du -h "$BACKUP_DIR/pre_migration.dump" | cut -f1)"
280
+
281
+ # 步骤 2: 检查当前状态
282
+ echo "[2/6] 检查当前迁移状态..."
283
+ alembic current
284
+
285
+ # 步骤 3: 检查活跃连接
286
+ echo "[3/6] 检查活跃连接..."
287
+ ACTIVE_CONNS=$(psql -h "$DB_HOST" -U "$DB_USER" -d "$DB_NAME" -t -c \
288
+ "SELECT count(*) FROM pg_stat_activity WHERE state = 'active' AND pid != pg_backend_pid();")
289
+ echo "活跃连接数: $ACTIVE_CONNS"
290
+
291
+ # 步骤 4: 执行迁移
292
+ echo "[4/6] 执行迁移..."
293
+ START_TIME=$(date +%s)
294
+ alembic upgrade head
295
+ END_TIME=$(date +%s)
296
+ echo "迁移耗时: $((END_TIME - START_TIME)) 秒"
297
+
298
+ # 步骤 5: 验证
299
+ echo "[5/6] 验证迁移..."
300
+ alembic current
301
+ psql -h "$DB_HOST" -U "$DB_USER" -d "$DB_NAME" -c "\d orders" | head -20
302
+
303
+ # 步骤 6: 健康检查
304
+ echo "[6/6] 应用健康检查..."
305
+ for i in {1..5}; do
306
+ STATUS=$(curl -s -o /dev/null -w "%{http_code}" http://api.example.com/health)
307
+ echo "健康检查 $i: $STATUS"
308
+ sleep 5
309
+ done
310
+
311
+ echo "=== 迁移完成 ==="
312
+ ```
313
+
314
+ ### 3.3 大数据量回填
315
+
316
+ ```python
317
+ # 分批回填数据,避免长事务和锁表
318
+
319
+ import time
320
+ from sqlalchemy import text
321
+
322
+ def backfill_customer_name(engine, batch_size=5000):
323
+ """分批回填 customer_name"""
324
+ total_updated = 0
325
+ start_time = time.time()
326
+
327
+ while True:
328
+ with engine.begin() as conn:
329
+ result = conn.execute(text("""
330
+ UPDATE orders
331
+ SET customer_name = user_name
332
+ WHERE id IN (
333
+ SELECT id FROM orders
334
+ WHERE customer_name IS NULL
335
+ LIMIT :batch_size
336
+ )
337
+ """), {"batch_size": batch_size})
338
+
339
+ rows_affected = result.rowcount
340
+ total_updated += rows_affected
341
+
342
+ if rows_affected == 0:
343
+ break
344
+
345
+ # 打印进度
346
+ elapsed = time.time() - start_time
347
+ print(f"已更新 {total_updated} 行, 耗时 {elapsed:.1f}s")
348
+
349
+ # 控制速度,避免对线上造成压力
350
+ time.sleep(0.5)
351
+
352
+ print(f"回填完成: 共更新 {total_updated} 行, 总耗时 {time.time() - start_time:.1f}s")
353
+ ```
354
+
355
+ ---
356
+
357
+ ## 步骤四:蓝绿部署中的迁移
358
+
359
+ ### 4.1 蓝绿部署迁移策略
360
+
361
+ ```
362
+ 蓝绿部署中数据库迁移的核心约束:
363
+ 蓝(旧版本)和绿(新版本)共享同一个数据库,
364
+ 因此 Schema 变更必须同时兼容两个版本。
365
+
366
+ 部署顺序:
367
+ 1. 执行前向兼容的数据库迁移
368
+ 2. 部署绿环境(新代码)
369
+ 3. 验证绿环境
370
+ 4. 切换流量到绿环境
371
+ 5. 观察稳定后,执行清理迁移(删除旧列等)
372
+ ```
373
+
374
+ ```
375
+ 时间线示例(重命名列):
376
+
377
+ T1: [蓝: 读写 user_name] [DB: user_name]
378
+ 执行迁移: ADD customer_name
379
+
380
+ T2: [蓝: 读写 user_name] [DB: user_name + customer_name]
381
+ 部署绿: 双写 user_name + customer_name,读 customer_name
382
+
383
+ T3: [绿: 双写, 读 customer_name] [DB: user_name + customer_name]
384
+ 回填 customer_name
385
+
386
+ T4: [绿: 双写, 读 customer_name] [DB: user_name + customer_name, 数据已同步]
387
+ 切换流量到绿
388
+
389
+ T5: [绿: 只写 customer_name] [DB: user_name + customer_name]
390
+ 确认稳定后
391
+
392
+ T6: [绿: 只写 customer_name] [DB: customer_name]
393
+ 执行清理迁移: DROP user_name
394
+ ```
395
+
396
+ ### 4.2 双写中间层
397
+
398
+ ```python
399
+ class OrderRepository:
400
+ """支持蓝绿部署的双写 Repository"""
401
+
402
+ def __init__(self, migration_phase: str = "dual_write"):
403
+ # 配置迁移阶段:
404
+ # "old_only" - 只使用旧列
405
+ # "dual_write" - 双写,读新列
406
+ # "new_only" - 只使用新列
407
+ self.phase = migration_phase
408
+
409
+ def create_order(self, data: dict):
410
+ if self.phase == "old_only":
411
+ return self._insert(user_name=data["name"])
412
+ elif self.phase == "dual_write":
413
+ return self._insert(
414
+ user_name=data["name"],
415
+ customer_name=data["name"]
416
+ )
417
+ else: # new_only
418
+ return self._insert(customer_name=data["name"])
419
+
420
+ def get_order_name(self, order):
421
+ if self.phase == "old_only":
422
+ return order.user_name
423
+ else:
424
+ return order.customer_name or order.user_name
425
+ ```
426
+
427
+ ---
428
+
429
+ ## 步骤五:验证
430
+
431
+ ### 5.1 迁移后检查
432
+
433
+ ```bash
434
+ #!/bin/bash
435
+ # verify_migration.sh
436
+
437
+ echo "=== 迁移后验证 ==="
438
+
439
+ # 1. 表结构验证
440
+ echo "[1] 表结构检查"
441
+ psql -h "$DB_HOST" -U "$DB_USER" -d "$DB_NAME" -c "
442
+ SELECT column_name, data_type, is_nullable, column_default
443
+ FROM information_schema.columns
444
+ WHERE table_name = 'orders'
445
+ ORDER BY ordinal_position;
446
+ "
447
+
448
+ # 2. 索引验证
449
+ echo "[2] 索引检查"
450
+ psql -h "$DB_HOST" -U "$DB_USER" -d "$DB_NAME" -c "
451
+ SELECT indexname, indexdef
452
+ FROM pg_indexes
453
+ WHERE tablename = 'orders';
454
+ "
455
+
456
+ # 3. 约束验证
457
+ echo "[3] 约束检查"
458
+ psql -h "$DB_HOST" -U "$DB_USER" -d "$DB_NAME" -c "
459
+ SELECT conname, contype, pg_get_constraintdef(oid)
460
+ FROM pg_constraint
461
+ WHERE conrelid = 'orders'::regclass;
462
+ "
463
+
464
+ # 4. 数据一致性验证
465
+ echo "[4] 数据一致性"
466
+ psql -h "$DB_HOST" -U "$DB_USER" -d "$DB_NAME" -c "
467
+ SELECT
468
+ COUNT(*) as total,
469
+ COUNT(customer_name) as has_customer_name,
470
+ COUNT(user_name) as has_user_name,
471
+ COUNT(CASE WHEN customer_name != user_name THEN 1 END) as mismatched
472
+ FROM orders;
473
+ "
474
+
475
+ # 5. 查询性能验证
476
+ echo "[5] 查询性能"
477
+ psql -h "$DB_HOST" -U "$DB_USER" -d "$DB_NAME" -c "
478
+ EXPLAIN (ANALYZE, BUFFERS)
479
+ SELECT id, customer_name, status
480
+ FROM orders
481
+ WHERE user_id = 12345
482
+ ORDER BY created_at DESC
483
+ LIMIT 20;
484
+ "
485
+
486
+ echo "=== 验证完成 ==="
487
+ ```
488
+
489
+ ### 5.2 应用层验证
490
+
491
+ ```bash
492
+ # API 功能验证
493
+ echo "创建订单测试"
494
+ curl -s -X POST http://api.example.com/api/v1/orders \
495
+ -H "Content-Type: application/json" \
496
+ -d '{"product_id": 1, "quantity": 1, "customer_name": "测试"}' | jq '.'
497
+
498
+ echo "查询订单测试"
499
+ curl -s http://api.example.com/api/v1/orders?user_id=12345 | jq '.data[0].customer_name'
500
+ ```
501
+
502
+ ---
503
+
504
+ ## 回滚方案
505
+
506
+ ### Schema 回滚
507
+
508
+ ```bash
509
+ # Alembic 回滚
510
+ alembic downgrade -1 # 回滚一步
511
+ alembic downgrade <revision_id> # 回滚到指定版本
512
+
513
+ # Flyway 回滚
514
+ flyway undo
515
+
516
+ # Django 回滚
517
+ python manage.py migrate <app> <previous_migration>
518
+
519
+ # Prisma(无内置回滚,需手动)
520
+ psql -h "$DB_HOST" -U "$DB_USER" -d "$DB_NAME" -f rollback.sql
521
+ ```
522
+
523
+ ### 数据回滚
524
+
525
+ ```bash
526
+ # 从备份恢复整个数据库(最后手段)
527
+ pg_restore -h "$DB_HOST" -U "$DB_USER" -d "$DB_NAME" \
528
+ --clean --if-exists \
529
+ "$BACKUP_DIR/pre_migration.dump"
530
+
531
+ # 恢复单表
532
+ pg_restore -h "$DB_HOST" -U "$DB_USER" -d "$DB_NAME" \
533
+ --table=orders --data-only \
534
+ "$BACKUP_DIR/pre_migration.dump"
535
+ ```
536
+
537
+ ### 回滚决策矩阵
538
+
539
+ | 场景 | 处理方式 | 时间预估 |
540
+ |------|---------|---------|
541
+ | 迁移脚本执行失败 | 事务自动回滚,修复后重试 | 即时 |
542
+ | 迁移成功但应用报错 | 执行 downgrade 脚本 | 分钟级 |
543
+ | 数据回填错误 | 从备份恢复受影响的表 | 取决于数据量 |
544
+ | 性能严重下降 | 回滚索引变更或 Schema 变更 | 分钟级 |
545
+ | 数据损坏 | 停止写入 + 从备份恢复 | 小时级 |
546
+
547
+ ### 不可回滚的操作及应对
548
+
549
+ ```markdown
550
+ 以下操作一旦执行就无法简单回滚:
551
+ 1. DROP COLUMN(数据丢失)→ 执行前必须备份该列数据
552
+ 2. TRUNCATE TABLE → 执行前必须完整备份
553
+ 3. 数据类型缩小(如 VARCHAR(200) → VARCHAR(100))→ 先验证数据范围
554
+ 4. 删除索引后重建(大表耗时长)→ 评估重建时间
555
+
556
+ 应对策略:
557
+ - 对不可逆操作,始终在执行前创建完整备份
558
+ - 在低峰期执行
559
+ - 保留回填脚本以备需要重建数据
560
+ ```
561
+
562
+ ---
563
+
564
+ ## Agent Checklist
565
+
566
+ AI 编码 Agent 在执行数据库迁移时必须逐项确认:
567
+
568
+ - [ ] **备份完成**:生产数据库有最新备份,已验证可恢复
569
+ - [ ] **前向兼容**:迁移后旧代码仍能正常运行
570
+ - [ ] **回滚脚本就绪**:每个 upgrade 都有对应的 downgrade
571
+ - [ ] **大表评估**:数据量 > 100 万行的表已评估锁影响和执行时间
572
+ - [ ] **索引安全**:使用 CONCURRENTLY 创建索引
573
+ - [ ] **分批回填**:数据回填分批执行,控制速度
574
+ - [ ] **预发布验证**:迁移脚本已在预发布环境成功执行
575
+ - [ ] **结构验证**:迁移后表结构、索引、约束均符合预期
576
+ - [ ] **数据验证**:迁移后数据一致性已确认
577
+ - [ ] **性能验证**:核心查询的执行计划无退化
578
+ - [ ] **应用验证**:应用层功能正常,无新增错误
579
+ - [ ] **清理计划**:蓝绿部署的旧列/旧表有计划的清理时间
580
+ - [ ] **文档更新**:ER 图和数据字典已同步更新