- 新增 docs/standards/coding-standards.md 编码规范文档(16 章节) - 适配当前项目: 单应用+模块化架构(非 Monorepo) - 保留 data-access.ts 模式(非 services/) - 使用 proxy.ts(Next.js 16 重命名) - 保留企业级行数规范(组件 500/800, Actions 800/1000) - 保留 Tailwind v4 CSS 变量设计令牌 - 保留 ActionState<T> 类型 - 含"与原规范的差异说明"附录(10 项差异及原因) - 更新 .trae/rules/project_rules.md: - 新增编码规范章节, 引用 coding-standards.md - 新增架构分层/模块结构/TS规则/命名/组件/Action/Tailwind/安全/提交规范 - 架构文档清单新增解耦路线图 - 新增 .prettierrc 配置(匹配现有代码风格: 双引号/无分号/2空格) - 更新 docs/README.md 新增编码规范章节 - 更新 work_log
25 KiB
25 KiB
Work Log
2026-06-17
编码规范适配与配置完善
问题背景
用户提供了一份通用 Next.js 企业级编码规范,需要结合当前项目实际情况进行适配。
完成工作
1. 创建适配后的编码规范文档
- 新增
docs/standards/coding-standards.md(16 章节,全面适配当前项目) - 适配要点:
- 项目结构:保留单应用 + 模块化架构(非 Monorepo)
- 数据获取层:保留
modules/[module]/data-access.ts(非services/) - 中间件:使用
proxy.ts(Next.js 16 重命名,非middleware.ts) - 行数限制:保留企业级规范(组件 500/800,Actions 800/1000)
- Tailwind:保留 v4 CSS 变量设计令牌方式
- ActionState:保留现有
ActionState<T>类型(非ActionResult联合类型) - 环境变量:保留
@t3-oss/env-nextjs+ Zod(已实现)
- 新增"与原规范的差异说明"附录,列出 10 项差异及原因
2. 更新项目规则
- 更新
.trae/rules/project_rules.md:- 新增"编码规范"章节,引用
docs/standards/coding-standards.md - 新增架构分层规则、模块标准结构、TypeScript 规则、命名规范、组件规范、Server Action 规范、Tailwind 规范、安全规范、提交规范
- 架构文档清单新增解耦路线图
- 行数规范新增工具函数 ≤40 行、自定义 Hook ≤80 行
- 新增"编码规范"章节,引用
3. 补充缺失的配置文件
- 新增
.prettierrc(匹配现有代码风格:双引号、无分号、2 空格、printWidth 100) - 配置
prettier-plugin-tailwindcss插件(已在 devDependencies 中)
4. 更新文档索引
docs/README.md新增"编码规范"章节,登记 coding-standards.md 和 project_rules.md
验证
- 待验证 lint + tsc
架构全面审查与文档重构
问题背景
用户反馈:架构文档阅读后仍无法理解各模块、函数关系,说明文档质量不足或代码耦合度过高。006/007 及其他文档长期未更新。
完成工作
1. 全项目逐文件审查(4 份审查报告)
docs/architecture/audit/shared-audit.md- shared 基础设施层(69 文件,15 问题)docs/architecture/audit/core-business-audit.md- 核心业务模块(exams/homework/questions/textbooks/grades)docs/architecture/audit/management-modules-audit.md- 管理模块(school/classes/scheduling/attendance/users/audit/course-plans/announcements)docs/architecture/audit/new-and-other-modules-audit.md- 新增模块和其他模块(elective/proctoring/diagnostic/notifications/dashboard/messaging/parent/settings/files/auth/layout/student)docs/architecture/audit/00_summary.md- 汇总报告
2. 发现的关键问题
P0 严重问题(6 项):
classes/data-access.ts2104 行,超硬上限 2.1 倍,混入 homework/scheduling/grades 逻辑homework/data-access.ts1038 行,超硬上限,混入排名计算shared/lib↔auth循环依赖dashboard/data-access.ts直查 11 张跨模块表messaging绕过notifications直接写通知classSchedule表三处写入口(数据完整性风险)
P1 较严重问题(6 项):
- 跨模块直接 DB 查询普遍存在(classes 被 8+ 处直接查询)
- actions 层混入数据访问逻辑
- auth.ts 混合 5 类职责
- users/import-export.ts 四重职责
- proctoring/exam-mode-config.tsx 死代码
- notifications 反向依赖 messaging
3. 重写架构文档(5 份)
- 004 架构影响地图:从"罗列函数签名"重构为"图优先 + 结构化",含分层架构图、模块依赖关系图(标注合理/违规/循环依赖)、数据流向图、核心调用链路、26 个模块清单、P0/P1/P2 问题分级与解耦建议
- 005 架构数据 JSON:新增 architectureOverview、moduleDependencyGraph(25 节点 37 边)、knownIssues(12 问题)、dbTables(54 表按业务域分组)节点;补全 permissions(52→54)、apiRoutes(10→11)
- 006 功能清单:添加"当前实现状态"列,143 个功能项标注 ✅/⚠️/❌,P0 覆盖率 80%→92%
- 007 差距审计报告:v2→v3,总体完成度 P0 69%→84%,P2 路线图 8/14=57%,新增架构技术债章节
- 001 项目概览:更新为 6 角色/54 权限/26 模块/54 表,新增架构原则和项目状态章节
4. 文档治理
- 创建
docs/README.md文档索引(架构/审查/专题/归档分类) - 11 个过时文档添加"已归档"标注(002×2/003/设计文档×8)
- 所有文档保持活跃维护与归档分离
验证
- tsc --noEmit: 0 errors
- npm run lint: 0 errors 0 warnings
- git commit:
f8dfd1d
解耦路线图输出
完成工作
- 创建
docs/architecture/audit/01_decoupling_roadmap.md解耦路线图文档- 解耦原则:单一职责 / 模块封装 / 分层单向依赖
- 过耦合问题清单:6 项 P0 + 6 项 P1 + 2 项 P2,每项含问题/影响/解耦方案/迁移步骤
- 解耦执行优先级:三阶段(P0 1-2 周 / P1 2-4 周 / P2 4-8 周)
- 验收标准:文件行数 / 模块封装 / 职责单一 / 架构文档可读性
- 预期效果:开发效率 / 文档质量 / 项目可维护性三方面提升
- 更新
docs/README.md索引加入解耦路线图
关键解耦项摘要
- P0-1: classes/data-access.ts 2104 行 → 按职责拆 4 个文件
- P0-2: homework/data-access.ts 1038 行 → 分离排名逻辑到 ranking-service.ts
- P0-3: shared/lib ↔ auth 循环依赖 → 依赖注入或抽取 session.ts
- P0-4: dashboard 直查 11 张表 → 各模块添加 getDashboardStats() 函数
- P0-5: messaging 绕过 notifications → 改用 dispatchNotification
- P0-6: classSchedule 三处写入口 → 统一到 scheduling/data-access
P2 质量保障类实现(5 项全部完成)
1. 屏幕阅读器兼容性增强(a11y)
- 新增无障碍工具库:
src/shared/lib/a11y.ts(useA11yId/mergeA11yProps/describeInput/loadingAria) - 新增 Hook:
src/shared/hooks/use-aria-live.ts(aria-live 区域管理) - 新增组件:
src/shared/components/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. 视觉回归测试(Visual Regression)
- 配置:
tests/visual/visual.config.ts(3 视口 × 2 主题) - 测试套件:homepage/admin-dashboard/teacher-dashboard/student-dashboard
- 辅助函数:auth.ts(登录态管理)、visual-helpers.ts(视口/主题/遮罩)
- 更新 playwright.config.ts:新增 visual-chromium 项目,maxDiffPixelRatio 0.01
- 文档:
docs/testing/visual-regression.md
3. 短信/微信推送渠道集成(notifications)
- 新增模块:
src/modules/notifications/ - 渠道实现:SMS(阿里云/腾讯云/Mock)、WeChat(公众号模板消息)、Email(Nodemailer SMTP)、In-App
- 分发器:按用户通知偏好并行多渠道发送
- Server Actions:sendNotificationAction、sendClassNotificationAction
- 外部 SDK 动态 import,Mock 模式开发环境可用
- 配置:
.env.example,文档:docs/notifications/channels.md
4. 漏洞扫描 CI 集成(security)
- 增强 CI:security-scan job(npm audit + Snyk + Trivy FS + OWASP ZAP)
- 独立工作流:
.gitea/workflows/security.yml(每周一深度扫描,含容器镜像扫描) - 配置:
.gitea/suppressions.json(Snyk 抑制)、.trivyignore(Trivy CVE 忽略) - 本地脚本:
scripts/security-scan.sh+scripts/security-scan.ps1 - 文档:
docs/security/scanning.md(含 SLA:critical 24h/high 7d/medium 30d/low 90d)
5. 灾备方案(DR)
- 脚本:backup-verify.sh(完整性校验)、backup-offsite-sync.sh(S3/OSS/NFS 异地同步)、dr-drill.sh/ps1(灾备演练)、failover.sh(故障切换)、health-check.sh(健康检查)
- CI 增强:scheduled-backup 添加校验+异地同步,新增 weekly-dr-drill job
- 独立工作流:
.gitea/workflows/dr-drill.yml(每周一凌晨 4 点自动演练) - 文档:
docs/dr/dr-plan.md(RTO 4h/RPO 24h)、docs/dr/dr-runbook.md(6 大故障场景操作手册) - 配置:
.env.example灾备环境变量
验证
npx tsc --noEmit:0 错误npm run lint:0 错误 0 警告
P2 功能扩展类实现(功能扩展 + 质量保障首批)
1. 选课管理模块(elective)
- 新增 schema 表:
electiveCourses(选修课程)、courseSelections(选课记录) - 新增权限:
ELECTIVE_MANAGE、ELECTIVE_READ、ELECTIVE_SELECT - 模块文件:
src/modules/elective/(types/schema/data-access×3/actions/components×3) - 路由:admin/teacher/student 三端 elective 页面
- 支持:先到先得 + 抽签两种选课模式,容量控制,退选
2. 考试监考模块(proctoring)
- 新增 schema:
exams表扩展 examMode/durationMinutes/antiCheatEnabled 等字段;新增examProctoringEvents表 - 新增权限:
EXAM_PROCTOR、EXAM_PROCTOR_READ - 模块文件:
src/modules/proctoring/(types/data-access/actions/components×3) - API 路由:
/api/proctoring/event接收学生端上报 - 页面:教师监考面板 + 学生端防作弊监控(tab切换/复制粘贴/右键/开发者工具/全屏退出/空闲超时检测)
3. 学情诊断报告模块(diagnostic)
- 新增 schema:
knowledgePointMastery(知识点掌握度)、learningDiagnosticReports(诊断报告) - 新增权限:
DIAGNOSTIC_MANAGE、DIAGNOSTIC_READ - 模块文件:
src/modules/diagnostic/(types/data-access×2/actions/components×4) - 功能:基于提交答案自动计算知识点掌握度,生成个人/班级诊断报告(强项/弱项/建议),雷达图可视化
- 页面:teacher 诊断管理 + 学生查看自己报告
4. 项目规则更新
.trae/rules/project_rules.md单文件行数限制从 300 行调整为企业级规范:- React 组件 ≤ 500 行(复杂场景可放宽至 800)
- Server Actions / Data Access ≤ 800 行
- 硬性上限 1000 行
5. 种子脚本 lint 修复
scripts/seed.ts消除全部any类型(17 个 error → 0)- 定义内部类型:SeedQuestion/SeedQuestionBank/SeedGradeRecord/SeedAttendanceRecord
- 移除未使用参数,函数签名精简
6. 架构文档同步
docs/architecture/004_architecture_impact_map.md新增 elective/proctoring/diagnostic 三个模块章节docs/architecture/005_architecture_data.json同步权限点、角色映射、dbTables、modules、dependencyMatrix、routes
验证
npx tsc --noEmit:0 错误npm run lint:0 错误 0 警告
前序工作(同日早些时候)
1. Next.js 16 Proxy 修复
src/proxy.ts导出函数从middleware重命名为proxy(Next.js 16 要求)- 修复
getToken()在 edge 运行时缺少secret导致的MissingSecret错误 - 显式传入
secret: process.env.NEXTAUTH_SECRET - 主要修改:proxy.ts
2. MySQL 端口切换 + 数据库创建脚本
.env中 MySQL 端口从 13002 改为 14013- 新增
scripts/create-db.ts:连接 MySQL(不指定库)后执行CREATE DATABASE IF NOT EXISTS next_edu,字符集 utf8mb4_unicode_ci - 主要修改:.env、create-db.ts
3. 种子脚本完全重写(小学场景)
- 完全重写
scripts/seed.ts,实现小学完整场景初始化 - 数据规模:
- 1 所学校(实验小学)、2 个年级(一/二年级)、每年级 2 个班级
- 8 名教师(每班 2 名:1 班主任 + 1 科任,跨班覆盖语数外 3 科)
- 24 名学生(每班 6 名)+ 24 名家长
- 3 科教材(语数外各 1 本)+ 章节 + 知识点
- 15 道题目(每科 5 道:单选/文本/判断)
- 2 套试卷(语文/数学)+ 24 份提交 + 120 个答案
- 2 套作业 + 6 份提交 + 30 个答案
- 课表、成绩、考勤、课程计划、公告等完整数据
- 6 个角色 + 47 个权限点的 RBAC 映射(149 条记录)
- 17 个顺序步骤,耗时约 127s
- 主要修改:seed.ts
4. 迁移脚本系统重构
- 问题:旧迁移系统存在多个缺陷
0011_ai_providers.sql未在_journal.json中注册,导致drizzle-kit migrate失败- 缺少多数 snapshot 文件(仅存 0008、0009)
- 迁移 SQL 使用复杂 PREPARE/EXECUTE 条件模式,维护困难
- 修复:清理全部旧迁移文件与 meta 目录,使用
drizzle-kit generate从 schema 重新生成- 生成单一迁移文件
0000_perfect_pestilence.sql,包含全部 49 张表 - journal 重置为单条记录,snapshot 完整
- 生成单一迁移文件
- 新增 npm 脚本(package.json):
db:create:创建数据库db:push:直接同步 schema(开发用)db:setup:一键 create → migrate → seed
- 主要修改:package.json、drizzle/ 目录
5. 验证
- 干净数据库全流程测试:
db:create→db:migrate→db:seed全部通过 - 49 张表成功创建,种子数据完整写入
- 测试账号(密码均为 123456):
- 管理员: admin@xiaoxue.edu.cn
- 语文老师/一年级1班班主任: t_chinese_1@xiaoxue.edu.cn
- 数学老师: t_math_1@xiaoxue.edu.cn
- 英语老师: t_english_1@xiaoxue.edu.cn
- 学生: student_g1c1_1@xiaoxue.edu.cn
- 家长: parent_g1c1_1@xiaoxue.edu.cn
2026-03-19
1. 作业与权限测试覆盖补齐(第二阶段)
- 新增角色路由与代理守卫集成测试:
tests/integration/dashboard-routing.test.tstests/integration/proxy-guard.test.ts
- 扩展 onboarding 完成接口集成测试,覆盖班级-学科映射与教师分配逻辑:
tests/integration/api-onboarding-complete.route.test.ts
- 新增认证业务流 E2E(注册 -> 登录 -> 受保护区域):
tests/e2e/auth-business-flow.spec.ts
- 新增并补齐作业流程集成测试,覆盖创建、开始作答、提交、批改、保存答案:
tests/integration/homework-create-assignment.test.tstests/integration/homework-actions.test.ts
saveHomeworkAnswerAction增加关键分支用例:- started 状态首次保存答案(insert)
- started 状态更新已有答案(update)
2. 验证
npm run test:integration:通过(7 文件,38 用例)npm run lint:通过npm run typecheck:通过npm run test:e2e:通过(40 通过,1 跳过)- 语言诊断:无错误
2026-03-18
1. 企业级测试体系落地(第一阶段)
- 新增集成测试与 E2E 基础设施:
vitest.config.tsplaywright.config.tstests/setup/integration.setup.ts
- 新增接口集成测试:
tests/integration/api-ai-chat.route.test.tstests/integration/api-onboarding-status.route.test.tstests/integration/api-onboarding-complete.route.test.ts
- 新增认证冒烟 E2E:
tests/e2e/smoke-auth.spec.ts
- 新增全路由回归 E2E:
tests/e2e/full-route-regression.spec.ts
- 新增工程脚本:
test、test:ci、test:integration、test:e2e、test:e2e:smoke、test:e2e:full-routes
- 更新 CI 质量门禁:
- 增加 Playwright Chromium 安装
- 增加集成测试执行
- 增加 E2E 全量回归测试执行
2. 验证
npm run lint:通过npm run typecheck:通过npm run test:integration:通过(3 文件,10 用例)npm run build:通过npm run test:e2e:smoke:通过(本地使用系统 Chrome 通道,2 用例通过)npm run test:e2e:full-routes:通过(38 用例通过)
2026-03-03
1. 教师加入班级学科分配逻辑修复
- 修复教师已在班级中但选择学科加入时被直接返回成功的问题。
- 班级未创建该学科映射时,先补齐映射再分配。
- 学科已被其他老师占用时,返回明确提示。
- 主要修改:
2. 验证
- 质量检查:
npm run lint、npm run typecheck均通过。
2026-03-02
1. 班级详情访问修复(基于会话身份)
- 将数据获取中的教师 ID 来源改为会话用户,移除默认教师 ID 逻辑,修复“新加入班级无法查看班级详情”问题。
- 主要修改:
2. 任课权限与班主任权限区分(学科可见范围)
- 班主任可查看班级下所有学科;任课老师仅可查看自己负责的学科。
- 新增并应用分配学科查询,过滤相应统计与列表。
- 主要修改:
3. 新注册学生默认班级问题修复
- 调整示例学生获取逻辑,避免为新注册学生展示“默认班级”。
- 主要修改:
4. 教材列表 UI 精简为纯色风格
- 将教材卡片头部背景从渐变与纹理改为简洁纯色;图标容器调整为简洁样式,视觉噪音更低。
- 主要修改:
5. 学生导航清理未实现入口
- 移除学生侧导航的“Resources”入口(页面未实现,避免死链)。
- 主要修改:
6. 验证
- 质量检查:
npm run lint、npm run typecheck均通过。
2026-02-24
1. Credentials 登录与密码安全修复
- 密码哈希规范化:
- 注册时统一生成标准 bcrypt 前缀(
$2a/$2b/$2y),确保数据库内哈希格式一致。 - 登录时对非标准前缀(如
$10$...)自动补全为$2b$...再校验,避免格式不一致导致登录失败。
- 注册时统一生成标准 bcrypt 前缀(
- 登录一致性修复:
- 登录校验不再对密码做
trim(),避免前后空格导致的 bcrypt 比对失败。
- 登录校验不再对密码做
- 调试排障(已回收):
- 临时加入安全日志定位失败原因(不输出明文),定位后已移除。
2. 验证
npm run typecheck:通过npm run lint:存在既有告警(未新增)
2026-01-15
1. Schedule Module Optimization
-
Visual Overhaul (
schedule-view.tsx):- Refactored the schedule grid to match the exact design of the
ClassScheduleGridwidget. - Implemented a clean, borderless layout with no grid lines for a modern look.
- Time-Based Positioning: Replaced grid-row logic with absolute positioning based on time (8:00 - 18:00 range) using percentage calculations (
getPositionStyle). - Color Coding: Added
getSubjectColorto auto-assign thematic colors (blue for Math, purple for Physics, etc.) based on course names. - Card Design: Refined course cards with vertical centering, better spacing, and removed unnecessary UI elements (like the "+" button in headers).
- Refactored the schedule grid to match the exact design of the
-
Filter Bar Refinement (
schedule-filters.tsx):- Minimalist Design: Removed borders and shadows from the class selector and buttons to integrate seamlessly with the background.
- Center Label: Added a dynamic, absolute-centered text label that updates based on selection:
- Shows "All Classes" when no filter is active.
- Shows "{Class Name}" when a specific class is selected.
- Simplified Controls: Removed the "Reset" button (X icon) entirely for a cleaner interface.
- Ghost Buttons: Styled the "Add Event" button as a ghost variant with muted colors.
2. Architecture & Cleanup
- Insights Module Removal:
- Deleted the entire
src/app/(dashboard)/teacher/classes/insightsdirectory as the feature was deemed redundant. - Removed
insights-filters.tsxcomponent. - Updated
navigation.tsto remove the "Insights" link from the sidebar. - Note: Preserved
getClassHomeworkInsightsindata-access.tsas it's still used by the Class Detail dashboard widgets.
- Deleted the entire
3. Verification
- Type Safety: Ran
npm run typecheckmultiple times during refactoring to ensure no regressions (Passed). - Build: Attempted to clear build cache to resolve a chunk loading error (Windows permission issue encountered but workaround applied).
2026-01-14
1. Class Management Refactoring (Role Separation)
-
Separation of Duties:
- Moved class creation and management responsibilities from the generic Teacher view to a dedicated Management view.
- Created Grade Management Page at
src/app/(dashboard)/management/grade/classes/page.tsxfor Grade Directors and Admins. - Teachers can now only Join Classes (via code) or view their assigned classes in "My Classes".
-
New Components & Pages:
GradeClassesView(src/modules/classes/components/grade-classes-view.tsx): A comprehensive table view for managing classes within specific grades, supporting creation, editing, and deletion.GradeClassesPage: Server Component that fetches managed grades and classes using strict RBAC (Role-Based Access Control).
-
Teacher "My Classes" Update (
my-classes-grid.tsx):- Removed the "Create Class" button/dialog.
- Added a "Join Class" dialog that accepts a 6-digit invitation code.
- Updated styling to use standard design system colors (
bg-card,border-border) instead of hardcoded gradients.
2. Backend & Logic Updates
-
Data Access (
data-access.ts):- Implemented
getGradeManagedClasses: Fetches classes for grades where the user is either a Grade Head or Teaching Head. - Implemented
getManagedGrades: Fetches the list of grades managed by the user for the creation dropdown. - Updated
getTeacherClasses: Now returns both owned classes (assigned by admin) and enrolled classes (joined via code). - Fixed a SQL syntax error in
getGradeManagedClasses(unescaped backticks in template literal).
- Implemented
-
Server Actions (
actions.ts):- Added
createGradeClassAction,updateGradeClassAction,deleteGradeClassAction: These actions enforce that the user manages the target grade before performing operations. - Updated
joinClassByInvitationCodeAction: Expanded to allow Teachers (roleteacher) to join classes, not just Students.
- Added
3. Verification
- RBAC: Verified that users can only manage classes for grades they are assigned to.
- Flow: Verified Teacher "Join Class" flow correctly redirects and updates the list.
- Syntax: Fixed TypeScript/SQL syntax errors in the new data access functions.
4. Class UI/UX Optimization
-
Students Management Interface (
students-table.tsx,students-filters.tsx):- Enhanced Table: Added student avatars, gender display, and join date.
- Pagination: Implemented client-side pagination (10 items per page) to handle larger classes gracefully.
- Status Filtering: Added "Active/Inactive" filter with visual status badges (Emerald for active, muted for inactive).
- Data Access: Updated
getClassStudentsto fetch extended user profile data and support server-side status filtering.
-
Class Detail Dashboard (
/teacher/classes/my/[id]/page.tsx):- Dashboard Layout: Refactored into a responsive two-column layout (Main Content + Sidebar).
- Key Metrics: Added a 4-card stats grid at the top displaying critical insights:
- Total Students (Active/Inactive breakdown)
- Schedule Items (Weekly sessions)
- Active Assignments (Overdue count)
- Class Average (Based on graded submissions)
- Sidebar Widgets: Added "Class Schedule" and "Homework History" widgets for quick access to temporal data.
- Visual Polish: Integrated
lucide-reacticons throughout for better information scanning.
2026-01-13
1. Navigation & Layout Improvements
- Dynamic Breadcrumbs (
site-header.tsx):- Replaced hardcoded "Dashboard > Overview" breadcrumbs with a dynamic system.
- Implemented a path-to-title lookup using
NAV_CONFIGfromsrc/modules/layout/config/navigation.ts. - Added logic to filter out root role segments (admin/teacher/student/parent) for cleaner paths.
- Added fallback capitalization for segments not found in the config.
- Refactored
SiteHeaderto useusePathnamefor real-time route updates.
2. Code Quality & Bug Fixes
- Type Safety (
homework-grading-view.tsx):- Fixed a TypeScript error where a boolean expression was returning
boolean | undefinedwhich is not a valid React node (implicittruecheck added). - Resolved "Calling setState synchronously within an effect" React warning by initializing state lazily instead of using
useEffect. - Fixed implicit
anytype errors in map functions.
- Fixed a TypeScript error where a boolean expression was returning
- Linting:
- Cleaned up unused imports across multiple files (
exam-actions.tsx,exam-assembly.tsx,textbook-reader.tsx, etc.). - Fixed unescaped HTML entities in
student-dashboard-header.tsxand others. - Removed unused variables to clear ESLint warnings.
- Cleaned up unused imports across multiple files (
- Refactoring:
- Updated
TextbookCardto supporthideActionsprop for better reuse in student views. - Added missing
Progresscomponent tosrc/shared/components/ui/progress.tsx.
- Updated
3. Verification
- Ran
npm run typecheck: Passed (0 errors). - Ran
npm run lint: Passed (0 errors, 28 warnings remaining for unused vars/components that may be needed later).