@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,479 @@
1
+ ---
2
+ id: authentication-patterns-complete
3
+ title: 认证模式完整指南
4
+ domain: development
5
+ category: 01-standards
6
+ difficulty: intermediate
7
+ tags: [agent, authentication, checklist, complete, development, patterns, 实战代码示例, 常见陷阱]
8
+ quality_score: 70
9
+ last_updated: 2026-06-15
10
+ ---
11
+ # 认证模式完整指南
12
+
13
+ ## 概述
14
+ 认证(Authentication)是确认用户身份的过程,是安全体系的第一道防线。本指南覆盖Session、JWT、OAuth2、OIDC、Passkey、MFA六种核心认证模式,提供选型矩阵、实战代码和安全配置。
15
+
16
+ ## 核心概念
17
+
18
+ ### 1. 认证 vs 授权
19
+ - **认证(AuthN)**: 你是谁? — 验证身份
20
+ - **授权(AuthZ)**: 你能做什么? — 验证权限
21
+ - 本指南聚焦认证,授权参见RBAC/ABAC相关文档
22
+
23
+ ### 2. 认证模式对比
24
+
25
+ | 模式 | 状态 | 存储 | 适用场景 | 复杂度 |
26
+ |------|------|------|----------|--------|
27
+ | Session | 有状态 | 服务端(Redis/DB) | 传统Web应用 | 低 |
28
+ | JWT | 无状态 | 客户端(Cookie/Header) | API/微服务/SPA | 中 |
29
+ | OAuth2 | 委托认证 | 授权服务器 | 第三方登录/API授权 | 高 |
30
+ | OIDC | OAuth2+身份层 | 授权服务器 | SSO/企业登录 | 高 |
31
+ | Passkey | 无密码 | 设备+服务端 | 现代Web应用 | 中 |
32
+ | API Key | 无状态 | 服务端 | 服务间调用/简单API | 低 |
33
+
34
+ ### 3. 安全层级
35
+ - **Level 1**: 密码 — 最基础,需配合密码策略
36
+ - **Level 2**: 密码 + MFA — 增加第二因素
37
+ - **Level 3**: Passkey/FIDO2 — 无密码,抗钓鱼
38
+ - **Level 4**: 硬件安全密钥 — 最高安全级别
39
+
40
+ ## 实战代码示例
41
+
42
+ ### Session认证
43
+
44
+ ```python
45
+ # FastAPI + Redis Session
46
+ from fastapi import FastAPI, Request, Response, Depends, HTTPException
47
+ from redis.asyncio import Redis
48
+ import uuid
49
+ import json
50
+
51
+ app = FastAPI()
52
+ redis = Redis(host="localhost", port=6379, decode_responses=True)
53
+
54
+ SESSION_TTL = 3600 * 24 # 24小时
55
+ SESSION_COOKIE = "session_id"
56
+
57
+ async def create_session(user_id: int, user_data: dict) -> str:
58
+ """创建会话"""
59
+ session_id = str(uuid.uuid4())
60
+ session_data = json.dumps({
61
+ "user_id": user_id,
62
+ **user_data,
63
+ })
64
+ await redis.setex(f"session:{session_id}", SESSION_TTL, session_data)
65
+ return session_id
66
+
67
+ async def get_current_user(request: Request) -> dict:
68
+ """从Session获取当前用户"""
69
+ session_id = request.cookies.get(SESSION_COOKIE)
70
+ if not session_id:
71
+ raise HTTPException(status_code=401, detail="Not authenticated")
72
+
73
+ session_data = await redis.get(f"session:{session_id}")
74
+ if not session_data:
75
+ raise HTTPException(status_code=401, detail="Session expired")
76
+
77
+ # 续期
78
+ await redis.expire(f"session:{session_id}", SESSION_TTL)
79
+ return json.loads(session_data)
80
+
81
+ @app.post("/login")
82
+ async def login(response: Response, email: str, password: str):
83
+ user = await verify_credentials(email, password)
84
+ if not user:
85
+ raise HTTPException(status_code=401, detail="Invalid credentials")
86
+
87
+ session_id = await create_session(user.id, {"email": user.email, "role": user.role})
88
+
89
+ response.set_cookie(
90
+ key=SESSION_COOKIE,
91
+ value=session_id,
92
+ httponly=True, # JS无法访问
93
+ secure=True, # 仅HTTPS
94
+ samesite="lax", # CSRF防护
95
+ max_age=SESSION_TTL,
96
+ )
97
+ return {"message": "Login successful"}
98
+
99
+ @app.post("/logout")
100
+ async def logout(request: Request, response: Response):
101
+ session_id = request.cookies.get(SESSION_COOKIE)
102
+ if session_id:
103
+ await redis.delete(f"session:{session_id}")
104
+ response.delete_cookie(SESSION_COOKIE)
105
+ return {"message": "Logged out"}
106
+
107
+ @app.get("/me")
108
+ async def me(user: dict = Depends(get_current_user)):
109
+ return user
110
+ ```
111
+
112
+ ### JWT认证
113
+
114
+ ```python
115
+ # JWT认证实现
116
+ from datetime import datetime, timedelta
117
+ from jose import jwt, JWTError
118
+ from passlib.context import CryptContext
119
+ from pydantic import BaseModel
120
+
121
+ SECRET_KEY = "your-secret-key-from-env" # 必须从环境变量读取
122
+ ALGORITHM = "HS256"
123
+ ACCESS_TOKEN_EXPIRE = timedelta(minutes=15)
124
+ REFRESH_TOKEN_EXPIRE = timedelta(days=7)
125
+
126
+ pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")
127
+
128
+ class TokenPair(BaseModel):
129
+ access_token: str
130
+ refresh_token: str
131
+ token_type: str = "bearer"
132
+
133
+ def create_access_token(user_id: int, roles: list[str]) -> str:
134
+ payload = {
135
+ "sub": str(user_id),
136
+ "roles": roles,
137
+ "type": "access",
138
+ "exp": datetime.utcnow() + ACCESS_TOKEN_EXPIRE,
139
+ "iat": datetime.utcnow(),
140
+ "jti": str(uuid.uuid4()), # JWT ID,用于黑名单
141
+ }
142
+ return jwt.encode(payload, SECRET_KEY, algorithm=ALGORITHM)
143
+
144
+ def create_refresh_token(user_id: int) -> str:
145
+ payload = {
146
+ "sub": str(user_id),
147
+ "type": "refresh",
148
+ "exp": datetime.utcnow() + REFRESH_TOKEN_EXPIRE,
149
+ "iat": datetime.utcnow(),
150
+ "jti": str(uuid.uuid4()),
151
+ }
152
+ return jwt.encode(payload, SECRET_KEY, algorithm=ALGORITHM)
153
+
154
+ async def verify_token(token: str, expected_type: str = "access") -> dict:
155
+ try:
156
+ payload = jwt.decode(token, SECRET_KEY, algorithms=[ALGORITHM])
157
+ if payload.get("type") != expected_type:
158
+ raise HTTPException(status_code=401, detail="Invalid token type")
159
+ # 检查黑名单(登出后的token)
160
+ if await is_token_blacklisted(payload["jti"]):
161
+ raise HTTPException(status_code=401, detail="Token revoked")
162
+ return payload
163
+ except JWTError:
164
+ raise HTTPException(status_code=401, detail="Invalid token")
165
+
166
+ # Token刷新端点
167
+ @app.post("/auth/refresh", response_model=TokenPair)
168
+ async def refresh_tokens(refresh_token: str):
169
+ payload = await verify_token(refresh_token, expected_type="refresh")
170
+ user_id = int(payload["sub"])
171
+
172
+ # 吊销旧refresh token
173
+ await blacklist_token(payload["jti"], REFRESH_TOKEN_EXPIRE)
174
+
175
+ user = await get_user(user_id)
176
+ return TokenPair(
177
+ access_token=create_access_token(user.id, user.roles),
178
+ refresh_token=create_refresh_token(user.id),
179
+ )
180
+
181
+ # Token黑名单(Redis)
182
+ async def blacklist_token(jti: str, ttl: timedelta):
183
+ await redis.setex(f"blacklist:{jti}", int(ttl.total_seconds()), "1")
184
+
185
+ async def is_token_blacklisted(jti: str) -> bool:
186
+ return await redis.exists(f"blacklist:{jti}")
187
+ ```
188
+
189
+ ### OAuth2授权码流程
190
+
191
+ ```python
192
+ # OAuth2 GitHub登录
193
+ from authlib.integrations.starlette_client import OAuth
194
+
195
+ oauth = OAuth()
196
+ oauth.register(
197
+ name='github',
198
+ client_id='your-client-id',
199
+ client_secret='your-client-secret',
200
+ access_token_url='https://github.com/login/oauth/access_token',
201
+ authorize_url='https://github.com/login/oauth/authorize',
202
+ api_base_url='https://api.github.com/',
203
+ client_kwargs={'scope': 'user:email'},
204
+ )
205
+
206
+ @app.get("/auth/github")
207
+ async def github_login(request: Request):
208
+ """重定向到GitHub授权页面"""
209
+ redirect_uri = request.url_for('github_callback')
210
+ return await oauth.github.authorize_redirect(request, redirect_uri)
211
+
212
+ @app.get("/auth/github/callback")
213
+ async def github_callback(request: Request):
214
+ """GitHub回调处理"""
215
+ token = await oauth.github.authorize_access_token(request)
216
+ user_info = await oauth.github.get('user', token=token)
217
+ user_data = user_info.json()
218
+
219
+ # 查找或创建本地用户
220
+ user = await find_or_create_user(
221
+ provider="github",
222
+ provider_id=str(user_data["id"]),
223
+ email=user_data.get("email"),
224
+ name=user_data["name"],
225
+ avatar=user_data["avatar_url"],
226
+ )
227
+
228
+ # 创建本地Session/JWT
229
+ session_id = await create_session(user.id, {"email": user.email})
230
+ response = RedirectResponse(url="/dashboard")
231
+ response.set_cookie(SESSION_COOKIE, session_id, httponly=True, secure=True)
232
+ return response
233
+ ```
234
+
235
+ ### Passkey/WebAuthn
236
+
237
+ ```python
238
+ # Passkey注册和认证(使用py_webauthn库)
239
+ from webauthn import (
240
+ generate_registration_options,
241
+ verify_registration_response,
242
+ generate_authentication_options,
243
+ verify_authentication_response,
244
+ )
245
+ from webauthn.helpers.structs import (
246
+ AuthenticatorSelectionCriteria,
247
+ ResidentKeyRequirement,
248
+ UserVerificationRequirement,
249
+ )
250
+
251
+ RP_ID = "example.com"
252
+ RP_NAME = "My App"
253
+ ORIGIN = "https://example.com"
254
+
255
+ @app.post("/auth/passkey/register/begin")
256
+ async def passkey_register_begin(user: dict = Depends(get_current_user)):
257
+ """开始Passkey注册"""
258
+ options = generate_registration_options(
259
+ rp_id=RP_ID,
260
+ rp_name=RP_NAME,
261
+ user_id=str(user["id"]).encode(),
262
+ user_name=user["email"],
263
+ user_display_name=user.get("name", user["email"]),
264
+ authenticator_selection=AuthenticatorSelectionCriteria(
265
+ resident_key=ResidentKeyRequirement.REQUIRED,
266
+ user_verification=UserVerificationRequirement.REQUIRED,
267
+ ),
268
+ )
269
+ # 保存challenge用于验证
270
+ await redis.setex(
271
+ f"passkey_challenge:{user['id']}",
272
+ 300,
273
+ options.challenge.hex(),
274
+ )
275
+ return options
276
+
277
+ @app.post("/auth/passkey/register/complete")
278
+ async def passkey_register_complete(
279
+ credential: dict,
280
+ user: dict = Depends(get_current_user),
281
+ ):
282
+ """完成Passkey注册"""
283
+ challenge = bytes.fromhex(
284
+ await redis.get(f"passkey_challenge:{user['id']}")
285
+ )
286
+ verification = verify_registration_response(
287
+ credential=credential,
288
+ expected_challenge=challenge,
289
+ expected_rp_id=RP_ID,
290
+ expected_origin=ORIGIN,
291
+ )
292
+ # 保存公钥凭证
293
+ await save_passkey(
294
+ user_id=user["id"],
295
+ credential_id=verification.credential_id,
296
+ public_key=verification.credential_public_key,
297
+ sign_count=verification.sign_count,
298
+ )
299
+ return {"status": "registered"}
300
+ ```
301
+
302
+ ### MFA多因素认证
303
+
304
+ ```python
305
+ # TOTP(基于时间的一次性密码)
306
+ import pyotp
307
+ import qrcode
308
+ import io
309
+ import base64
310
+
311
+ class MFAService:
312
+ @staticmethod
313
+ def generate_secret() -> str:
314
+ """生成TOTP密钥"""
315
+ return pyotp.random_base32()
316
+
317
+ @staticmethod
318
+ def get_qr_code(secret: str, email: str) -> str:
319
+ """生成二维码(用于Google Authenticator等APP扫描)"""
320
+ totp = pyotp.TOTP(secret)
321
+ uri = totp.provisioning_uri(name=email, issuer_name="MyApp")
322
+ img = qrcode.make(uri)
323
+ buffer = io.BytesIO()
324
+ img.save(buffer, format='PNG')
325
+ return base64.b64encode(buffer.getvalue()).decode()
326
+
327
+ @staticmethod
328
+ def verify_totp(secret: str, code: str) -> bool:
329
+ """验证TOTP码"""
330
+ totp = pyotp.TOTP(secret)
331
+ return totp.verify(code, valid_window=1) # 允许前后30秒
332
+
333
+ @app.post("/auth/mfa/enable")
334
+ async def enable_mfa(user: dict = Depends(get_current_user)):
335
+ secret = MFAService.generate_secret()
336
+ # 临时保存,等验证后再持久化
337
+ await redis.setex(f"mfa_setup:{user['id']}", 600, secret)
338
+ qr_code = MFAService.get_qr_code(secret, user["email"])
339
+ return {"qr_code": qr_code, "secret": secret}
340
+
341
+ @app.post("/auth/mfa/verify-setup")
342
+ async def verify_mfa_setup(
343
+ code: str,
344
+ user: dict = Depends(get_current_user),
345
+ ):
346
+ secret = await redis.get(f"mfa_setup:{user['id']}")
347
+ if not secret:
348
+ raise HTTPException(400, "MFA setup expired")
349
+ if not MFAService.verify_totp(secret, code):
350
+ raise HTTPException(400, "Invalid code")
351
+
352
+ # 持久化密钥
353
+ await save_mfa_secret(user["id"], secret)
354
+ # 生成恢复码
355
+ recovery_codes = [str(uuid.uuid4())[:8] for _ in range(10)]
356
+ await save_recovery_codes(user["id"], recovery_codes)
357
+ return {"recovery_codes": recovery_codes}
358
+
359
+ @app.post("/auth/login")
360
+ async def login_with_mfa(email: str, password: str, mfa_code: str = None):
361
+ user = await verify_credentials(email, password)
362
+ if not user:
363
+ raise HTTPException(401, "Invalid credentials")
364
+
365
+ if user.mfa_enabled:
366
+ if not mfa_code:
367
+ return {"requires_mfa": True, "mfa_token": create_mfa_token(user.id)}
368
+ if not MFAService.verify_totp(user.mfa_secret, mfa_code):
369
+ raise HTTPException(401, "Invalid MFA code")
370
+
371
+ return create_token_pair(user)
372
+ ```
373
+
374
+ ## 最佳实践
375
+
376
+ ### 1. 密码存储
377
+ - 使用bcrypt/scrypt/Argon2,永远不用MD5/SHA系列
378
+ - 每个密码独立随机盐值
379
+ - 成本因子定期调整(bcrypt rounds >= 12)
380
+ - 密码策略: 最少8字符,不限制最大长度
381
+
382
+ ### 2. JWT安全配置
383
+ - Access Token短有效期(15分钟)
384
+ - Refresh Token用于续期(7-30天)
385
+ - 使用httpOnly Cookie存储而非localStorage
386
+ - 实现Token黑名单(登出/强制下线)
387
+ - 生产环境使用RS256而非HS256(方便密钥轮换)
388
+
389
+ ### 3. Session安全
390
+ - Session ID使用密码学安全随机数
391
+ - httpOnly + Secure + SameSite Cookie属性
392
+ - 登录后轮换Session ID(防Session Fixation)
393
+ - 设置合理的空闲超时和绝对超时
394
+
395
+ ### 4. OAuth2安全
396
+ - 使用PKCE(Proof Key for Code Exchange)
397
+ - state参数防CSRF
398
+ - 验证redirect_uri白名单
399
+ - Access Token不要暴露给前端
400
+
401
+ ### 5. MFA部署
402
+ - 提供多种第二因素(TOTP/SMS/邮件/Passkey)
403
+ - 生成恢复码并安全存储
404
+ - 敏感操作(改密码/改邮箱)要求重新认证
405
+ - 管理员账户强制启用MFA
406
+
407
+ ## 常见陷阱
408
+
409
+ ### 陷阱1: JWT存在localStorage
410
+ ```javascript
411
+ // 错误: XSS攻击可以窃取token
412
+ localStorage.setItem('token', jwt)
413
+
414
+ // 正确: 使用httpOnly Cookie
415
+ // 服务端设置,JS无法读取
416
+ Set-Cookie: token=xxx; HttpOnly; Secure; SameSite=Lax
417
+ ```
418
+
419
+ ### 陷阱2: 无Token刷新机制
420
+ ```python
421
+ # 错误: Access Token有效期7天(太长,泄露风险大)
422
+ # 正确: Access Token 15分钟 + Refresh Token 7天
423
+ # Refresh Token可以单独吊销
424
+ ```
425
+
426
+ ### 陷阱3: 密码重置流程不安全
427
+ ```python
428
+ # 错误: 重置链接永不过期,可重复使用
429
+ # 正确: 一次性令牌 + 短有效期
430
+ async def create_reset_token(user_id: int) -> str:
431
+ token = secrets.token_urlsafe(32)
432
+ await redis.setex(f"reset:{token}", 3600, str(user_id)) # 1小时过期
433
+ return token
434
+
435
+ async def verify_reset_token(token: str) -> int:
436
+ user_id = await redis.get(f"reset:{token}")
437
+ if not user_id:
438
+ raise HTTPException(400, "Invalid or expired reset link")
439
+ await redis.delete(f"reset:{token}") # 一次性使用
440
+ return int(user_id)
441
+ ```
442
+
443
+ ### 陷阱4: 登录错误信息泄露
444
+ ```python
445
+ # 错误: 暴露用户是否存在
446
+ if not user:
447
+ raise HTTPException(401, "User not found") # 泄露用户存在性
448
+ if not verify_password(password, user.hashed_password):
449
+ raise HTTPException(401, "Wrong password") # 泄露密码错误
450
+
451
+ # 正确: 统一错误消息
452
+ raise HTTPException(401, "Invalid email or password")
453
+ ```
454
+
455
+ ## Agent Checklist
456
+
457
+ ### 认证方案选择
458
+ - [ ] 根据应用类型选择合适的认证模式
459
+ - [ ] 评估安全需求级别
460
+ - [ ] 确认是否需要MFA
461
+ - [ ] SSO/第三方登录需求已评估
462
+
463
+ ### 安全配置
464
+ - [ ] 密码使用bcrypt/Argon2存储
465
+ - [ ] Token有效期合理(Access短/Refresh长)
466
+ - [ ] Cookie设置httpOnly+Secure+SameSite
467
+ - [ ] CSRF保护已启用
468
+
469
+ ### Token管理
470
+ - [ ] Token刷新机制已实现
471
+ - [ ] Token黑名单/吊销机制已实现
472
+ - [ ] 登出清理所有会话/Token
473
+ - [ ] 密钥轮换方案已设计
474
+
475
+ ### 用户体验
476
+ - [ ] 登录错误消息不泄露信息
477
+ - [ ] 密码重置流程安全且友好
478
+ - [ ] MFA恢复码已提供
479
+ - [ ] 记住我功能安全实现