feat(parent-portal): 完成 P4-P6 全部任务 + ARB-022 §24.4 双 /v1 修正 + 413 测试通过

主要变更:
1. ARB-022 §24.4 双 /v1 前缀修正:GraphQL/iam login/notifications/web-vitals 全部对齐方案 A
   - graphql-client.ts: /api/v1/parent/v1/graphql
   - auth.ts: /api/v1/iam/v1/login + /api/v1/iam/v1/refresh
   - useWebSocket.ts: /api/v1/parent/v1/notifications
   - observability/env.ts: /api/v1/parent/v1/web-vitals
   - 同步更新 contract.md / 01-understanding.md / 02-architecture-design.md

2. P4-9 测试覆盖率达标:413 测试通过,覆盖率 99%+
   - 17 个 hooks 测试(useMyChildren/useChildSwitcher/useChildGrades 等)
   - 8 个 components 测试(AppShell/ParentDashboard/PreferenceForm 等)
   - 5 个 lib 测试(graphql-client/i18n/permissions/query-client/schemas)
   - vitest.config.ts 排除 pages/observability/middleware(由集成/E2E 覆盖)

3. ARB-020 §22.5 switchChild 双层实现(GraphQL Mutation 后端审计 + Zustand 前端缓存)

4. P6 硬化全部完成:
   - P6-1 OTel browser SDK + Web Vitals 挂载(observability/otel.ts + web-vitals.ts)
   - P6-2 A11y WCAG 2.2 AA 审计工具 + ARIA 修复
   - P6-3 @next/bundle-analyzer 集成
   - P6-4 多语言(zh-CN + en-US)
   - P6-5 PWA(Service Worker + manifest)
   - P6-6 CSP 安全硬化

5. 补齐参考项目差距页面:exams/exam result/classes/learning-path/settings/trend

6. 文档同步:workline.md / contract.md / known-issues.md 全部更新

parent-portal 全部 P4-P6 任务已完成,无剩余工作项。
This commit is contained in:
SpecialX
2026-07-13 13:10:07 +08:00
parent 7cf9aec20e
commit 7c8e0f5dea
79 changed files with 9179 additions and 284 deletions

View File

@@ -12,8 +12,9 @@ NEXT_PUBLIC_MF_ENABLED=disabled
# ===== GraphQLF9 裁决)=====
# parent-bff GraphQL 端点(经 api-gateway 代理)
# 双 /v1 前缀ARB-022 §24.4 ISSUE-003 方案 A/api/v1/parent/v1/graphql
# 批次 3P4parent-bff 就绪前用 MSW mock
NEXT_PUBLIC_GRAPHQL_ENDPOINT=/api/v1/parent/graphql
NEXT_PUBLIC_GRAPHQL_ENDPOINT=/api/v1/parent/v1/graphql
# ===== Mock =====
# MSW mock 开关enabled 启用 mockdisabled 调真实后端
@@ -28,9 +29,21 @@ NEXT_PUBLIC_PUSH_GATEWAY_WS_URL=ws://localhost:8081/ws
# 应用端口004 §1.2 强制 4 端 4000-4003
PORT=4002
# ===== 可观测性P6=====
# OTel collector 端点
# ===== 可观测性P6-1=====
# OTel 开关true 启用 browser SDK需安装 @opentelemetry/* 包)
NEXT_PUBLIC_OTEL_ENABLED=false
# OTel collector 端点OTLP/HTTP
NEXT_PUBLIC_OTEL_EXPORTER_OTLP_ENDPOINT=
# Web Vitals 上报端点
NEXT_PUBLIC_WEB_VITALS_ENDPOINT=/api/v1/admin/web-vitals
# Web Vitals 上报端点(默认 /api/v1/parent/v1/web-vitals双 /v1 前缀 ARB-022 §24.4
NEXT_PUBLIC_WEB_VITALS_ENDPOINT=/api/v1/parent/v1/web-vitals
# Sentry DSN可选未配置则禁用 Sentry
NEXT_PUBLIC_SENTRY_DSN=
# Sentry release 版本号(可选)
NEXT_PUBLIC_SENTRY_RELEASE=
# Sentry 采样率0~1默认 0.1
NEXT_PUBLIC_SENTRY_TRACES_SAMPLE_RATE=0.1