@umacloud/knowledge 1.0.15 → 1.0.17

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 (171) hide show
  1. package/00-governance/governance-capabilities.md +1 -1
  2. package/00-governance/knowledge-map.md +4 -6
  3. package/agentic-delivery/01-standards/context-engineering-for-delivery.md +94 -0
  4. package/agentic-delivery/01-standards/eval-driven-delivery.md +90 -0
  5. package/agentic-delivery/01-standards/generated-code-failure-modes.md +91 -0
  6. package/agentic-delivery/01-standards/production-readiness-scorecard.md +79 -0
  7. package/agentic-delivery/01-standards/self-improving-memory-and-regression-sets.md +80 -0
  8. package/agentic-delivery/01-standards/spec-as-contract.md +88 -0
  9. package/agentic-delivery/01-standards/test-discipline-for-generated-code.md +94 -0
  10. package/agentic-delivery/01-standards/test-integrity-and-anti-gaming.md +92 -0
  11. package/agentic-delivery/01-standards/verifier-critic-pattern.md +89 -0
  12. package/ai/01-standards/app-runtime-model-configurable.md +76 -0
  13. package/ai/agent-evaluation-benchmark.md +4 -6
  14. package/ai/ai-agent-memory-context-management.md +4 -6
  15. package/ai/ai-cost-capacity-optimization-playbook.md +4 -6
  16. package/ai/ai-data-security-and-compliance-playbook.md +4 -6
  17. package/ai/ai-domain-index-and-checklist.md +4 -6
  18. package/ai/ai-governance-maturity-model.md +4 -6
  19. package/ai/ai-model-selection-and-routing-strategy.md +4 -6
  20. package/ai/ai-observability-and-oncall-runbook.md +4 -6
  21. package/ai/ai-rag-engineering-playbook.md +4 -6
  22. package/ai/ai-red-team-and-safety-evaluation.md +4 -6
  23. package/ai/ai-release-readiness-and-rollback-gate.md +4 -6
  24. package/ai/llm-agent-engineering-deep-dive.md +4 -6
  25. package/ai/prompt-and-tool-guardrails.md +4 -6
  26. package/api/01-standards/api-versioning-and-deprecation-policy.md +100 -0
  27. package/architecture/01-standards/configuration-and-environment-management.md +104 -0
  28. package/architecture/01-standards/domain-driven-design-complete.md +105 -0
  29. package/architecture/02-playbooks/migration-playbook.md +1 -5
  30. package/architecture/02-playbooks/system-design-playbook.md +1 -5
  31. package/architecture/adr-template-and-examples.md +4 -6
  32. package/architecture/api-gateway-deep-dive.md +1 -1
  33. package/architecture/configuration-management.md +95 -1158
  34. package/architecture/distributed-transactions.md +1 -1
  35. package/architecture/microservices-complete.md +1 -1
  36. package/architecture/resilience-and-disaster-patterns.md +87 -27
  37. package/architecture/service-governance.md +1 -1
  38. package/architecture/system-architecture-deep-dive.md +4 -6
  39. package/backend/01-standards/cjk-in-exports-and-documents.md +107 -0
  40. package/backend/01-standards/dependency-and-supply-chain-hygiene.md +90 -0
  41. package/backend/01-standards/django-complete.md +2 -2
  42. package/backend/01-standards/error-handling-taxonomy.md +88 -0
  43. package/backend/01-standards/idempotency-and-safe-retries.md +101 -0
  44. package/backend/01-standards/message-queue-patterns.md +96 -374
  45. package/backend/01-standards/nestjs-complete.md +23 -23
  46. package/backend/01-standards/queue-and-consumer-reliability.md +98 -0
  47. package/backend/01-standards/resilience-and-fault-tolerance.md +101 -0
  48. package/backend/01-standards/transactions-and-concurrency-control.md +92 -0
  49. package/cicd/cicd-blueprint-deep-dive.md +4 -6
  50. package/cicd/release-readiness-gate.md +78 -27
  51. package/cloud-native/01-standards/container-security.md +1 -5
  52. package/cloud-native/01-standards/kubernetes-complete.md +1 -5
  53. package/cloud-native/02-playbooks/gitops-with-argocd.md +1 -5
  54. package/cloud-native/02-playbooks/k8s-troubleshooting-playbook.md +3 -7
  55. package/cloud-native/02-playbooks/multicloud-governance.md +1 -5
  56. package/cloud-native/02-playbooks/serverless-patterns.md +1 -5
  57. package/cloud-native/02-playbooks/service-mesh-playbook.md +1 -5
  58. package/cloud-native/03-checklists/container-security-checklist.md +1 -5
  59. package/cloud-native/03-checklists/k8s-production-readiness-checklist.md +1 -5
  60. package/cloud-native/04-antipatterns/container-antipatterns.md +1 -5
  61. package/cloud-native/04-antipatterns/k8s-antipatterns.md +1 -5
  62. package/cloud-native/05-cases/case-k8s-migration.md +1 -5
  63. package/cloud-native/05-cases/case-k8s-scaling.md +1 -5
  64. package/cloud-native/05-cases/case-k8s-security-incident.md +1 -5
  65. package/cloud-native/06-glossary/cloud-native-glossary.md +1 -5
  66. package/compliance/01-standards/audit-logging-and-evidence.md +111 -0
  67. package/compliance/01-standards/privacy-and-compliance-readiness.md +119 -0
  68. package/data/01-standards/elasticsearch-complete.md +2 -2
  69. package/data/01-standards/postgresql-complete.md +8 -8
  70. package/data/01-standards/redis-complete.md +11 -11
  71. package/data/data-governance-and-modeling-deep-dive.md +4 -6
  72. package/data-engineering/01-standards/kafka-complete.md +22 -22
  73. package/design/ui-full-lifecycle-cross-platform-playbook.md +1 -1
  74. package/design/ux-system-deep-dive.md +4 -6
  75. package/design-systems/00-craft-rules.md +1 -1
  76. package/design-systems/bold-geometric.md +1 -1
  77. package/design-systems/brutalist-bold.md +1 -1
  78. package/design-systems/editorial-clean.md +1 -1
  79. package/design-systems/glass-aurora.md +1 -1
  80. package/design-systems/modern-minimal.md +1 -1
  81. package/design-systems/premium-luxury.md +1 -1
  82. package/design-systems/soft-warm.md +1 -1
  83. package/design-systems/tech-utility.md +1 -1
  84. package/development/00-governance/document-template.md +3 -3
  85. package/development/01-standards/code-review-and-pr-hygiene.md +85 -0
  86. package/development/01-standards/golang-complete.md +2 -2
  87. package/development/01-standards/python-design-patterns.md +2 -2
  88. package/development/01-standards/typescript-advanced-types.md +2 -2
  89. package/development/03-checklists/production-readiness-checklist.md +6 -6
  90. package/development/09-maturity/quarterly-audit-template.md +3 -5
  91. package/development/11-ui-excellence/ui-aesthetic-system.md +3 -5
  92. package/development/13-implementation-assets/knowledge-gates-execution.md +3 -5
  93. package/development/api-contract-and-versioning-guide.md +4 -6
  94. package/development/api-governance-complete.md +4 -6
  95. package/development/backend-engineering-complete.md +4 -6
  96. package/development/code-review-quality-complete.md +11 -34
  97. package/development/concurrency-reliability-complete.md +4 -6
  98. package/development/database-engineering-complete.md +4 -6
  99. package/development/engineering-effectiveness-complete.md +4 -6
  100. package/development/engineering-standards-deep-dive.md +4 -6
  101. package/development/frontend-engineering-complete.md +4 -6
  102. package/development/performance-capacity-complete.md +4 -6
  103. package/development/refactor-migration-complete.md +4 -6
  104. package/development/refactoring-and-techdebt-playbook.md +4 -6
  105. package/development/security-in-development-complete.md +4 -6
  106. package/devops/01-standards/docker-complete.md +2 -2
  107. package/devops/01-standards/terraform-complete.md +3 -3
  108. package/experts/architect/contract-first-api-design.md +140 -0
  109. package/experts/product-manager/prd-template-and-structure.md +144 -0
  110. package/experts/product-manager/requirements-engineering-ears.md +133 -0
  111. package/experts/qa-lead/test-plan-template.md +127 -0
  112. package/frontend/01-standards/accessibility-acceptance-gate.md +91 -0
  113. package/frontend/01-standards/accessibility-complete.md +3 -3
  114. package/frontend/01-standards/i18n-and-localization.md +1 -1
  115. package/frontend/01-standards/react-hooks-complete.md +33 -33
  116. package/frontend/01-standards/ui-states-and-resilient-data-fetching.md +97 -0
  117. package/frontend/01-standards/vue3-complete.md +2 -2
  118. package/high-quality-engineering-playbook.md +4 -6
  119. package/incident/02-playbooks/chaos-engineering-playbook.md +1 -5
  120. package/incident/postmortem-and-response-deep-dive.md +4 -6
  121. package/mobile/01-standards/flutter-complete.md +3 -8
  122. package/mobile/01-standards/react-native-complete.md +3 -8
  123. package/mobile/02-playbooks/mobile-performance.md +3 -9
  124. package/mobile/03-checklists/mobile-release-checklist.md +3 -5
  125. package/mobile/04-antipatterns/mobile-antipatterns.md +3 -5
  126. package/observability/01-standards/observability-and-slo-operations.md +88 -0
  127. package/observability/01-standards/observability-standards.md +2 -0
  128. package/operations/01-standards/cost-and-finops-engineering.md +84 -0
  129. package/operations/01-standards/production-readiness-review.md +103 -0
  130. package/operations/01-standards/prometheus-monitoring-complete.md +2 -2
  131. package/operations/aiops-anomaly-detection.md +4 -8
  132. package/operations/capacity-planning.md +4 -8
  133. package/operations/chaos-engineering.md +4 -8
  134. package/operations/incident-command-system.md +4 -6
  135. package/operations/observability-complete.md +4 -8
  136. package/operations/slo-sli-playbook.md +4 -8
  137. package/operations/sre-operations-deep-dive.md +4 -6
  138. package/package.json +1 -1
  139. package/performance/01-standards/performance-budgets-and-load-testing.md +91 -0
  140. package/product/feature-prioritization-framework.md +97 -35
  141. package/product/kpi-and-metric-tree.md +69 -26
  142. package/product/product-discovery-and-prd-deep-dive.md +4 -6
  143. package/release-engineering/01-standards/feature-flag-lifecycle.md +92 -0
  144. package/release-engineering/01-standards/progressive-delivery-and-release.md +92 -0
  145. package/release-engineering/02-playbooks/release-rollback-and-recovery-playbook.md +99 -0
  146. package/release-engineering/03-checklists/release-rollback-readiness-checklist.md +61 -0
  147. package/release-engineering/04-antipatterns/release-antipatterns.md +63 -0
  148. package/security/01-standards/authorization-and-access-control.md +94 -0
  149. package/security/01-standards/owasp-top10-complete.md +2 -2
  150. package/security/02-playbooks/incident-response-security-playbook.md +1 -5
  151. package/security/02-playbooks/penetration-testing-playbook.md +1 -5
  152. package/security/compliance-automation.md +1 -1
  153. package/security/container-security.md +1 -1
  154. package/security/devsecops-complete.md +1 -1
  155. package/security/sast-dast-sca.md +1 -1
  156. package/security/secrets-management.md +1 -1
  157. package/security/security-architecture-deep-dive.md +4 -6
  158. package/security/threat-modeling-stride-playbook.md +4 -6
  159. package/seed-templates/auth-system.md +1 -1
  160. package/seed-templates/blog-content.md +1 -1
  161. package/seed-templates/dashboard.md +1 -1
  162. package/seed-templates/docs-site.md +1 -1
  163. package/seed-templates/e-commerce.md +1 -1
  164. package/seed-templates/saas-landing.md +1 -1
  165. package/seed-templates/settings-page.md +1 -1
  166. package/testing/01-standards/ci-test-gates-and-coverage.md +93 -0
  167. package/testing/01-standards/contract-testing-and-api-contracts.md +102 -0
  168. package/testing/01-standards/test-data-and-ephemeral-environments.md +105 -0
  169. package/testing/02-playbooks/e2e-testing-playbook.md +1 -5
  170. package/testing/risk-based-test-matrix.md +75 -25
  171. package/testing/testing-strategy-deep-dive.md +4 -6
@@ -62,4 +62,4 @@ last_updated: 2026-06-19
62
62
  - [ ] locale 检测+切换持久化;后端邮件/通知可本地化;多语言 SEO(hreflang)。
63
63
 
64
64
  ---
65
- **参考**:ICU MessageFormat、`Intl` API、react-i18next/vue-i18n、CLDR 复数规则、RTL 逻辑属性、hreflang
65
+ **参考**:ICU MessageFormat、`Intl` API、react-i18next/vue-i18n、CLDR 复数规则、RTL 逻辑属性、hreflang。数据导出/生成文档(CSV/Excel/PDF)的中文不乱码见 `backend/01-standards/cjk-in-exports-and-documents.md`。
@@ -5,8 +5,8 @@ domain: frontend
5
5
  category: 01-standards
6
6
  difficulty: intermediate
7
7
  tags: [complete, frontend, hooks, react, typescript, 常见陷阱, 性能优化, 最佳实践]
8
- quality_score: 70
9
- last_updated: 2026-06-15
8
+ quality_score: 90
9
+ last_updated: 2026-06-29
10
10
  ---
11
11
  # React Hooks 深度指南
12
12
 
@@ -327,12 +327,12 @@ function Parent() {
327
327
  const [count, setCount] = useState(0);
328
328
  const [text, setText] = useState('');
329
329
 
330
- // 不好:每次渲染都创建新函数
330
+ // [避免] 不好:每次渲染都创建新函数
331
331
  // const handleClick = () => {
332
332
  // console.log('Clicked');
333
333
  // };
334
334
 
335
- // 好:缓存函数引用
335
+ // [推荐] 好:缓存函数引用
336
336
  const handleClick = useCallback(() => {
337
337
  console.log('Clicked');
338
338
  }, []);
@@ -360,12 +360,12 @@ function Parent() {
360
360
  import React, { useState, useMemo } from 'react';
361
361
 
362
362
  function ProductList({ products, filter, sortBy }) {
363
- // 不好:每次渲染都重新计算
363
+ // [避免] 不好:每次渲染都重新计算
364
364
  // const filteredProducts = products
365
365
  // .filter(p => p.name.includes(filter))
366
366
  // .sort((a, b) => a[sortBy] - b[sortBy]);
367
367
 
368
- // 好:缓存计算结果
368
+ // [推荐] 好:缓存计算结果
369
369
  const filteredProducts = useMemo(() => {
370
370
  console.log('重新计算过滤和排序');
371
371
  return products
@@ -837,26 +837,26 @@ function LoginForm() {
837
837
  ### 规则 1: 只在顶层调用 Hooks
838
838
 
839
839
  ```javascript
840
- // 错误:在循环中调用
840
+ // [避免] 错误:在循环中调用
841
841
  function BadComponent({ items }) {
842
842
  items.forEach(item => {
843
843
  const [state, setState] = useState(item); // 错误!
844
844
  });
845
845
  }
846
846
 
847
- // 正确:在顶层调用
847
+ // [推荐] 正确:在顶层调用
848
848
  function GoodComponent({ items }) {
849
849
  const [states, setStates] = useState(items);
850
850
  }
851
851
 
852
- // 错误:在条件语句中调用
852
+ // [避免] 错误:在条件语句中调用
853
853
  function BadComponent({ condition }) {
854
854
  if (condition) {
855
855
  const [value, setValue] = useState(0); // 错误!
856
856
  }
857
857
  }
858
858
 
859
- // 正确:条件逻辑在 Hook 内部
859
+ // [推荐] 正确:条件逻辑在 Hook 内部
860
860
  function GoodComponent({ condition }) {
861
861
  const [value, setValue] = useState(0);
862
862
 
@@ -871,12 +871,12 @@ function GoodComponent({ condition }) {
871
871
  ### 规则 2: 只在 React 函数中调用
872
872
 
873
873
  ```javascript
874
- // 错误:在普通函数中调用
874
+ // [避免] 错误:在普通函数中调用
875
875
  function handleClick() {
876
876
  const [count, setCount] = useState(0); // 错误!
877
877
  }
878
878
 
879
- // 正确:在组件或自定义 Hook 中调用
879
+ // [推荐] 正确:在组件或自定义 Hook 中调用
880
880
  function MyComponent() {
881
881
  const [count, setCount] = useState(0);
882
882
 
@@ -918,12 +918,12 @@ const ChildComponent = memo(({ data, onClick }) => {
918
918
  ### 2. 正确使用依赖数组
919
919
 
920
920
  ```javascript
921
- // 缺少依赖
921
+ // [避免] 缺少依赖
922
922
  useEffect(() => {
923
923
  fetchData(userId);
924
924
  }, []); // 缺少 userId 依赖
925
925
 
926
- // 完整依赖
926
+ // [推荐] 完整依赖
927
927
  useEffect(() => {
928
928
  fetchData(userId);
929
929
  }, [userId]);
@@ -932,7 +932,7 @@ useEffect(() => {
932
932
  ### 3. 避免内联函数和对象
933
933
 
934
934
  ```javascript
935
- // 每次渲染都创建新函数/对象
935
+ // [避免] 每次渲染都创建新函数/对象
936
936
  function Parent() {
937
937
  const [count, setCount] = useState(0);
938
938
 
@@ -944,7 +944,7 @@ function Parent() {
944
944
  );
945
945
  }
946
946
 
947
- // 使用 useCallback 和 useMemo
947
+ // [推荐] 使用 useCallback 和 useMemo
948
948
  function Parent() {
949
949
  const [count, setCount] = useState(0);
950
950
 
@@ -988,7 +988,7 @@ function VirtualizedList({ items }) {
988
988
  ### 陷阱 1: 闭包陷阱
989
989
 
990
990
  ```javascript
991
- // 错误:闭包捕获旧值
991
+ // [避免] 错误:闭包捕获旧值
992
992
  function Counter() {
993
993
  const [count, setCount] = useState(0);
994
994
 
@@ -1000,7 +1000,7 @@ function Counter() {
1000
1000
  }, []);
1001
1001
  }
1002
1002
 
1003
- // 正确:使用函数式更新
1003
+ // [推荐] 正确:使用函数式更新
1004
1004
  function Counter() {
1005
1005
  const [count, setCount] = useState(0);
1006
1006
 
@@ -1015,7 +1015,7 @@ function Counter() {
1015
1015
  }, []);
1016
1016
  }
1017
1017
 
1018
- // 或使用 ref
1018
+ // [推荐] 或使用 ref
1019
1019
  function Counter() {
1020
1020
  const [count, setCount] = useState(0);
1021
1021
  const countRef = useRef(count);
@@ -1034,7 +1034,7 @@ function Counter() {
1034
1034
  ### 陷阱 2: 无限循环
1035
1035
 
1036
1036
  ```javascript
1037
- // 错误:导致无限循环
1037
+ // [避免] 错误:导致无限循环
1038
1038
  function BadComponent() {
1039
1039
  const [items, setItems] = useState([]);
1040
1040
 
@@ -1043,7 +1043,7 @@ function BadComponent() {
1043
1043
  }, [items]); // 依赖 items,导致循环
1044
1044
  }
1045
1045
 
1046
- // 正确:使用函数式更新
1046
+ // [推荐] 正确:使用函数式更新
1047
1047
  function GoodComponent() {
1048
1048
  const [items, setItems] = useState([]);
1049
1049
 
@@ -1056,11 +1056,11 @@ function GoodComponent() {
1056
1056
  ### 陷阱 3: 直接修改状态
1057
1057
 
1058
1058
  ```javascript
1059
- // 错误:直接修改状态
1059
+ // [避免] 错误:直接修改状态
1060
1060
  const [user, setUser] = useState({ name: 'Alice' });
1061
1061
  user.name = 'Bob'; // 不会触发重新渲染
1062
1062
 
1063
- // 正确:创建新对象
1063
+ // [推荐] 正确:创建新对象
1064
1064
  setUser({ ...user, name: 'Bob' });
1065
1065
  ```
1066
1066
 
@@ -1068,16 +1068,16 @@ setUser({ ...user, name: 'Bob' });
1068
1068
 
1069
1069
  ## 最佳实践
1070
1070
 
1071
- 1. **✅ 使用函数式更新**: `setCount(prev => prev + 1)`
1072
- 2. **✅ 保持依赖数组完整**: 使用 eslint-plugin-react-hooks
1073
- 3. **✅ 拆分复杂状态**: 多个 useState 而非一个巨大对象
1074
- 4. **✅ 自定义 Hook 复用逻辑**: 避免复制粘贴
1075
- 5. **✅ 命名规范**: use 开头的自定义 Hook
1076
- 6. **✅ 合理使用 useMemo/useCallback**: 不要过度优化
1077
- 7. **✅ 错误边界**: 处理渲染错误
1078
- 8. **✅ 清理副作用**: useEffect 返回清理函数
1079
- 9. **✅ 测试 Hooks**: 使用 @testing-library/react-hooks
1080
- 10. **✅ TypeScript 支持**: 为 Hook 添加类型
1071
+ 1. **[推荐] 使用函数式更新**: `setCount(prev => prev + 1)`
1072
+ 2. **[推荐] 保持依赖数组完整**: 使用 eslint-plugin-react-hooks
1073
+ 3. **[推荐] 拆分复杂状态**: 多个 useState 而非一个巨大对象
1074
+ 4. **[推荐] 自定义 Hook 复用逻辑**: 避免复制粘贴
1075
+ 5. **[推荐] 命名规范**: use 开头的自定义 Hook
1076
+ 6. **[推荐] 合理使用 useMemo/useCallback**: 不要过度优化
1077
+ 7. **[推荐] 错误边界**: 处理渲染错误
1078
+ 8. **[推荐] 清理副作用**: useEffect 返回清理函数
1079
+ 9. **[推荐] 测试 Hooks**: 使用 @testing-library/react-hooks
1080
+ 10. **[推荐] TypeScript 支持**: 为 Hook 添加类型
1081
1081
 
1082
1082
  ---
1083
1083
 
@@ -0,0 +1,97 @@
1
+ ---
2
+ id: ui-states-and-resilient-data-fetching
3
+ title: UI 状态与健壮数据获取规范(商业级前端必读)
4
+ domain: frontend
5
+ category: 01-standards
6
+ difficulty: intermediate
7
+ tags: [ui-states, loading, empty, error, optimistic-update, data-fetching, retry, resilience, 状态, 商业级]
8
+ quality_score: 95
9
+ last_updated: 2026-06-29
10
+ ---
11
+ # UI 状态与健壮数据获取规范(商业级前端必读)
12
+
13
+ > 区分"demo 级"和"商业级"前端的,不是动效,而是**对每一种状态的处理**:加载、空、错误、部分、离线、并发。
14
+ > 只画 happy path(有数据、网络好、不点重复)的界面,一上真实网络就白屏、转圈卡死、数据错乱。
15
+ > 每个会取数或提交的界面,都必须显式设计完整的状态矩阵。
16
+
17
+ ## 1. 状态矩阵(每个数据视图都要覆盖)
18
+
19
+ 任何"从后端取数据"的视图,至少要显式处理这些状态——缺一即不合格:
20
+
21
+ | 状态 | 含义 | UI 要求 |
22
+ |---|---|---|
23
+ | Loading(首次)| 还没有数据 | 骨架屏/占位,**不要**只放一个居中转圈占满屏 |
24
+ | Loading(刷新)| 已有旧数据、在拉新 | 保留旧内容 + 局部加载指示(不闪白) |
25
+ | Empty | 请求成功但无数据 | 友好空态:说明 + 引导操作("还没有订单,去下单"),区分"无数据"与"加载中" |
26
+ | Partial | 部分成功/分页中 | 显示已有 + "加载更多"/继续指示 |
27
+ | Error | 请求失败 | 明确错误信息 + **重试按钮**,不要白屏或一直转 |
28
+ | Success | 正常有数据 | 正常渲染 |
29
+ | Forbidden | 无权限 | 明确"无权限"而非空态或报错 |
30
+ | Offline | 无网络 | 离线提示 + 恢复后自动/手动重试 |
31
+
32
+ **反模式**:把 Empty 当 Loading(无数据时永远转圈)、把 Error 当 Empty(失败却显示"暂无数据"误导用户)、加载时整屏白屏闪烁。
33
+
34
+ ## 2. 加载体验
35
+
36
+ - **骨架屏优先**:列表/卡片/详情用与最终布局一致的骨架占位,避免布局跳动(CLS)。
37
+ - **保留旧数据刷新**:翻页/筛选/轮询时保留当前内容做局部 loading,别清空成白屏(stale-while-revalidate 思路)。
38
+ - **延迟显示 loading**:极快的请求(<300ms)可不显示 spinner,避免"闪一下"的抖动;超过阈值才显示。
39
+ - **防止布局跳动**:为图片/异步内容预留尺寸,占位与真实内容同尺寸。
40
+
41
+ ## 3. 错误处理
42
+
43
+ - **永远有出路**:任何错误态都要给"重试"或"返回",绝不留死界面。
44
+ - **可理解的信息**:把后端错误信封(`code/message`)映射成用户能懂的话;不要把原始 500 堆栈/技术错误码甩给用户。
45
+ - **就近显示**:表单字段错误显示在字段旁,全局错误用 toast/横幅;区分"可重试的系统错误"和"用户需修正的输入错误"。
46
+ - **错误边界(error boundary)**:组件级渲染异常要被边界捕获,降级为局部错误块,**不要整页崩白**。
47
+ - **超时也是错误**:请求设超时,超时给明确反馈与重试,不要无限转圈。
48
+
49
+ ## 4. 健壮的数据获取
50
+
51
+ - **客户端重试**:对幂等的 GET 失败做有限次指数退避+抖动重试;非幂等提交不自动重试(需幂等键,见 `backend/01-standards/idempotency-and-safe-retries`)。
52
+ - **请求竞态(latest-wins)**:快速切换筛选/搜索时,旧请求的响应可能后到并覆盖新结果——必须取消过期请求或丢弃过期响应(按发起序号/AbortController),保证"显示的是最后一次请求的结果"。
53
+ - **缓存与重验证**:列表数据可缓存并在后台重验证(stale-while-revalidate),先给旧值再悄悄刷新,提升感知速度。
54
+ - **去抖/节流**:搜索框输入去抖(debounce),滚动/resize 节流,避免请求风暴。
55
+ - **分页/无限滚动**:明确"加载更多/到底了/加载失败可重试"三态,别静默停住。
56
+
57
+ ## 5. 提交与乐观更新
58
+
59
+ - **防重复提交**:提交中禁用按钮 + 显示进行态;双击/回车连发只触发一次。配合服务端幂等。
60
+ - **乐观更新要可回滚**:先更新 UI 再发请求时,必须保存前值,**失败回滚**并提示,绝不让界面停留在"假成功"。
61
+ - **明确的提交结果**:成功给确认(toast/跳转),失败保留用户输入(别清空表单)+ 显示原因。
62
+ - **长操作**:耗时操作给进度/可取消,而不是冻结界面。
63
+
64
+ ## 6. 表单状态
65
+
66
+ - 校验分层:即时(失焦校验单字段)+ 提交时整体校验;错误就近显示。
67
+ - 提交中:禁用提交、显示 loading、阻止重复提交。
68
+ - 失败:保留已填数据,定位到第一个错误字段。
69
+ - 离开未保存:脏表单离开前提示,避免误丢输入。
70
+
71
+ ## 7. 可访问性与状态
72
+
73
+ - 加载/错误/成功要对辅助技术可感知:用 `aria-live` 通知动态变化,loading 用 `aria-busy`,错误关联到字段(`aria-describedby`)。
74
+ - 焦点管理:错误后把焦点移到错误区/首个错误字段;模态打开/关闭正确收发焦点。
75
+ - 不要只用颜色传达状态(红=错),要有文字/图标兜底。
76
+
77
+ ## 8. 反模式(出现即不合格)
78
+
79
+ 1. **只做 happy path**:无 empty/error/loading 处理,真实网络下白屏或转圈不止。
80
+ 2. **空态当加载**:无数据时永远 spinner。
81
+ 3. **错误吞掉**:catch 后什么都不显示,用户面对死界面。
82
+ 4. **整页崩白**:单个组件抛错拖垮整页(无 error boundary)。
83
+ 5. **请求竞态覆盖**:快速切换后显示的是旧请求的结果。
84
+ 6. **乐观更新不回滚**:失败后界面停在假成功。
85
+ 7. **可重复提交**:双击下单两次、扣两次款。
86
+ 8. **加载闪白/布局跳动**:刷新清空内容、异步内容撑开布局。
87
+
88
+ ## 9. 最低交付 checklist
89
+
90
+ - [ ] 每个取数视图覆盖 loading/empty/error/partial/forbidden/offline 全状态。
91
+ - [ ] 错误态都有重试出口,错误信息对用户可理解。
92
+ - [ ] 首次加载用骨架屏,刷新保留旧数据不闪白。
93
+ - [ ] 组件级 error boundary 防整页崩。
94
+ - [ ] 取数处理请求竞态(latest-wins / 取消过期请求)。
95
+ - [ ] 提交防重复 + 乐观更新可回滚 + 失败保留输入。
96
+ - [ ] 幂等的失败有限重试(退避+抖动),非幂等不自动重试。
97
+ - [ ] 状态变化对辅助技术可感知(aria-live/focus 管理)。
@@ -5,8 +5,8 @@ domain: frontend
5
5
  category: 01-standards
6
6
  difficulty: intermediate
7
7
  tags: [complete, frontend, pinia, router, vue3, 响应式系统原理, 性能优化, 概述]
8
- quality_score: 70
9
- last_updated: 2026-06-15
8
+ quality_score: 91
9
+ last_updated: 2026-06-29
10
10
  ---
11
11
  # Vue 3 完整知识体系
12
12
 
@@ -1,15 +1,13 @@
1
1
  ---
2
2
  id: high-quality-engineering-playbook
3
- title: high-quality-engineering-playbook
4
- domain: high-quality-engineering-playbook.md
3
+ title: 高质量工程知识库(Web 全栈版)
4
+ domain: development
5
5
  difficulty: intermediate
6
- tags: [engineering, high, high-quality-engineering-playbook.md, playbook, quality, 全栈版]
6
+ tags: [高质量工程, engineering, web全栈, 工程规范, 全栈, development, 商业级]
7
7
  quality_score: 70
8
8
  last_updated: 2026-06-15
9
9
  ---
10
- # 开发:Excellent(11964948@qq.com)
11
-
12
- ## 高质量工程知识库(Web 全栈版)
10
+ # 高质量工程知识库(Web 全栈版)
13
11
 
14
12
  ### 1. 目标与范围
15
13
  - 本知识库面向商业级 Web 应用,覆盖需求澄清、架构设计、交互体验、工程质量、上线运维与复盘。
@@ -10,11 +10,7 @@ difficulty: intermediate
10
10
  quality_score: 70
11
11
  ---
12
12
 
13
- # 开发:Excellent(11964948@qq.com)
14
- # 功能:混沌工程全流程作战手册
15
- # 作用:指导团队安全地实施混沌实验以验证系统韧性
16
- # 创建时间:2026-03-28
17
- # 最后修改:2026-03-28
13
+ # 混沌工程作战手册
18
14
 
19
15
  ## 目标
20
16
 
@@ -1,16 +1,14 @@
1
1
  ---
2
2
  id: postmortem-and-response-deep-dive
3
- title: postmortem-and-response-deep-dive
3
+ title: 事故响应与复盘深度知识库
4
4
  domain: incident
5
- category: postmortem-and-response-deep-dive.md
5
+ category: 01-standards
6
6
  difficulty: intermediate
7
- tags: [and, deep, dive, incident, postmortem, response, 事故响应与复盘深度知识库]
7
+ tags: [事故响应, postmortem, 复盘, incident-response, 根因分析, incident]
8
8
  quality_score: 70
9
9
  last_updated: 2026-06-15
10
10
  ---
11
- # 开发:Excellent(11964948@qq.com)
12
-
13
- ## 事故响应与复盘深度知识库
11
+ # 事故响应与复盘深度知识库
14
12
 
15
13
  ### 目标
16
14
  - 把每次故障转化为可复用的组织能力,持续降低重复事故概率。
@@ -2,17 +2,15 @@
2
2
  title: Flutter 完整开发标准
3
3
  category: mobile/standards
4
4
  version: 1.0.0
5
- last_updated: 2026-03-20
6
- maintainer: Excellent(11964948@qq.com)
5
+ last_updated: 2026-06-29
7
6
  knowledge_score: 9.3/10
8
7
  domain: mobile
9
8
  difficulty: intermediate
10
- quality_score: 70
9
+ quality_score: 83
11
10
  ---
12
11
 
13
- # 开发:Excellent(11964948@qq.com)
12
+ # Flutter 完整开发标准
14
13
 
15
- ## Flutter 完整开发标准
16
14
 
17
15
  ### 1. 架构与分层
18
16
  - 遵循 Clean Architecture 或 MVVM 模式。
@@ -79,7 +77,6 @@ quality_score: 70
79
77
 
80
78
  ### Widget 组件示例
81
79
  ```dart
82
- // 开发:Excellent(11964948@qq.com)
83
80
  // 功能:用户头像组件
84
81
  // 作用:展示用户头像,支持默认头像和加载状态
85
82
  // 创建时间:2026-03-20
@@ -150,7 +147,6 @@ class UserAvatar extends StatelessWidget {
150
147
 
151
148
  ### 网络请求封装示例
152
149
  ```dart
153
- // 开发:Excellent(11964948@qq.com)
154
150
  // 功能:API 客户端封装
155
151
  // 作用:统一管理网络请求,包含认证和错误处理
156
152
  // 创建时间:2026-03-20
@@ -230,7 +226,6 @@ final apiClient = ApiClient();
230
226
 
231
227
  ### 状态管理示例(Provider)
232
228
  ```dart
233
- // 开发:Excellent(11964948@qq.com)
234
229
  // 功能:用户状态管理
235
230
  // 作用:管理用户登录状态和用户信息
236
231
  // 创建时间:2026-03-20
@@ -2,17 +2,15 @@
2
2
  title: React Native 完整开发标准
3
3
  category: mobile/standards
4
4
  version: 1.0.0
5
- last_updated: 2026-03-20
6
- maintainer: Excellent(11964948@qq.com)
5
+ last_updated: 2026-06-29
7
6
  knowledge_score: 9.2/10
8
7
  domain: mobile
9
8
  difficulty: intermediate
10
- quality_score: 70
9
+ quality_score: 83
11
10
  ---
12
11
 
13
- # 开发:Excellent(11964948@qq.com)
12
+ # React Native 完整开发标准
14
13
 
15
- ## React Native 完整开发标准
16
14
 
17
15
  ### 1. 架构与分层
18
16
  - 业务层、展示层、数据层严格分离。
@@ -79,7 +77,6 @@ quality_score: 70
79
77
  ### TypeScript 组件示例
80
78
  ```typescript
81
79
  /**
82
- * 开发:Excellent(11964948@qq.com)
83
80
  * 功能:用户头像组件
84
81
  * 作用:展示用户头像,支持默认头像和加载状态
85
82
  * 创建时间:2026-03-20
@@ -138,7 +135,6 @@ const styles = StyleSheet.create({
138
135
  ### 网络请求封装示例
139
136
  ```typescript
140
137
  /**
141
- * 开发:Excellent(11964948@qq.com)
142
138
  * 功能:API 客户端封装
143
139
  * 作用:统一管理网络请求,包含认证和错误处理
144
140
  * 创建时间:2026-03-20
@@ -201,7 +197,6 @@ export const apiClient = new ApiClient();
201
197
  ### FlatList 优化示例
202
198
  ```typescript
203
199
  /**
204
- * 开发:Excellent(11964948@qq.com)
205
200
  * 功能:用户列表组件
206
201
  * 作用:高性能渲染用户列表,支持下拉刷新和加载更多
207
202
  * 创建时间:2026-03-20
@@ -2,17 +2,15 @@
2
2
  title: 移动应用性能优化手册
3
3
  category: mobile/playbooks
4
4
  version: 1.0.0
5
- last_updated: 2026-03-20
6
- maintainer: Excellent(11964948@qq.com)
5
+ last_updated: 2026-06-29
7
6
  knowledge_score: 9.0/10
8
7
  domain: mobile
9
8
  difficulty: intermediate
10
- quality_score: 70
9
+ quality_score: 83
11
10
  ---
12
11
 
13
- # 开发:Excellent(11964948@qq.com)
12
+ # 移动应用性能优化手册
14
13
 
15
- ## 移动应用性能优化手册
16
14
 
17
15
  ### 执行步骤
18
16
 
@@ -88,7 +86,6 @@ quality_score: 70
88
86
  #### React Native 优化
89
87
  ```typescript
90
88
  /**
91
- * 开发:Excellent(11964948@qq.com)
92
89
  * 功能:优化 FlatList 性能
93
90
  * 作用:通过配置优化参数提升长列表渲染性能
94
91
  * 创建时间:2026-03-20
@@ -165,7 +162,6 @@ export default OptimizedList;
165
162
 
166
163
  #### Flutter 优化
167
164
  ```dart
168
- // 开发:Excellent(11964948@qq.com)
169
165
  // 功能:优化 ListView 性能
170
166
  // 作用:通过 const 和 builder 提升长列表渲染性能
171
167
  // 创建时间:2026-03-20
@@ -231,7 +227,6 @@ class _ItemTile extends StatelessWidget {
231
227
  #### React Native 性能监控
232
228
  ```typescript
233
229
  /**
234
- * 开发:Excellent(11964948@qq.com)
235
230
  * 功能:性能监控工具
236
231
  * 作用:记录和上报关键性能指标
237
232
  * 创建时间:2026-03-20
@@ -326,7 +321,6 @@ export const performanceMonitor = PerformanceMonitor.getInstance();
326
321
 
327
322
  #### Flutter 性能监控
328
323
  ```dart
329
- // 开发:Excellent(11964948@qq.com)
330
324
  // 功能:性能监控工具
331
325
  // 作用:记录和上报关键性能指标
332
326
  // 创建时间:2026-03-20
@@ -2,17 +2,15 @@
2
2
  title: 移动应用发布检查清单
3
3
  category: mobile/checklists
4
4
  version: 1.0.0
5
- last_updated: 2026-03-20
6
- maintainer: Excellent(11964948@qq.com)
5
+ last_updated: 2026-06-29
7
6
  knowledge_score: 9.1/10
8
7
  domain: mobile
9
8
  difficulty: intermediate
10
- quality_score: 70
9
+ quality_score: 85
11
10
  ---
12
11
 
13
- # 开发:Excellent(11964948@qq.com)
12
+ # 移动应用发布检查清单
14
13
 
15
- ## 移动应用发布检查清单
16
14
 
17
15
  ### 一、功能完整性检查
18
16
 
@@ -2,17 +2,15 @@
2
2
  title: 移动开发反模式库
3
3
  category: mobile/antipatterns
4
4
  version: 1.0.0
5
- last_updated: 2026-03-20
6
- maintainer: Excellent(11964948@qq.com)
5
+ last_updated: 2026-06-29
7
6
  knowledge_score: 9.0/10
8
7
  domain: mobile
9
8
  difficulty: intermediate
10
- quality_score: 70
9
+ quality_score: 88
11
10
  ---
12
11
 
13
- # 开发:Excellent(11964948@qq.com)
12
+ # 移动开发反模式库
14
13
 
15
- ## 移动开发反模式库
16
14
 
17
15
  ### 1. 性能反模式
18
16
 
@@ -0,0 +1,88 @@
1
+ ---
2
+ id: observability-and-slo-operations
3
+ title: 可观测性与 SLO 运营规范(埋点契约/关联/错误预算,商业级必读)
4
+ domain: observability
5
+ category: 01-standards
6
+ difficulty: advanced
7
+ tags: [observability, structured-logging, metrics, tracing, correlation, slo, sli, error-budget, instrumentation-contract, cardinality, alerting, 可观测性, 结构化日志, 链路追踪, 错误预算, 商业级]
8
+ quality_score: 95
9
+ last_updated: 2026-06-29
10
+ ---
11
+ # 可观测性与 SLO 运营规范(商业级必读)
12
+
13
+ > 监控回答"系统是不是挂了",可观测性回答"**为什么挂、挂在哪、影响谁**"——尤其是面对**从没预想过**的故障,你能不能只靠已有的遥测数据查出来,而不必先发一版新代码加日志。
14
+ > 商业级系统把"每个服务必须发出什么遥测"当成**埋点契约**来落地,把三类信号(日志/指标/追踪)用统一关联键打通,并用 **SLO + 错误预算**把"健康"从主观感受变成可运营的数字。
15
+
16
+ ## 1. 三类信号,各司其职
17
+
18
+ | 信号 | 回答 | 特点 |
19
+ |---|---|---|
20
+ | 指标(metrics)| "坏了吗?坏多少?"(趋势、聚合)| 便宜、可长留、适合告警与看板 |
21
+ | 日志(logs)| "具体发生了什么?"(离散事件细节)| 信息密度高、量大、要结构化 |
22
+ | 追踪(traces)| "慢/错在调用链的哪一跳?"(请求穿越多服务的路径)| 定位跨服务瓶颈与故障点 |
23
+
24
+ 三者不是三选一,而是**互补**:指标发现异常 → 追踪定位到哪一跳 → 日志看那一跳的细节。关键是它们能**互相关联**(见 §3)。
25
+
26
+ ## 2. 埋点契约(每个服务必须发出的最小遥测)
27
+
28
+ 把"该发什么"标准化,避免每个服务各记各的、查问题时拼不起来:
29
+
30
+ - **结构化日志**:JSON/键值,不是裸文本字符串。必带字段:时间戳(UTC、ISO-8601)、级别、服务名、**关联ID(request_id / trace_id)**、消息;事件相关的关键业务字段。
31
+ - **请求/依赖指标**:每个入站端点与每个出站依赖发出请求量、错误率、延迟分布(直方图,能算分位);资源侧发出利用率与饱和度。
32
+ - **追踪**:入口生成/承接 trace,向所有下游**传播追踪上下文**,每个关键操作开 span,记录耗时与状态。
33
+ - **业务指标**:注册、下单、支付、转化等业务事件计数——技术全绿但下单为零也是事故。
34
+ - **健康检查**:存活/就绪端点,区分"进程活着"和"能正常服务"(依赖就绪)。
35
+
36
+ ## 3. 关联:把三类信号缝起来
37
+
38
+ - **统一关联ID**:每个请求在入口生成 `request_id` / `trace_id`,**贯穿**该请求触发的所有日志、span、跨服务调用。出问题时凭一个 ID 就能把一次请求的日志、链路、指标全捞出来。
39
+ - **上下文传播**:调用下游时透传追踪上下文(标准追踪头),让链路不断裂。
40
+ - **日志带 trace_id**:每条日志都带当前 trace_id,实现"从一条慢链路一键跳到对应日志"。
41
+ - **统一维度**:服务名、环境、版本、端点等标签在三类信号里取**一致的命名**,才能交叉关联。
42
+
43
+ ## 4. 基数(cardinality)纪律
44
+
45
+ 可观测性最容易失控、最容易烧钱的地方是**高基数标签**:
46
+
47
+ - **指标标签不放无界值**:用户ID、请求ID、邮箱、完整 URL 等高基数值**绝不**做指标标签(会让时间序列爆炸、成本失控、查询变慢)。这些放**日志/追踪**里(它们按事件存,能承载高基数)。
48
+ - **路径要模板化**:`/orders/123` 在指标里归一为 `/orders/{id}`,不要每个 id 一条序列。
49
+ - **采样**:高流量追踪可采样(按比例 + 对错误/慢请求强制保留),平衡成本与可见性。
50
+ - **日志分级与量控**:DEBUG 默认关;避免热路径里高频打无用日志把信号淹没、把成本拉高。
51
+
52
+ ## 5. SLI / SLO / 错误预算(把"健康"变成可运营的数字)
53
+
54
+ - **SLI(指标)**:从用户视角度量服务质量的量——可用性(成功请求占比)、延迟(达标请求占比)、正确性等。盯**用户体验到的**,不是 CPU。
55
+ - **SLO(目标)**:给 SLI 定目标,如"30 天内 99.9% 的请求成功且 p95 < 300ms"。SLO 要现实、可达、对齐业务。
56
+ - **错误预算(error budget)**:100% 减去 SLO = 允许的"不达标额度"。99.9% 即每月约 0.1% 的预算。
57
+ - 预算**没烧光** → 可以快速发布、大胆迭代。
58
+ - 预算**烧光** → 冻结高风险变更、优先稳定性,直到回到预算内。
59
+ - 这把"该求快还是求稳"从拍脑袋变成**数据驱动**的决策(深做见 `operations/slo-sli-playbook`)。
60
+
61
+ ## 6. 告警:少而准,可执行
62
+
63
+ - **基于症状告警**:对**用户感受到的**问题告警(错误率、延迟、SLO 燃尽),而不是对每个内部抖动(单台 CPU 高)告警。
64
+ - **错误预算燃尽率告警**:按预算消耗速度告警——烧得快(短窗口高燃尽)才需立刻叫人,慢烧给工单即可。
65
+ - **每条告警可执行**:触发即有人能做事,并指向 runbook;不可行动的告警要删,否则养出"告警疲劳"、真事故被淹。
66
+ - **分级**:区分"立刻起床处理"和"工作时间看",别什么都 P1。
67
+
68
+ ## 7. 反模式(出现即不合格)
69
+
70
+ 1. **裸文本日志**:非结构化字符串,无法检索、聚合、关联。
71
+ 2. **三信号各自为政**:日志、指标、追踪没有共同关联ID,出事拼不起来。
72
+ 3. **高基数炸指标**:把用户ID/请求ID/原始URL塞进指标标签,序列爆炸、成本失控。
73
+ 4. **只测技术指标不看业务**:CPU/内存全绿,但下单为零无人发现。
74
+ 5. **只有指标没有追踪**:知道"变慢了"但不知道慢在跨服务调用的哪一跳。
75
+ 6. **告警噪音**:成百上千条不可行动告警,真事故被淹,on-call 疲劳。
76
+ 7. **无 SLO**:没有"多好才算好"的定义,求快还是求稳全靠吵。
77
+ 8. **要查问题先加日志再发版**:遥测不足,未预想的故障无法靠现有数据定位。
78
+
79
+ ## 8. 最低交付 checklist
80
+
81
+ - [ ] 全部日志结构化,带时间戳/级别/服务名/关联ID/消息。
82
+ - [ ] 每个端点与依赖发出请求量/错误率/延迟分布;有关键业务指标。
83
+ - [ ] 入口生成 trace_id 并贯穿日志与跨服务调用,追踪上下文全程传播。
84
+ - [ ] 指标标签无高基数值,路径模板化;高流量追踪按需采样、错误强留。
85
+ - [ ] 定义面向用户的 SLI 与现实的 SLO,落地错误预算并用于发布决策。
86
+ - [ ] 告警基于用户症状与错误预算燃尽,条条可执行、指向 runbook、分级。
87
+ - [ ] 健康检查区分存活与就绪。
88
+ - [ ] 凭一个 request_id 能捞出一次请求的日志、链路与相关指标。
@@ -12,6 +12,8 @@ last_updated: 2026-06-14
12
12
 
13
13
  # 可观测性标准(日志 / 指标 / 追踪)
14
14
 
15
+ > 本页是**具体配置片段速查**(日志字段示例、PromQL、告警表、健康检查 JSON)。可观测性的权威规范——埋点契约、三信号关联、基数纪律、SLI/SLO 与错误预算——见 `observability/01-standards/observability-and-slo-operations`,两者配合使用。
16
+
15
17
  ## 三柱可观测性
16
18
 
17
19
  ### 1. 结构化日志