SpecialX
|
3569d83b8e
|
feat(modules): update layout, notifications, questions, rbac, files
- layout: update site-header.tsx
- notifications: update use-desktop-notifications.ts
- questions: update question-actions.tsx, question-columns.tsx
- rbac: update permission-catalog.ts
- files: update types.ts
|
2026-07-04 10:23:16 +08:00 |
|
SpecialX
|
e9a5264fe7
|
feat(parent,auth,onboarding,files,notifications,adaptive-practice,ai): add module updates
parent:
- Add parent-student-attendance-detail component
auth:
- Add actions, data-access, schema, services, types
onboarding:
- Add parent-children-form and hooks directory
files:
- Add actions, schema, hooks directory
notifications:
- Add schema and schema test
adaptive-practice:
- Add answer-input, answer-result, practice-result-view, practice-starter-with-nav
- Add question-card, question-content, lib and services directories
ai:
- Add context/create-ai-client-service, hooks/use-drag-position, hooks/use-position-persistence
|
2026-07-03 10:26:12 +08:00 |
|
SpecialX
|
f75602d14e
|
feat(announcements,messaging,notifications): 实现所有长期问题 — SSE 实时推送 + 通知日志持久化 + 优先级/归档 + 消息星标/草稿 + 公告已读回执/置顶 + 分类筛选/桌面推送 + 测试覆盖
P1-8 通知实时推送(SSE):
- 新增 /api/notifications/stream SSE 端点(15 秒推送,5 分钟超时)
- 新增 useNotificationStream Hook(SSE + 轮询降级)
- NotificationDropdown 改用 SSE 实时推送
P2-12 测试覆盖:
- notifications/dispatcher.test.ts(6 个测试,渠道选择逻辑)
- notifications/channels/in-app-channel.test.ts(9 个测试,类型映射)
- messaging/schema.test.ts(34 个测试,Zod 校验)
- tests/e2e/messages.spec.ts(消息模块 E2E 测试)
- vitest.unit.config.ts 添加 server-only stub
P2-13a 通知发送日志持久化:
- 新增 notification_logs 表(userId/title/channel/status/messageId/error/sentAt)
- logNotificationSend 改为 async 写入 DB(失败降级 console)
- dispatcher 传递 payload 用于持久化
P2-13b 通知优先级和归档:
- messageNotifications 表新增 priority(low/normal/high/urgent)和 isArchived 字段
- getNotifications 支持归档和优先级筛选
- 新增 archiveNotificationAction
- NotificationList 显示优先级 Badge 和归档按钮
P2-13c 消息星标和草稿:
- messages 表新增 isStarred 字段
- 新增 message_drafts 表
- 新增 toggleMessageStar + 草稿 CRUD Server Actions
- 新增 5 个草稿 data-access 函数
P2-13d 公告已读回执和置顶:
- announcements 表新增 isPinned 字段
- 新增 announcement_reads 表(唯一索引保证幂等)
- 新增 toggleAnnouncementPinAction + markAnnouncementAsReadAction
- getAnnouncements 排序置顶优先
P2-13e 通知分类筛选和桌面推送:
- NotificationList 添加按类型筛选按钮组
- 新增 useDesktopNotifications Hook(浏览器 Notification API)
- NotificationDropdown 集成桌面推送(新通知触发)
架构图同步:
- 004 和 005 均已更新(新增表、Action、Hook、组件描述)
|
2026-06-23 10:13:57 +08:00 |
|
SpecialX
|
1fe30984b6
|
refactor(announcements,messaging,notifications): V1+V2 审计重构 — i18n 命名空间独立 + 通知标题 i18n 化 + 服务端过滤 + 编排下沉 + 表单错误展示 + 架构图同步
V1 改进(已完成):
- P0-4/P1-4/P1-5: 通知组件和 CRUD Action 从 messaging 迁移至 notifications 模块
- P1-5: 新增 getMessagesPageData / getAdminAnnouncementsPageData 编排函数
- P1-6: announcements schema 添加 superRefine 条件校验
- P1-7: 新增 useMessageSearch hook(防抖 + 请求竞态取消)+ 客户端分页 UI
- P1-9: deleteMessage 事务化
- P2-11: 全模块 trackEvent 埋点
- 全模块 i18n 接入 + Error Boundary + a11y 改进
V2 改进(本次完成):
- V2-P0-1: 通知 i18n 命名空间独立(notifications.json),useTranslations 从 "messages" 切换到 "notifications"
- V2-P0-2: 公告/消息通知标题 i18n 化,Server Action 中使用 getTranslations 生成通知标题
- V2-P1-1: AnnouncementList 纯服务端过滤,移除客户端 useState/useMemo
- V2-P1-2: MessageList 客户端过滤仅在初始数据时执行,搜索结果由服务端按 tab 过滤
- V2-P1-3: 消息详情页编排下沉,新增 getMessageDetailPageData 编排函数
- V2-P1-4: 表单服务端校验错误展示(fieldErrors + aria-invalid)
- V2-P2-1: 轮询间隔常量化(POLL_INTERVAL_MS)
- V2-P2-2: 架构图同步(004 + 005)
|
2026-06-22 18:43:12 +08:00 |
|
SpecialX
|
a4d096a6fc
|
fix: patch P0 security vulnerabilities and critical UX issues across 6 modules
Security: Add admin/layout.tsx auth guard; Add requirePermission() to 12 admin pages
Dashboard: Fix StudentStatsGrid rendering; Fix teacher greeting; Add loading/error boundaries; Fix col-span; Add metadata
Announcements: Fix audience filtering; Add user detail page; Trigger notifications on publish; Pass classes data; Add loading.tsx
Messages: Implement soft delete; Add unread badge with polling; Add notification dropdown polling; Add keyword search; Add quiet hours DND
Management: Add loading/error for 9 admin routes; Fix admin-classes-view to use Select for school/grade
Profile/Settings: Add loading/error; Fix parent role routing; Create ParentSettingsView; Integrate AiProviderSettingsCard; Add Tab URL persistence; Add logout confirm; Add avatar; Fix Progress arbitrary class
Schema: Add senderDeletedAt/receiverDeletedAt to messages; Add quietHours to notificationPreferences; Add uniqueIndex import
Docs: Update architecture docs 004/005
|
2026-06-22 13:57:31 +08:00 |
|
SpecialX
|
978d9a8309
|
feat: 新增备课模块并修复全模块 P0/P1/P2 缺陷
Security / deep-security-scan (push) Failing after 20m5s
DR Drill / dr-drill (push) Failing after 1m31s
CI / scheduled-backup (push) Failing after 1m31s
CI / backup-verify (push) Has been skipped
CI / weekly-dr-drill (push) Failing after 0s
CI / build-deploy (push) Has been cancelled
CI / security-scan (push) Has been cancelled
主要变更:
- 新增 lesson-preparation 模块: 备课编辑器、节点编辑、AI 建议、知识点选择、版本历史、作业发布
- 新增 shared 通用组件: charts/question-bank-filters/schedule-list/ui (chip-nav/filter-bar/page-header/stat-card/stat-item)
- 新增 student/admin 端 loading.tsx 与 error.tsx, 优化加载与错误态体验
- 新增 teacher/lesson-plans 页面 (列表/新建/编辑)
- 新增 drizzle 迁移 0002_tiny_lionheart 及 snapshot
- 新增 textbooks/schema.ts 与 exams/utils/normalize-structure.ts
- 修复 Tiptap v3 SSR hydration 崩溃 (rich-text-block immediatelyRender: false)
- 重构多模块 data-access/actions/组件, 修复权限校验与类型规范
- 同步架构文档 004/005 反映新增模块、导出、依赖关系
- 归档 bugs/* 测试报告与 e2e 测试脚本 (admin/parent/student/teacher web_test)
|
2026-06-22 01:06:16 +08:00 |
|
SpecialX
|
49291fcc31
|
refactor: fix all P0/P1/P2 bugs and architecture issues
Bug fixes (from bugs/ directory):
- Fix cross-module DB queries in 9 modules (homework, grades, parent, diagnostic, elective, proctoring, notifications, scheduling, classes) by routing through data-access functions
- Fix shared/lib <-> auth circular dependency via new session.ts module
- Fix divide-by-zero guard in grades data-access
- Fix audit export data truncation (paginated fetch for full datasets)
- Fix missing transactions in homework grading and elective lottery
- Fix missing revalidatePath in course-plans actions
- Fix frontend permission checks using requirePermission instead of requireAuth
- Fix dashboard role routing using session.user.roles
- Fix student auth pattern (migrate getDemoStudentUser to users module)
- Fix ActionState return type handling in components
Code quality fixes:
- Remove 60+ as type assertions (replace with type guards)
- Remove non-null assertions (use optional chaining or explicit checks)
- Convert dynamic imports to static imports (grades, diagnostic)
- Add React.cache() wrapping for read functions
- Parallelize independent queries with Promise.all
- Add explicit return types to 30+ arrow functions
- Replace any with unknown + type guards
- Fix import type for type-only imports
- Add Zod validation schemas for classes and diagnostic modules
- Extract duplicate code (normalizeRoleName, normalizeBcryptHash, logger IP extraction)
- Add console.error to silent catch blocks
- Fix permission naming consistency (exam:proctor_read -> exam:proctor:read)
Architecture doc sync:
- Update 004_architecture_impact_map.md and 005_architecture_data.json
- Update management-modules-audit.md for P0-7 cross-module fix
Moved deleted proctoring event route to deletes/ folder.
|
2026-06-19 05:13:34 +08:00 |
|
SpecialX
|
2c8e229e00
|
refactor: P1-3/4/6 解耦修复 - 拆分 auth/users 文件 + notifications 反向依赖
|
2026-06-18 02:21:44 +08:00 |
|
SpecialX
|
6585e10c6f
|
feat(P2): 实现质量保障类5项功能(无障碍/视觉回归/通知渠道/漏洞扫描/灾备)
## 新增功能
### 1. 屏幕阅读器兼容性增强(a11y)
- 无障碍工具库:src/shared/lib/a11y.ts
- aria-live Hook:src/shared/hooks/use-aria-live.ts
- a11y 组件:skip-link/visually-hidden/focus-trap/aria-status
- 增强 UI:table.tsx 系统性 ARIA role,dialog.tsx aria-modal
- 审计文档:docs/accessibility/a11y-audit.md(WCAG 2.1 AA 清单)
### 2. 视觉回归测试
- 测试套件:tests/visual/(homepage + 3 个 dashboard)
- 3 视口(desktop/tablet/mobile)× 2 主题(light/dark)
- 动态元素遮罩,避免误报
- playwright.config.ts 新增 visual-chromium 项目
- 文档:docs/testing/visual-regression.md
### 3. 短信/微信推送渠道集成
- 新模块:src/modules/notifications/
- 4 个渠道:SMS(阿里云/腾讯云)、WeChat(公众号)、Email(SMTP)、In-App
- 分发器按用户偏好并行多渠道发送
- 外部 SDK 动态 import,Mock 模式开发可用
- 文档:docs/notifications/channels.md
### 4. 漏洞扫描 CI 集成
- CI security-scan job:npm audit + Snyk + Trivy FS + OWASP ZAP
- 独立工作流 security.yml:每周一深度扫描 + 容器镜像扫描
- 配置:suppressions.json + .trivyignore
- 本地脚本:security-scan.sh/ps1
- 文档:docs/security/scanning.md(SLA 分级)
### 5. 灾备方案
- 脚本:backup-verify/backup-offsite-sync/dr-drill/failover/health-check
- CI 增强:备份后校验+异地同步,每周灾备演练
- 独立工作流 dr-drill.yml:每周一凌晨 4 点自动演练
- 文档:docs/dr/dr-plan.md(RTO 4h/RPO 24h)+ dr-runbook.md(6 故障场景)
## 验证
- npx tsc --noEmit:0 错误
- npm run lint:0 错误 0 警告
|
2026-06-17 20:18:29 +08:00 |
|