@umacloud/knowledge 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/00-governance/governance-capabilities.md +557 -0
- package/00-governance/knowledge-map.md +39 -0
- package/00-governance/maintenance-policy.md +76 -0
- package/00-governance/review-checklist.md +81 -0
- package/README.md +13 -0
- package/ai/01-standards/agent-development-complete.md +691 -0
- package/ai/01-standards/llm-application-complete.md +488 -0
- package/ai/01-standards/mlops-complete.md +798 -0
- package/ai/01-standards/prompt-engineering-complete.md +646 -0
- package/ai/01-standards/rag-architecture-complete.md +649 -0
- package/ai/02-playbooks/llm-evaluation-playbook.md +847 -0
- package/ai/03-checklists/ai-project-checklist.md +215 -0
- package/ai/04-antipatterns/ai-antipatterns.md +661 -0
- package/ai/05-cases/case-rag-production.md +147 -0
- package/ai/06-glossary/ai-glossary.md +162 -0
- package/ai/agent-evaluation-benchmark.md +53 -0
- package/ai/ai-agent-memory-context-management.md +41 -0
- package/ai/ai-cost-capacity-optimization-playbook.md +42 -0
- package/ai/ai-data-security-and-compliance-playbook.md +37 -0
- package/ai/ai-domain-index-and-checklist.md +40 -0
- package/ai/ai-governance-maturity-model.md +50 -0
- package/ai/ai-model-selection-and-routing-strategy.md +47 -0
- package/ai/ai-observability-and-oncall-runbook.md +52 -0
- package/ai/ai-rag-engineering-playbook.md +42 -0
- package/ai/ai-red-team-and-safety-evaluation.md +42 -0
- package/ai/ai-release-readiness-and-rollback-gate.md +42 -0
- package/ai/llm-agent-engineering-deep-dive.md +57 -0
- package/ai/prompt-and-tool-guardrails.md +52 -0
- package/api/01-standards/enterprise-api-standards.md +198 -0
- package/api/01-standards/rest-api-design-guide.md +63 -0
- package/api/02-playbooks/api-pagination-playbook.md +93 -0
- package/api/02-playbooks/graphql-production-playbook.md +176 -0
- package/api/03-checklists/api-review-checklist.md +55 -0
- package/api/04-antipatterns/api-antipatterns.md +112 -0
- package/architecture/01-standards/api-gateway-patterns.md +496 -0
- package/architecture/01-standards/cloud-native-patterns.md +644 -0
- package/architecture/01-standards/distributed-systems-patterns.md +591 -0
- package/architecture/01-standards/event-driven-architecture.md +595 -0
- package/architecture/01-standards/microservices-patterns-complete.md +968 -0
- package/architecture/01-standards/microservices-patterns.md +495 -0
- package/architecture/01-standards/system-design-interview.md +664 -0
- package/architecture/02-playbooks/microservices-patterns-playbook.md +137 -0
- package/architecture/02-playbooks/migration-playbook.md +780 -0
- package/architecture/02-playbooks/system-design-playbook.md +779 -0
- package/architecture/03-checklists/architecture-decision-checklist.md +297 -0
- package/architecture/04-antipatterns/architecture-antipatterns.md +417 -0
- package/architecture/05-cases/case-netflix-microservices.md +413 -0
- package/architecture/06-glossary/architecture-glossary.md +164 -0
- package/architecture/adr-template-and-examples.md +38 -0
- package/architecture/api-gateway-deep-dive.md +1291 -0
- package/architecture/configuration-management.md +1162 -0
- package/architecture/distributed-transactions.md +1220 -0
- package/architecture/microservices-complete.md +735 -0
- package/architecture/resilience-and-disaster-patterns.md +37 -0
- package/architecture/service-governance.md +1198 -0
- package/architecture/system-architecture-deep-dive.md +37 -0
- package/backend/01-standards/analytics-and-growth.md +65 -0
- package/backend/01-standards/api-and-error-conventions.md +120 -0
- package/backend/01-standards/application-layering-and-packaging.md +160 -0
- package/backend/01-standards/auth-implementation.md +104 -0
- package/backend/01-standards/backend-framework-idioms.md +74 -0
- package/backend/01-standards/background-jobs-and-async.md +66 -0
- package/backend/01-standards/caching-strategies-complete.md +390 -0
- package/backend/01-standards/config-and-observability.md +77 -0
- package/backend/01-standards/data-modeling-and-persistence.md +94 -0
- package/backend/01-standards/django-complete.md +1765 -0
- package/backend/01-standards/email-and-notifications.md +64 -0
- package/backend/01-standards/fastapi-complete.md +925 -0
- package/backend/01-standards/file-upload-and-storage.md +66 -0
- package/backend/01-standards/graphql-api-complete.md +416 -0
- package/backend/01-standards/llm-application-standard.md +78 -0
- package/backend/01-standards/message-queue-patterns.md +379 -0
- package/backend/01-standards/microservices-and-distributed.md +78 -0
- package/backend/01-standards/nestjs-complete.md +2167 -0
- package/backend/01-standards/payment-integration.md +80 -0
- package/backend/01-standards/rate-limiting-complete.md +451 -0
- package/backend/01-standards/realtime-and-websocket.md +65 -0
- package/backend/01-standards/search-and-filtering.md +64 -0
- package/backend/01-standards/spring-boot-complete.md +445 -0
- package/backend/02-playbooks/api-design-playbook.md +718 -0
- package/backend/02-playbooks/email-send-playbook.md +130 -0
- package/backend/02-playbooks/file-upload-s3-playbook.md +153 -0
- package/backend/02-playbooks/typescript-enterprise-playbook.md +133 -0
- package/backend/02-playbooks/websocket-realtime-playbook.md +154 -0
- package/backend/03-checklists/api-launch-checklist.md +189 -0
- package/backend/04-antipatterns/backend-antipatterns.md +1051 -0
- package/blockchain/01-standards/blockchain-basics.md +557 -0
- package/blockchain/01-standards/smart-contract-development.md +1315 -0
- package/cicd/01-standards/deployment-and-delivery-standard.md +96 -0
- package/cicd/01-standards/github-actions-complete.md +473 -0
- package/cicd/01-standards/release-and-store-submission.md +75 -0
- package/cicd/02-playbooks/cicd-pipeline-playbook.md +144 -0
- package/cicd/02-playbooks/release-management-playbook.md +605 -0
- package/cicd/03-checklists/pipeline-security-checklist.md +168 -0
- package/cicd/04-antipatterns/cicd-antipatterns.md +589 -0
- package/cicd/05-cases/case-deployment-automation.md +221 -0
- package/cicd/05-cases/case-gitops-transformation.md +212 -0
- package/cicd/06-glossary/cicd-glossary.md +114 -0
- package/cicd/cicd-blueprint-deep-dive.md +38 -0
- package/cicd/release-readiness-gate.md +37 -0
- package/cloud-native/01-standards/container-security.md +741 -0
- package/cloud-native/01-standards/kubernetes-complete.md +812 -0
- package/cloud-native/02-playbooks/api-gateway-playbook.md +155 -0
- package/cloud-native/02-playbooks/gitops-with-argocd.md +760 -0
- package/cloud-native/02-playbooks/k8s-troubleshooting-playbook.md +1942 -0
- package/cloud-native/02-playbooks/message-queue-playbook.md +129 -0
- package/cloud-native/02-playbooks/multicloud-governance.md +726 -0
- package/cloud-native/02-playbooks/serverless-patterns.md +788 -0
- package/cloud-native/02-playbooks/service-mesh-playbook.md +612 -0
- package/cloud-native/02-playbooks/terraform-iac-playbook.md +143 -0
- package/cloud-native/03-checklists/container-security-checklist.md +431 -0
- package/cloud-native/03-checklists/k8s-production-readiness-checklist.md +460 -0
- package/cloud-native/04-antipatterns/container-antipatterns.md +660 -0
- package/cloud-native/04-antipatterns/k8s-antipatterns.md +743 -0
- package/cloud-native/05-cases/case-k8s-migration.md +478 -0
- package/cloud-native/05-cases/case-k8s-scaling.md +642 -0
- package/cloud-native/05-cases/case-k8s-security-incident.md +397 -0
- package/cloud-native/06-glossary/cloud-native-glossary.md +337 -0
- package/cross-platform/01-standards/cross-platform-frameworks.md +83 -0
- package/cross-platform/01-standards/platform-selection-and-architecture.md +77 -0
- package/data/01-standards/elasticsearch-complete.md +2098 -0
- package/data/01-standards/postgresql-complete.md +1613 -0
- package/data/01-standards/redis-complete.md +1527 -0
- package/data/02-playbooks/database-optimization-playbook.md +403 -0
- package/data/02-playbooks/elasticsearch-production-playbook.md +132 -0
- package/data/03-checklists/database-launch-checklist.md +187 -0
- package/data/04-antipatterns/database-antipatterns.md +873 -0
- package/data/05-cases/case-database-migration.md +310 -0
- package/data/06-glossary/database-glossary.md +440 -0
- package/data/data-governance-and-modeling-deep-dive.md +39 -0
- package/data-engineering/01-standards/airflow-complete.md +523 -0
- package/data-engineering/01-standards/kafka-complete.md +1521 -0
- package/data-engineering/02-playbooks/spark-etl-playbook.md +496 -0
- package/data-engineering/03-checklists/pipeline-launch-checklist.md +194 -0
- package/data-engineering/04-antipatterns/data-pipeline-antipatterns.md +684 -0
- package/data-engineering/05-cases/case-real-time-pipeline.md +355 -0
- package/data-engineering/06-glossary/data-engineering-glossary.md +429 -0
- package/database/01-standards/database-schema-standards.md +147 -0
- package/database/02-playbooks/postgresql-optimization-quick.md +52 -0
- package/database/02-playbooks/postgresql-performance-optimization.md +58 -0
- package/database/02-playbooks/postgresql-production-playbook.md +146 -0
- package/database/02-playbooks/redis-caching-playbook.md +117 -0
- package/database/03-checklists/database-review-checklist.md +50 -0
- package/database/04-antipatterns/database-antipatterns.md +112 -0
- package/design/01-standards/ui-design-system-complete.md +423 -0
- package/design/02-playbooks/design-handoff-playbook.md +254 -0
- package/design/02-playbooks/design-review-playbook.md +388 -0
- package/design/03-checklists/design-review-checklist.md +246 -0
- package/design/04-antipatterns/design-antipatterns.md +378 -0
- package/design/05-cases/case-design-system-adoption.md +328 -0
- package/design/06-glossary/design-glossary.md +329 -0
- package/design/ui-full-lifecycle-cross-platform-playbook.md +571 -0
- package/design/ux-system-deep-dive.md +38 -0
- package/design-systems/00-craft-rules.md +71 -0
- package/design-systems/aesthetic-families.md +43 -0
- package/design-systems/anti-ai-slop.md +162 -0
- package/design-systems/bold-geometric.md +120 -0
- package/design-systems/brutalist-bold.md +103 -0
- package/design-systems/editorial-clean.md +109 -0
- package/design-systems/glass-aurora.md +108 -0
- package/design-systems/modern-minimal.md +145 -0
- package/design-systems/premium-luxury.md +106 -0
- package/design-systems/product-type-design-map.md +48 -0
- package/design-systems/soft-warm.md +123 -0
- package/design-systems/tech-utility.md +113 -0
- package/desktop/01-standards/desktop-app-standard.md +72 -0
- package/desktop/01-standards/desktop-design.md +71 -0
- package/development/00-governance/document-template.md +41 -0
- package/development/01-standards/api-versioning-strategies.md +432 -0
- package/development/01-standards/authentication-patterns-complete.md +479 -0
- package/development/01-standards/css-architecture-complete.md +550 -0
- package/development/01-standards/database-migration-strategies.md +484 -0
- package/development/01-standards/elasticsearch-complete.md +347 -0
- package/development/01-standards/git-complete.md +371 -0
- package/development/01-standards/golang-complete.md +1565 -0
- package/development/01-standards/graphql-complete.md +298 -0
- package/development/01-standards/javascript-bundlers-complete.md +469 -0
- package/development/01-standards/javascript-typescript-complete.md +528 -0
- package/development/01-standards/jest-complete.md +275 -0
- package/development/01-standards/linux-complete.md +234 -0
- package/development/01-standards/logging-observability-complete.md +526 -0
- package/development/01-standards/microservices-communication.md +502 -0
- package/development/01-standards/mongodb-complete.md +406 -0
- package/development/01-standards/oauth2-complete.md +285 -0
- package/development/01-standards/performance-optimization-complete.md +289 -0
- package/development/01-standards/playwright-complete.md +247 -0
- package/development/01-standards/postgresql-complete.md +456 -0
- package/development/01-standards/pytest-complete.md +340 -0
- package/development/01-standards/python-async-programming.md +902 -0
- package/development/01-standards/python-complete.md +956 -0
- package/development/01-standards/python-decorators-complete.md +799 -0
- package/development/01-standards/python-design-patterns.md +2854 -0
- package/development/01-standards/python-packaging-distribution.md +420 -0
- package/development/01-standards/python-testing-strategies.md +607 -0
- package/development/01-standards/python-web-frameworks-comparison.md +471 -0
- package/development/01-standards/redis-complete.md +317 -0
- package/development/01-standards/rest-api-complete.md +316 -0
- package/development/01-standards/rust-complete.md +578 -0
- package/development/01-standards/typescript-advanced-types.md +1513 -0
- package/development/01-standards/web-security-complete.md +292 -0
- package/development/02-playbooks/api-design-playbook.md +810 -0
- package/development/02-playbooks/database-migration-playbook.md +580 -0
- package/development/02-playbooks/debugging-playbook.md +692 -0
- package/development/02-playbooks/feature-delivery-playbook.md +430 -0
- package/development/02-playbooks/incident-hotfix-playbook.md +387 -0
- package/development/02-playbooks/performance-optimization-playbook.md +531 -0
- package/development/02-playbooks/performance-tuning-playbook.md +652 -0
- package/development/02-playbooks/refactor-playbook.md +403 -0
- package/development/02-playbooks/release-playbook.md +469 -0
- package/development/03-checklists/architecture-review-checklist.md +168 -0
- package/development/03-checklists/data-migration-checklist.md +157 -0
- package/development/03-checklists/oncall-handover-checklist.md +173 -0
- package/development/03-checklists/pr-checklist.md +158 -0
- package/development/03-checklists/production-readiness-checklist.md +190 -0
- package/development/03-checklists/release-readiness-checklist.md +154 -0
- package/development/03-checklists/security-review-checklist.md +182 -0
- package/development/04-antipatterns/api-antipatterns.md +657 -0
- package/development/04-antipatterns/architecture-antipatterns.md +686 -0
- package/development/04-antipatterns/backend-antipatterns.md +648 -0
- package/development/04-antipatterns/cicd-antipatterns.md +540 -0
- package/development/04-antipatterns/code-smell-antipatterns.md +571 -0
- package/development/04-antipatterns/data-antipatterns.md +658 -0
- package/development/04-antipatterns/database-antipatterns.md +578 -0
- package/development/04-antipatterns/frontend-antipatterns.md +635 -0
- package/development/04-antipatterns/reliability-antipatterns.md +700 -0
- package/development/04-antipatterns/security-antipatterns.md +747 -0
- package/development/05-cases/case-api-version-migration.md +428 -0
- package/development/05-cases/case-authorization-hardening.md +383 -0
- package/development/05-cases/case-bluegreen-rollback.md +466 -0
- package/development/05-cases/case-cache-snowball-protection.md +485 -0
- package/development/05-cases/case-ci-cd-pipeline.md +544 -0
- package/development/05-cases/case-database-scaling.md +500 -0
- package/development/05-cases/case-db-hotspot-optimization.md +487 -0
- package/development/05-cases/case-incident-mttr-reduction.md +563 -0
- package/development/05-cases/case-microservice-migration.md +375 -0
- package/development/05-cases/case-performance-optimization.md +406 -0
- package/development/05-cases/case-security-incident-response.md +345 -0
- package/development/06-glossary/full-stack-glossary.md +166 -0
- package/development/09-maturity/quarterly-audit-template.md +35 -0
- package/development/11-ui-excellence/ui-aesthetic-system.md +41 -0
- package/development/11-ui-excellence/ui-engineering-excellence.md +435 -0
- package/development/12-scenarios/development-scenarios-guide.md +565 -0
- package/development/13-implementation-assets/implementation-toolkit.md +282 -0
- package/development/13-implementation-assets/knowledge-gates-execution.md +43 -0
- package/development/14-full-lifecycle/software-lifecycle-gates.md +511 -0
- package/development/15-lifecycle-templates/project-templates-collection.md +791 -0
- package/development/api-contract-and-versioning-guide.md +36 -0
- package/development/api-governance-complete.md +43 -0
- package/development/backend-engineering-complete.md +43 -0
- package/development/code-review-quality-complete.md +43 -0
- package/development/concurrency-reliability-complete.md +43 -0
- package/development/database-engineering-complete.md +43 -0
- package/development/engineering-effectiveness-complete.md +43 -0
- package/development/engineering-standards-deep-dive.md +38 -0
- package/development/frontend-engineering-complete.md +43 -0
- package/development/performance-capacity-complete.md +43 -0
- package/development/refactor-migration-complete.md +42 -0
- package/development/refactoring-and-techdebt-playbook.md +37 -0
- package/development/security-in-development-complete.md +43 -0
- package/devops/01-standards/cicd-pipeline-complete.md +262 -0
- package/devops/01-standards/docker-complete.md +1490 -0
- package/devops/01-standards/github-actions-complete.md +337 -0
- package/devops/01-standards/kubernetes-complete.md +638 -0
- package/devops/01-standards/terraform-complete.md +2117 -0
- package/devops/02-playbooks/docker-compose-playbook.md +233 -0
- package/devops/02-playbooks/docker-k8s-production-playbook.md +186 -0
- package/devops/02-playbooks/docker-production-playbook.md +952 -0
- package/edge-iot/01-standards/edge-iot-complete.md +473 -0
- package/experts/architect/api-design.md +178 -0
- package/experts/architect/methodology.md +124 -0
- package/experts/architect/security.md +75 -0
- package/experts/backend-lead/methodology.md +216 -0
- package/experts/devops/methodology.md +160 -0
- package/experts/frontend-lead/methodology.md +178 -0
- package/experts/product-manager/industry/ecommerce.md +43 -0
- package/experts/product-manager/industry/saas.md +40 -0
- package/experts/product-manager/methodology.md +97 -0
- package/experts/qa-lead/methodology.md +123 -0
- package/experts/qa-lead/test-strategy.md +128 -0
- package/experts/uiux-designer/methodology.md +125 -0
- package/frontend/01-standards/accessibility-complete.md +532 -0
- package/frontend/01-standards/accessibility-standard.md +74 -0
- package/frontend/01-standards/admin-dashboard-and-crud.md +72 -0
- package/frontend/01-standards/design-tokens-complete.md +444 -0
- package/frontend/01-standards/forms-and-validation.md +77 -0
- package/frontend/01-standards/frontend-architecture-and-layering.md +119 -0
- package/frontend/01-standards/i18n-and-localization.md +65 -0
- package/frontend/01-standards/nextjs-complete.md +451 -0
- package/frontend/01-standards/react-complete.md +713 -0
- package/frontend/01-standards/react-hooks-complete-guide.md +1100 -0
- package/frontend/01-standards/react-hooks-complete.md +1171 -0
- package/frontend/01-standards/seo-and-web-vitals.md +77 -0
- package/frontend/01-standards/state-management-complete.md +444 -0
- package/frontend/01-standards/vue-complete.md +499 -0
- package/frontend/01-standards/vue3-complete.md +2002 -0
- package/frontend/01-standards/web-framework-best-practices.md +64 -0
- package/frontend/01-standards/web-performance-complete.md +495 -0
- package/frontend/02-playbooks/accessibility-a11y-playbook.md +161 -0
- package/frontend/02-playbooks/frontend-performance-playbook.md +707 -0
- package/frontend/02-playbooks/i18n-internationalization-playbook.md +120 -0
- package/frontend/02-playbooks/performance-optimization-playbook.md +163 -0
- package/frontend/02-playbooks/react-nextjs-production-playbook.md +167 -0
- package/frontend/02-playbooks/react-state-management-playbook.md +173 -0
- package/frontend/03-checklists/component-quality-checklist.md +166 -0
- package/frontend/03-checklists/frontend-launch-checklist.md +299 -0
- package/frontend/04-antipatterns/frontend-antipatterns.md +886 -0
- package/frontend/05-cases/case-performance-optimization.md +274 -0
- package/harmony/01-standards/harmonyos-arkts-standard.md +75 -0
- package/harmony/01-standards/harmonyos-design.md +65 -0
- package/high-quality-engineering-playbook.md +54 -0
- package/incident/01-standards/incident-response-complete.md +303 -0
- package/incident/02-playbooks/chaos-engineering-playbook.md +883 -0
- package/incident/02-playbooks/postmortem-playbook.md +398 -0
- package/incident/03-checklists/incident-readiness-checklist.md +181 -0
- package/incident/04-antipatterns/incident-antipatterns.md +490 -0
- package/incident/05-cases/case-cascade-failure.md +176 -0
- package/incident/06-glossary/incident-glossary.md +114 -0
- package/incident/postmortem-and-response-deep-dive.md +39 -0
- package/industries/ecommerce/ecommerce-complete.md +631 -0
- package/industries/education/education-complete.md +555 -0
- package/industries/fintech/fintech-complete.md +501 -0
- package/industries/gaming/gaming-complete.md +587 -0
- package/industries/healthcare/healthcare-complete.md +452 -0
- package/low-code/01-standards/low-code-complete.md +944 -0
- package/miniprogram/01-standards/ai-common-mistakes.md +61 -0
- package/miniprogram/01-standards/miniprogram-custom-navbar-capsule.md +77 -0
- package/miniprogram/01-standards/miniprogram-design.md +61 -0
- package/miniprogram/01-standards/miniprogram-standard.md +81 -0
- package/mobile/01-standards/android-material-design.md +70 -0
- package/mobile/01-standards/flutter-complete.md +384 -0
- package/mobile/01-standards/ios-design-hig.md +78 -0
- package/mobile/01-standards/mobile-app-standard.md +85 -0
- package/mobile/01-standards/react-native-complete.md +352 -0
- package/mobile/02-playbooks/mobile-cross-platform-playbook.md +175 -0
- package/mobile/02-playbooks/mobile-performance.md +473 -0
- package/mobile/03-checklists/mobile-release-checklist.md +234 -0
- package/mobile/04-antipatterns/mobile-antipatterns.md +798 -0
- package/mobile/05-cases/case-app-performance.md +500 -0
- package/mobile/05-cases/case-app-startup-optimization.md +218 -0
- package/mobile/06-glossary/mobile-glossary.md +484 -0
- package/observability/01-standards/observability-standards.md +103 -0
- package/observability/02-playbooks/prometheus-grafana-playbook.md +135 -0
- package/observability/02-playbooks/structured-logging-playbook.md +73 -0
- package/observability/03-checklists/observability-checklist.md +54 -0
- package/observability/04-antipatterns/observability-antipatterns.md +106 -0
- package/operations/01-standards/prometheus-monitoring-complete.md +1578 -0
- package/operations/02-playbooks/capacity-planning-playbook.md +620 -0
- package/operations/03-checklists/production-launch-checklist.md +365 -0
- package/operations/04-antipatterns/operations-antipatterns.md +664 -0
- package/operations/05-cases/case-sre-practices.md +581 -0
- package/operations/06-glossary/operations-glossary.md +120 -0
- package/operations/aiops-anomaly-detection.md +758 -0
- package/operations/capacity-planning.md +1061 -0
- package/operations/chaos-engineering.md +659 -0
- package/operations/incident-command-system.md +38 -0
- package/operations/observability-complete.md +442 -0
- package/operations/slo-sli-playbook.md +517 -0
- package/operations/sre-operations-deep-dive.md +39 -0
- package/package.json +8 -0
- package/performance/01-standards/performance-and-scalability.md +80 -0
- package/performance/01-standards/performance-standards.md +156 -0
- package/performance/02-playbooks/query-optimization-playbook.md +103 -0
- package/performance/03-checklists/performance-checklist.md +56 -0
- package/performance/04-antipatterns/performance-antipatterns.md +146 -0
- package/product/01-standards/product-management-complete.md +285 -0
- package/product/02-playbooks/feature-launch-playbook.md +207 -0
- package/product/02-playbooks/user-research-playbook.md +532 -0
- package/product/03-checklists/feature-launch-checklist.md +275 -0
- package/product/04-antipatterns/product-antipatterns.md +355 -0
- package/product/05-cases/case-mvp-to-scale.md +384 -0
- package/product/06-glossary/product-glossary.md +462 -0
- package/product/feature-prioritization-framework.md +40 -0
- package/product/kpi-and-metric-tree.md +37 -0
- package/product/product-discovery-and-prd-deep-dive.md +41 -0
- package/quantum/01-standards/quantum-complete.md +1186 -0
- package/security/01-standards/api-security-complete.md +511 -0
- package/security/01-standards/container-runtime-security.md +574 -0
- package/security/01-standards/data-protection-gdpr.md +543 -0
- package/security/01-standards/owasp-top10-complete.md +1890 -0
- package/security/01-standards/secure-coding-baseline.md +90 -0
- package/security/01-standards/supply-chain-security.md +441 -0
- package/security/01-standards/web-security-checklist.md +108 -0
- package/security/01-standards/zero-trust-architecture.md +521 -0
- package/security/02-playbooks/auth-sso-playbook.md +166 -0
- package/security/02-playbooks/incident-response-security-playbook.md +588 -0
- package/security/02-playbooks/owasp-api-security-playbook.md +129 -0
- package/security/02-playbooks/payment-integration-playbook.md +119 -0
- package/security/02-playbooks/penetration-testing-playbook.md +517 -0
- package/security/03-checklists/security-audit-checklist.md +356 -0
- package/security/04-antipatterns/security-coding-antipatterns.md +580 -0
- package/security/05-cases/case-log4shell-incident.md +537 -0
- package/security/05-cases/case-major-breaches.md +468 -0
- package/security/06-glossary/security-glossary.md +212 -0
- package/security/compliance-automation.md +993 -0
- package/security/container-security.md +680 -0
- package/security/devsecops-complete.md +426 -0
- package/security/sast-dast-sca.md +775 -0
- package/security/secrets-management.md +594 -0
- package/security/security-architecture-deep-dive.md +37 -0
- package/security/threat-modeling-stride-playbook.md +40 -0
- package/seed-templates/auth-system.md +59 -0
- package/seed-templates/blog-content.md +94 -0
- package/seed-templates/dashboard.md +89 -0
- package/seed-templates/docs-site.md +73 -0
- package/seed-templates/e-commerce.md +50 -0
- package/seed-templates/saas-landing.md +92 -0
- package/seed-templates/settings-page.md +51 -0
- package/testing/01-standards/test-strategy-and-layering.md +83 -0
- package/testing/01-standards/testing-strategy-complete.md +422 -0
- package/testing/01-standards/unit-testing-best-practices.md +118 -0
- package/testing/02-playbooks/e2e-testing-playbook.md +988 -0
- package/testing/02-playbooks/testing-strategy-playbook.md +126 -0
- package/testing/03-checklists/test-strategy-checklist.md +208 -0
- package/testing/04-antipatterns/testing-antipatterns.md +718 -0
- package/testing/05-cases/case-testing-transformation.md +300 -0
- package/testing/06-glossary/testing-glossary.md +110 -0
- package/testing/risk-based-test-matrix.md +36 -0
- package/testing/testing-strategy-deep-dive.md +37 -0
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: methodology
|
|
3
|
+
title: UI/UX Designer — Methodology
|
|
4
|
+
domain: experts
|
|
5
|
+
category: uiux-designer
|
|
6
|
+
difficulty: intermediate
|
|
7
|
+
tags: [component, construction, design, experts, interaction, methodology, principles, responsive]
|
|
8
|
+
quality_score: 70
|
|
9
|
+
last_updated: 2026-06-15
|
|
10
|
+
---
|
|
11
|
+
# UI/UX Designer — Methodology
|
|
12
|
+
|
|
13
|
+
## Design System Construction
|
|
14
|
+
|
|
15
|
+
### Token Architecture (3 layers)
|
|
16
|
+
```
|
|
17
|
+
Primitive tokens: blue-600 = #2563EB (raw values)
|
|
18
|
+
Semantic tokens: color-primary = {blue-600} (intent)
|
|
19
|
+
Component tokens: button-bg = {color-primary} (usage)
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Rule: components reference semantic tokens, never primitives.
|
|
23
|
+
Changing blue-600 updates every component that uses color-primary.
|
|
24
|
+
|
|
25
|
+
### Color System
|
|
26
|
+
- **6 semantic roles minimum**: bg, surface, text, primary, border, error
|
|
27
|
+
- **Each role needs**: default + hover + active states
|
|
28
|
+
- **Neutral scale**: 10 steps (50-950) for backgrounds, borders, text
|
|
29
|
+
- **Semantic colors**: success (green), warning (amber), error (red), info (blue)
|
|
30
|
+
- **Dark mode**: override semantic tokens, not primitives
|
|
31
|
+
|
|
32
|
+
### Typography System
|
|
33
|
+
- **2 font families max**: one display/heading, one body
|
|
34
|
+
- **7-step scale**: xs(12) sm(14) base(16) lg(18) xl(20) 2xl(24) 3xl(30)
|
|
35
|
+
- **3 weights**: regular(400), medium(500), bold(700)
|
|
36
|
+
- **Line-height**: tight(1.2) for headings, normal(1.5) for body, relaxed(1.7) for long-form
|
|
37
|
+
|
|
38
|
+
### Spacing System
|
|
39
|
+
- **Base unit**: 4px
|
|
40
|
+
- **Scale**: 1(4) 2(8) 3(12) 4(16) 5(20) 6(24) 8(32) 10(40) 12(48) 16(64)
|
|
41
|
+
- **Rule**: never use arbitrary values. Every margin/padding is a scale step.
|
|
42
|
+
|
|
43
|
+
## Interaction Design Principles
|
|
44
|
+
|
|
45
|
+
### Fitts's Law
|
|
46
|
+
- Larger targets are easier to click
|
|
47
|
+
- Closer targets are easier to reach
|
|
48
|
+
- **Practical**: primary CTA should be the largest button, positioned near the user's attention
|
|
49
|
+
|
|
50
|
+
### Hick's Law
|
|
51
|
+
- More choices = more time to decide
|
|
52
|
+
- **Practical**: limit navigation to 5-7 items. Use progressive disclosure (show less, reveal more on demand)
|
|
53
|
+
|
|
54
|
+
### Jakob's Law
|
|
55
|
+
- Users spend most of their time on OTHER sites
|
|
56
|
+
- **Practical**: follow established patterns (top nav, left sidebar, bottom tabs on mobile)
|
|
57
|
+
|
|
58
|
+
## Component Design Standards
|
|
59
|
+
|
|
60
|
+
### Every component needs:
|
|
61
|
+
1. **Default state** — what it looks like normally
|
|
62
|
+
2. **Hover state** — cursor enters (desktop only)
|
|
63
|
+
3. **Focus state** — keyboard navigation (visible focus ring, 2px solid primary, 2px offset)
|
|
64
|
+
4. **Active state** — being clicked/tapped
|
|
65
|
+
5. **Disabled state** — not interactive (opacity 0.5, cursor not-allowed)
|
|
66
|
+
6. **Loading state** — waiting for async (spinner or skeleton)
|
|
67
|
+
7. **Error state** — validation failed (red border, error message below)
|
|
68
|
+
|
|
69
|
+
### Form Design
|
|
70
|
+
- Labels ABOVE inputs (not inside as placeholder)
|
|
71
|
+
- Error messages BELOW the field (not as tooltip)
|
|
72
|
+
- Inline validation on blur, not on every keystroke
|
|
73
|
+
- Show password toggle on password fields
|
|
74
|
+
- Autofocus first field on page load
|
|
75
|
+
- Tab order matches visual order
|
|
76
|
+
|
|
77
|
+
### Empty States
|
|
78
|
+
Every list/table/grid needs 3 empty states:
|
|
79
|
+
1. **First-time**: "No items yet. Create your first X." + CTA button
|
|
80
|
+
2. **Filter empty**: "No results match your filters." + clear filters link
|
|
81
|
+
3. **Error**: "Failed to load. Please try again." + retry button
|
|
82
|
+
|
|
83
|
+
### Loading States
|
|
84
|
+
- **Skeleton screens** for initial page load (not spinner)
|
|
85
|
+
- **Inline spinner** for button actions ("Saving..." with spinner)
|
|
86
|
+
- **Progress bar** for known-duration operations (file upload)
|
|
87
|
+
- **Optimistic UI** for instant-feeling mutations (update UI, then sync)
|
|
88
|
+
|
|
89
|
+
## Responsive Design
|
|
90
|
+
|
|
91
|
+
### Breakpoints
|
|
92
|
+
| Name | Min width | Typical device |
|
|
93
|
+
|---|---|---|
|
|
94
|
+
| mobile | 0 | phones (portrait) |
|
|
95
|
+
| tablet | 640px | phones (landscape), small tablets |
|
|
96
|
+
| desktop | 1024px | laptops, desktops |
|
|
97
|
+
| wide | 1280px | large monitors |
|
|
98
|
+
|
|
99
|
+
### Mobile-first Rules
|
|
100
|
+
- Start with mobile layout, add complexity for larger screens
|
|
101
|
+
- Touch targets: minimum 44×44px
|
|
102
|
+
- No hover-dependent functionality on mobile
|
|
103
|
+
- Single-column layout on mobile, multi-column on desktop
|
|
104
|
+
- Bottom navigation on mobile, top/side navigation on desktop
|
|
105
|
+
|
|
106
|
+
## Accessibility (WCAG 2.1 AA)
|
|
107
|
+
|
|
108
|
+
### Color Contrast
|
|
109
|
+
- Body text: 4.5:1 ratio minimum
|
|
110
|
+
- Large text (≥24px or bold ≥18.5px): 3:1 ratio minimum
|
|
111
|
+
- UI controls (borders, icons): 3:1 ratio minimum
|
|
112
|
+
|
|
113
|
+
### Keyboard
|
|
114
|
+
- Every interactive element reachable via Tab
|
|
115
|
+
- Focus order matches visual order
|
|
116
|
+
- Escape closes modals/drawers
|
|
117
|
+
- Enter/Space activates buttons
|
|
118
|
+
- Arrow keys navigate within components (tabs, menus, radio groups)
|
|
119
|
+
|
|
120
|
+
### Screen Readers
|
|
121
|
+
- All images have alt text (decorative: alt="")
|
|
122
|
+
- Headings form a logical hierarchy (h1→h2→h3, no skipping)
|
|
123
|
+
- Form inputs have associated labels
|
|
124
|
+
- Dynamic content updates use aria-live="polite"
|
|
125
|
+
- Modals trap focus and have aria-modal="true"
|
|
@@ -0,0 +1,532 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: accessibility-complete
|
|
3
|
+
title: Web 无障碍完整指南
|
|
4
|
+
domain: frontend
|
|
5
|
+
category: 01-standards
|
|
6
|
+
difficulty: intermediate
|
|
7
|
+
tags: [accessibility, aria, complete, frontend, html, 屏幕阅读器优化, 属性, 概述]
|
|
8
|
+
quality_score: 70
|
|
9
|
+
last_updated: 2026-06-15
|
|
10
|
+
---
|
|
11
|
+
# Web 无障碍完整指南
|
|
12
|
+
|
|
13
|
+
## 概述
|
|
14
|
+
|
|
15
|
+
Web 无障碍 (Accessibility, a11y) 确保所有用户(包括视觉、听觉、运动和认知障碍用户)都能有效使用 Web 应用。WCAG 2.1 是国际公认标准,分为 A(基础)、AA(推荐)、AAA(增强)三个等级。商业项目至少需达到 WCAG 2.1 AA 标准。
|
|
16
|
+
|
|
17
|
+
### 四大原则 (POUR)
|
|
18
|
+
|
|
19
|
+
1. **可感知 (Perceivable)**: 信息必须以用户可感知的方式呈现
|
|
20
|
+
2. **可操作 (Operable)**: UI 组件和导航必须可操作
|
|
21
|
+
3. **可理解 (Understandable)**: 信息和操作必须可理解
|
|
22
|
+
4. **健壮性 (Robust)**: 内容必须足够健壮,能被各种技术(包括辅助技术)解析
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## 语义化 HTML
|
|
27
|
+
|
|
28
|
+
### 正确使用 HTML 元素
|
|
29
|
+
|
|
30
|
+
```html
|
|
31
|
+
<!-- 正确:语义化结构 -->
|
|
32
|
+
<header>
|
|
33
|
+
<nav aria-label="主导航">
|
|
34
|
+
<ul>
|
|
35
|
+
<li><a href="/">首页</a></li>
|
|
36
|
+
<li><a href="/products" aria-current="page">产品</a></li>
|
|
37
|
+
</ul>
|
|
38
|
+
</nav>
|
|
39
|
+
</header>
|
|
40
|
+
|
|
41
|
+
<main>
|
|
42
|
+
<h1>产品列表</h1>
|
|
43
|
+
<section aria-labelledby="featured-heading">
|
|
44
|
+
<h2 id="featured-heading">精选产品</h2>
|
|
45
|
+
<article>
|
|
46
|
+
<h3>产品名称</h3>
|
|
47
|
+
<p>产品描述...</p>
|
|
48
|
+
</article>
|
|
49
|
+
</section>
|
|
50
|
+
</main>
|
|
51
|
+
|
|
52
|
+
<aside aria-label="侧边栏">
|
|
53
|
+
<h2>相关推荐</h2>
|
|
54
|
+
</aside>
|
|
55
|
+
|
|
56
|
+
<footer>
|
|
57
|
+
<p>© 2026 Company</p>
|
|
58
|
+
</footer>
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
```html
|
|
62
|
+
<!-- 错误:div 堆砌,无语义 -->
|
|
63
|
+
<div class="header">
|
|
64
|
+
<div class="nav">
|
|
65
|
+
<div class="link" onclick="goto('/')">首页</div>
|
|
66
|
+
</div>
|
|
67
|
+
</div>
|
|
68
|
+
<div class="content">
|
|
69
|
+
<div class="title">产品列表</div>
|
|
70
|
+
</div>
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### 标题层级
|
|
74
|
+
|
|
75
|
+
```html
|
|
76
|
+
<!-- 正确:标题层级有序 -->
|
|
77
|
+
<h1>页面主标题</h1>
|
|
78
|
+
<h2>第一节</h2>
|
|
79
|
+
<h3>子节</h3>
|
|
80
|
+
<h2>第二节</h2>
|
|
81
|
+
|
|
82
|
+
<!-- 错误:跳过层级 -->
|
|
83
|
+
<h1>标题</h1>
|
|
84
|
+
<h3>直接到 h3,跳过了 h2</h3>
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## ARIA 属性
|
|
90
|
+
|
|
91
|
+
### 常用 ARIA 角色和属性
|
|
92
|
+
|
|
93
|
+
```html
|
|
94
|
+
<!-- 自定义按钮 -->
|
|
95
|
+
<div role="button" tabindex="0"
|
|
96
|
+
aria-pressed="false"
|
|
97
|
+
onkeydown="handleKeyDown(event)"
|
|
98
|
+
onclick="toggle()">
|
|
99
|
+
切换主题
|
|
100
|
+
</div>
|
|
101
|
+
|
|
102
|
+
<!-- 更好的做法:直接使用 button -->
|
|
103
|
+
<button aria-pressed="false" onclick="toggle()">切换主题</button>
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### ARIA Live Regions
|
|
107
|
+
|
|
108
|
+
```html
|
|
109
|
+
<!-- 动态内容通知屏幕阅读器 -->
|
|
110
|
+
<div aria-live="polite" aria-atomic="true">
|
|
111
|
+
<!-- 内容变化时自动播报 -->
|
|
112
|
+
</div>
|
|
113
|
+
|
|
114
|
+
<!-- 紧急通知 -->
|
|
115
|
+
<div role="alert" aria-live="assertive">
|
|
116
|
+
表单提交失败:邮箱格式不正确
|
|
117
|
+
</div>
|
|
118
|
+
|
|
119
|
+
<!-- 状态消息 -->
|
|
120
|
+
<div role="status" aria-live="polite">
|
|
121
|
+
已加载 50 条结果
|
|
122
|
+
</div>
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### 表单无障碍
|
|
126
|
+
|
|
127
|
+
```html
|
|
128
|
+
<form>
|
|
129
|
+
<div>
|
|
130
|
+
<label for="email">邮箱地址 <span aria-hidden="true">*</span></label>
|
|
131
|
+
<input
|
|
132
|
+
id="email"
|
|
133
|
+
type="email"
|
|
134
|
+
required
|
|
135
|
+
aria-required="true"
|
|
136
|
+
aria-describedby="email-hint email-error"
|
|
137
|
+
aria-invalid="true"
|
|
138
|
+
/>
|
|
139
|
+
<p id="email-hint" class="hint">请输入您的工作邮箱</p>
|
|
140
|
+
<p id="email-error" class="error" role="alert">
|
|
141
|
+
请输入有效的邮箱地址
|
|
142
|
+
</p>
|
|
143
|
+
</div>
|
|
144
|
+
|
|
145
|
+
<fieldset>
|
|
146
|
+
<legend>通知偏好</legend>
|
|
147
|
+
<label>
|
|
148
|
+
<input type="radio" name="notify" value="email" /> 邮件通知
|
|
149
|
+
</label>
|
|
150
|
+
<label>
|
|
151
|
+
<input type="radio" name="notify" value="sms" /> 短信通知
|
|
152
|
+
</label>
|
|
153
|
+
</fieldset>
|
|
154
|
+
|
|
155
|
+
<button type="submit">提交</button>
|
|
156
|
+
</form>
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### 对话框
|
|
160
|
+
|
|
161
|
+
```tsx
|
|
162
|
+
// React 无障碍对话框
|
|
163
|
+
function Dialog({ isOpen, onClose, title, children }) {
|
|
164
|
+
const titleId = useId();
|
|
165
|
+
|
|
166
|
+
return isOpen ? (
|
|
167
|
+
<div
|
|
168
|
+
role="dialog"
|
|
169
|
+
aria-modal="true"
|
|
170
|
+
aria-labelledby={titleId}
|
|
171
|
+
onKeyDown={(e) => e.key === "Escape" && onClose()}
|
|
172
|
+
>
|
|
173
|
+
<h2 id={titleId}>{title}</h2>
|
|
174
|
+
<div>{children}</div>
|
|
175
|
+
<button onClick={onClose}>关闭</button>
|
|
176
|
+
</div>
|
|
177
|
+
) : null;
|
|
178
|
+
}
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## 键盘导航
|
|
184
|
+
|
|
185
|
+
### Tab 顺序管理
|
|
186
|
+
|
|
187
|
+
```tsx
|
|
188
|
+
// 焦点陷阱 - 模态框内循环 Tab
|
|
189
|
+
function useFocusTrap(ref: RefObject<HTMLElement>) {
|
|
190
|
+
useEffect(() => {
|
|
191
|
+
const element = ref.current;
|
|
192
|
+
if (!element) return;
|
|
193
|
+
|
|
194
|
+
const focusableElements = element.querySelectorAll(
|
|
195
|
+
'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'
|
|
196
|
+
);
|
|
197
|
+
const firstElement = focusableElements[0] as HTMLElement;
|
|
198
|
+
const lastElement = focusableElements[focusableElements.length - 1] as HTMLElement;
|
|
199
|
+
|
|
200
|
+
function handleKeyDown(e: KeyboardEvent) {
|
|
201
|
+
if (e.key !== "Tab") return;
|
|
202
|
+
if (e.shiftKey) {
|
|
203
|
+
if (document.activeElement === firstElement) {
|
|
204
|
+
e.preventDefault();
|
|
205
|
+
lastElement.focus();
|
|
206
|
+
}
|
|
207
|
+
} else {
|
|
208
|
+
if (document.activeElement === lastElement) {
|
|
209
|
+
e.preventDefault();
|
|
210
|
+
firstElement.focus();
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
element.addEventListener("keydown", handleKeyDown);
|
|
216
|
+
firstElement?.focus();
|
|
217
|
+
return () => element.removeEventListener("keydown", handleKeyDown);
|
|
218
|
+
}, [ref]);
|
|
219
|
+
}
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
### 跳过导航链接
|
|
223
|
+
|
|
224
|
+
```html
|
|
225
|
+
<body>
|
|
226
|
+
<a href="#main-content" class="skip-link">跳到主要内容</a>
|
|
227
|
+
<header><!-- 导航 --></header>
|
|
228
|
+
<main id="main-content" tabindex="-1">
|
|
229
|
+
<!-- 主要内容 -->
|
|
230
|
+
</main>
|
|
231
|
+
</body>
|
|
232
|
+
|
|
233
|
+
<style>
|
|
234
|
+
.skip-link {
|
|
235
|
+
position: absolute;
|
|
236
|
+
top: -40px;
|
|
237
|
+
left: 0;
|
|
238
|
+
padding: 8px 16px;
|
|
239
|
+
background: #000;
|
|
240
|
+
color: #fff;
|
|
241
|
+
z-index: 100;
|
|
242
|
+
transition: top 0.2s;
|
|
243
|
+
}
|
|
244
|
+
.skip-link:focus {
|
|
245
|
+
top: 0;
|
|
246
|
+
}
|
|
247
|
+
</style>
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
### 自定义组件键盘交互
|
|
251
|
+
|
|
252
|
+
```tsx
|
|
253
|
+
// 下拉菜单键盘导航
|
|
254
|
+
function DropdownMenu({ items }: { items: MenuItem[] }) {
|
|
255
|
+
const [isOpen, setIsOpen] = useState(false);
|
|
256
|
+
const [activeIndex, setActiveIndex] = useState(-1);
|
|
257
|
+
|
|
258
|
+
function handleKeyDown(e: KeyboardEvent) {
|
|
259
|
+
switch (e.key) {
|
|
260
|
+
case "ArrowDown":
|
|
261
|
+
e.preventDefault();
|
|
262
|
+
setActiveIndex(i => Math.min(i + 1, items.length - 1));
|
|
263
|
+
break;
|
|
264
|
+
case "ArrowUp":
|
|
265
|
+
e.preventDefault();
|
|
266
|
+
setActiveIndex(i => Math.max(i - 1, 0));
|
|
267
|
+
break;
|
|
268
|
+
case "Enter":
|
|
269
|
+
case " ":
|
|
270
|
+
e.preventDefault();
|
|
271
|
+
if (activeIndex >= 0) items[activeIndex].action();
|
|
272
|
+
setIsOpen(false);
|
|
273
|
+
break;
|
|
274
|
+
case "Escape":
|
|
275
|
+
setIsOpen(false);
|
|
276
|
+
break;
|
|
277
|
+
case "Home":
|
|
278
|
+
e.preventDefault();
|
|
279
|
+
setActiveIndex(0);
|
|
280
|
+
break;
|
|
281
|
+
case "End":
|
|
282
|
+
e.preventDefault();
|
|
283
|
+
setActiveIndex(items.length - 1);
|
|
284
|
+
break;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
return (
|
|
289
|
+
<div onKeyDown={handleKeyDown}>
|
|
290
|
+
<button
|
|
291
|
+
aria-haspopup="true"
|
|
292
|
+
aria-expanded={isOpen}
|
|
293
|
+
onClick={() => setIsOpen(!isOpen)}
|
|
294
|
+
>
|
|
295
|
+
菜单
|
|
296
|
+
</button>
|
|
297
|
+
{isOpen && (
|
|
298
|
+
<ul role="menu">
|
|
299
|
+
{items.map((item, index) => (
|
|
300
|
+
<li
|
|
301
|
+
key={item.id}
|
|
302
|
+
role="menuitem"
|
|
303
|
+
tabIndex={index === activeIndex ? 0 : -1}
|
|
304
|
+
aria-selected={index === activeIndex}
|
|
305
|
+
>
|
|
306
|
+
{item.label}
|
|
307
|
+
</li>
|
|
308
|
+
))}
|
|
309
|
+
</ul>
|
|
310
|
+
)}
|
|
311
|
+
</div>
|
|
312
|
+
);
|
|
313
|
+
}
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
---
|
|
317
|
+
|
|
318
|
+
## 屏幕阅读器优化
|
|
319
|
+
|
|
320
|
+
### 隐藏装饰性内容
|
|
321
|
+
|
|
322
|
+
```html
|
|
323
|
+
<!-- 装饰性图片 -->
|
|
324
|
+
<img src="/decorative.svg" alt="" aria-hidden="true" />
|
|
325
|
+
|
|
326
|
+
<!-- 仅屏幕阅读器可见 -->
|
|
327
|
+
<span class="sr-only">当前购物车有 3 件商品</span>
|
|
328
|
+
|
|
329
|
+
<style>
|
|
330
|
+
.sr-only {
|
|
331
|
+
position: absolute;
|
|
332
|
+
width: 1px;
|
|
333
|
+
height: 1px;
|
|
334
|
+
padding: 0;
|
|
335
|
+
margin: -1px;
|
|
336
|
+
overflow: hidden;
|
|
337
|
+
clip: rect(0, 0, 0, 0);
|
|
338
|
+
white-space: nowrap;
|
|
339
|
+
border-width: 0;
|
|
340
|
+
}
|
|
341
|
+
</style>
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
### 图标按钮
|
|
345
|
+
|
|
346
|
+
```html
|
|
347
|
+
<!-- 仅图标按钮必须有标签 -->
|
|
348
|
+
<button aria-label="关闭对话框">
|
|
349
|
+
<svg aria-hidden="true"><!-- X icon --></svg>
|
|
350
|
+
</button>
|
|
351
|
+
|
|
352
|
+
<!-- 图标 + 文字 -->
|
|
353
|
+
<button>
|
|
354
|
+
<svg aria-hidden="true"><!-- icon --></svg>
|
|
355
|
+
<span>保存</span>
|
|
356
|
+
</button>
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
### 表格无障碍
|
|
360
|
+
|
|
361
|
+
```html
|
|
362
|
+
<table>
|
|
363
|
+
<caption>2026 年第一季度销售数据</caption>
|
|
364
|
+
<thead>
|
|
365
|
+
<tr>
|
|
366
|
+
<th scope="col">月份</th>
|
|
367
|
+
<th scope="col">销售额</th>
|
|
368
|
+
<th scope="col">增长率</th>
|
|
369
|
+
</tr>
|
|
370
|
+
</thead>
|
|
371
|
+
<tbody>
|
|
372
|
+
<tr>
|
|
373
|
+
<th scope="row">1 月</th>
|
|
374
|
+
<td>¥120,000</td>
|
|
375
|
+
<td>+15%</td>
|
|
376
|
+
</tr>
|
|
377
|
+
</tbody>
|
|
378
|
+
</table>
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
---
|
|
382
|
+
|
|
383
|
+
## 颜色与对比度
|
|
384
|
+
|
|
385
|
+
### WCAG 对比度要求
|
|
386
|
+
|
|
387
|
+
| 文本类型 | AA 标准 | AAA 标准 |
|
|
388
|
+
|----------|---------|----------|
|
|
389
|
+
| 正文 (< 18px) | 4.5:1 | 7:1 |
|
|
390
|
+
| 大文本 (>= 18px 或 14px bold) | 3:1 | 4.5:1 |
|
|
391
|
+
| UI 组件边界 | 3:1 | - |
|
|
392
|
+
|
|
393
|
+
```css
|
|
394
|
+
/* 不仅依赖颜色传达信息 */
|
|
395
|
+
/* 错误:仅用红色表示错误 */
|
|
396
|
+
.error { color: red; }
|
|
397
|
+
|
|
398
|
+
/* 正确:颜色 + 图标 + 文字 */
|
|
399
|
+
.error {
|
|
400
|
+
color: #DC2626;
|
|
401
|
+
border-left: 3px solid #DC2626;
|
|
402
|
+
padding-left: 12px;
|
|
403
|
+
}
|
|
404
|
+
.error::before {
|
|
405
|
+
content: "⚠ ";
|
|
406
|
+
}
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
---
|
|
410
|
+
|
|
411
|
+
## 响应式无障碍
|
|
412
|
+
|
|
413
|
+
```css
|
|
414
|
+
/* 缩放到 200% 仍可用 */
|
|
415
|
+
html {
|
|
416
|
+
font-size: 100%; /* 尊重用户字体设置 */
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
body {
|
|
420
|
+
font-size: 1rem; /* 使用 rem,不用 px */
|
|
421
|
+
line-height: 1.5; /* 最低 1.5 */
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
/* 减少动画(尊重用户偏好) */
|
|
425
|
+
@media (prefers-reduced-motion: reduce) {
|
|
426
|
+
* {
|
|
427
|
+
animation-duration: 0.01ms !important;
|
|
428
|
+
transition-duration: 0.01ms !important;
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
/* 高对比度模式 */
|
|
433
|
+
@media (prefers-contrast: high) {
|
|
434
|
+
:root {
|
|
435
|
+
--border-color: #000;
|
|
436
|
+
--text-color: #000;
|
|
437
|
+
--bg-color: #fff;
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
/* 触摸目标最小 44x44px */
|
|
442
|
+
button, a, input[type="checkbox"], input[type="radio"] {
|
|
443
|
+
min-width: 44px;
|
|
444
|
+
min-height: 44px;
|
|
445
|
+
}
|
|
446
|
+
```
|
|
447
|
+
|
|
448
|
+
---
|
|
449
|
+
|
|
450
|
+
## 测试工具
|
|
451
|
+
|
|
452
|
+
### 自动化工具
|
|
453
|
+
|
|
454
|
+
| 工具 | 类型 | 覆盖率 | 用途 |
|
|
455
|
+
|------|------|--------|------|
|
|
456
|
+
| axe-core | 代码库 | ~57% | CI 集成 |
|
|
457
|
+
| Lighthouse | 浏览器 | ~30% | 快速审计 |
|
|
458
|
+
| pa11y | CLI | ~40% | CI 流水线 |
|
|
459
|
+
| jest-axe | 测试 | ~57% | 单元测试 |
|
|
460
|
+
| Playwright a11y | E2E | ~57% | E2E 测试 |
|
|
461
|
+
|
|
462
|
+
### jest-axe 测试示例
|
|
463
|
+
|
|
464
|
+
```typescript
|
|
465
|
+
import { render } from "@testing-library/react";
|
|
466
|
+
import { axe, toHaveNoViolations } from "jest-axe";
|
|
467
|
+
|
|
468
|
+
expect.extend(toHaveNoViolations);
|
|
469
|
+
|
|
470
|
+
test("表单组件无 a11y 违规", async () => {
|
|
471
|
+
const { container } = render(<LoginForm />);
|
|
472
|
+
const results = await axe(container);
|
|
473
|
+
expect(results).toHaveNoViolations();
|
|
474
|
+
});
|
|
475
|
+
```
|
|
476
|
+
|
|
477
|
+
### Playwright 无障碍测试
|
|
478
|
+
|
|
479
|
+
```typescript
|
|
480
|
+
import { test, expect } from "@playwright/test";
|
|
481
|
+
import AxeBuilder from "@axe-core/playwright";
|
|
482
|
+
|
|
483
|
+
test("首页无障碍扫描", async ({ page }) => {
|
|
484
|
+
await page.goto("/");
|
|
485
|
+
const results = await new AxeBuilder({ page })
|
|
486
|
+
.withTags(["wcag2a", "wcag2aa"])
|
|
487
|
+
.analyze();
|
|
488
|
+
expect(results.violations).toEqual([]);
|
|
489
|
+
});
|
|
490
|
+
```
|
|
491
|
+
|
|
492
|
+
### 手动测试清单
|
|
493
|
+
|
|
494
|
+
1. **键盘测试**: 只用键盘(Tab/Shift+Tab/Enter/Escape/方向键)完成所有操作
|
|
495
|
+
2. **屏幕阅读器测试**: 用 VoiceOver (macOS) / NVDA (Windows) 浏览全页面
|
|
496
|
+
3. **缩放测试**: 浏览器缩放至 200%,所有内容可见可用
|
|
497
|
+
4. **色觉模拟**: 使用 Chrome DevTools 色觉缺陷模拟
|
|
498
|
+
|
|
499
|
+
---
|
|
500
|
+
|
|
501
|
+
## 常见反模式
|
|
502
|
+
|
|
503
|
+
| 反模式 | 影响 | 正确做法 |
|
|
504
|
+
|--------|------|----------|
|
|
505
|
+
| div 替代 button | 键盘不可用 | 使用原生 button |
|
|
506
|
+
| 缺少 alt 属性 | 屏幕阅读器无法理解 | 所有图片提供 alt |
|
|
507
|
+
| 仅依赖颜色 | 色觉障碍用户无法区分 | 颜色+图标+文字 |
|
|
508
|
+
| 自动播放视频/音频 | 影响屏幕阅读器用户 | 提供播放控制 |
|
|
509
|
+
| 时间限制操作 | 运动障碍用户无法完成 | 提供延长选项 |
|
|
510
|
+
| outline: none | 键盘焦点不可见 | 自定义 :focus-visible 样式 |
|
|
511
|
+
|
|
512
|
+
---
|
|
513
|
+
|
|
514
|
+
## Agent Checklist
|
|
515
|
+
|
|
516
|
+
在 AI 编码流水线中实现 Web 无障碍时,必须逐项检查:
|
|
517
|
+
|
|
518
|
+
- [ ] 使用语义化 HTML 元素(header/nav/main/section/article/footer)
|
|
519
|
+
- [ ] 标题层级有序(h1-h6 不跳级)
|
|
520
|
+
- [ ] 所有交互元素键盘可达(Tab/Enter/Escape)
|
|
521
|
+
- [ ] 所有图片提供 alt 属性(装饰性图片 alt="")
|
|
522
|
+
- [ ] 表单控件关联 label(for/id 或嵌套)
|
|
523
|
+
- [ ] 错误提示使用 aria-invalid + aria-describedby
|
|
524
|
+
- [ ] 对比度达到 WCAG 2.1 AA(正文 4.5:1,大文本 3:1)
|
|
525
|
+
- [ ] 不仅依赖颜色传达信息(配合图标/文字/边框)
|
|
526
|
+
- [ ] 模态框有焦点陷阱和 Escape 关闭
|
|
527
|
+
- [ ] 提供跳过导航链接
|
|
528
|
+
- [ ] 动态内容使用 aria-live 通知
|
|
529
|
+
- [ ] 尊重 prefers-reduced-motion 和 prefers-contrast
|
|
530
|
+
- [ ] 触摸目标 >= 44x44px
|
|
531
|
+
- [ ] CI 集成 axe-core 自动化检测
|
|
532
|
+
- [ ] 关键流程通过屏幕阅读器手动测试
|