Commit Graph
8 Commits
Author SHA1 Message Date
Trae Assistant 30021d7b46 feat: 统一全链路时区为 UTC+8 (Asia/Shanghai)
Deploy to Server / deploy (push) Successful in 1m36s
- schema.sql created_at DEFAULT 改为 datetime(now,+8 hours)
- Dockerfile runtime 安装 tzdata ENV TZ=Asia/Shanghai 并软链 /etc/localtime
- docker-compose.yml 挂载宿主机 localtime 并传 TZ=Asia/Shanghai
- server index.ts 入口设置 process.env.TZ
- client utils/export 新增 utc8Now/utc8Input/utc8DateStamp/utc8DateTimeStamp
- Activities 默认活动开始/结束时间改用 UTC+8
- 导出文件名日期戳和报告生成时间统一 utc8DateStamp/utc8DateTimeStamp
2026-10-05 09:09:01 +08:00
Trae Assistant 7f9bf15b7d fix(db): 修复 sql.js lastInsertRowid 误当函数调用导致 userId=0 工作组写入失败
Deploy to Server / deploy (push) Successful in 1m36s
- wrapStmt.run(): 原 lastInsertRowid?.() 误将属性当函数调用导致 undefined→0,现优先直接读取属性(number/bigint),其次调用函数,最后 SELECT 兜底
- initDb: 在 schema 执行前强制 PRAGMA foreign_keys = ON,修正 pragmaCompat 正则判断导致 FK 默认关闭
- pragmaCompat 改为通用 pragma 表达式执行,不再只匹配 foreign_keys=ON
- 根因链条:lastInsertRowid() 调用失败→返回 0→user_groups(0,gid) 全部相同 PK→INSERT OR IGNORE changes=0→40 条数据工作组全 0 写入
- build 通过
2026-10-05 08:53:58 +08:00
Trae Assistant 49985a96ab fix: 批量添加工工作组调试回显 + 完整验证写入
Deploy to Server / deploy (push) Successful in 1m37s
- 后端 /users/batch 返回每条成功记录的 groups_written/groups_expected/group_ids_out;失败记录返回 group_ids_seen/count
- 前端 submitBatch:console.log 打印发送 payload 和响应;弹窗汇总工作组实际/期望写入数;任何异常的行都显示后端实际解析出的 group_ids_out,失败行同时显示后端收到的 group_ids_seen
- 本地模拟后端 sql.js 写入 user_groups 100% 正确(场景A/B测试均 changes=1,聚合查询正确),此提交部署后通过控制台和弹窗即可精确定位问题在哪一跳(前端发送 vs 后端解析 vs 数据库写入)
- npm run build 通过
2026-10-05 08:46:25 +08:00
Trae Assistant f845d6b6a4 fix: 修复批量删除 undefined/失败问题(POST 替代 DELETE body)
Deploy to Server / deploy (push) Successful in 1m38s
- 批量删除改走 POST /users/batch-remove(稳定保证 body 可被 Express 解析),同时增强 DELETE /batch 兼容 query string 回退
- 前端 usersApi.batchRemove 改用 POST 请求;批量删除函数新增 ok 标志位校验 + ?? 0 防 undefined,catch 分支带前缀明确提示失败原因
- npm run build 通过
2026-10-05 08:35:24 +08:00
Trae Assistant 48ac08d19d fix: 修复批量导入义工号/工作组丢失 + 新增批量删除
Deploy to Server / deploy (push) Failing after 43s
- 批量解析:移除义工号强制纯数字校验(原 volunteerLooksLikeNo 逻辑错误导致 VOL-003、2024-A 等全部置空);改为列数驱动:3列时智能探测是否工作组命中,4+列保留义工号原值、剩余段统一合并为工作组解析
- 后端 batch:user_groups 插入语句改为事务内按用户编译;义工号判断改为 null/undefined 严格检查,避免真值判断丢弃空字符串或 0 开头的值
- 新增 DELETE /users/batch:事务性批量删除部员(含 user_groups/hours 级联),返回实际删除 count
- 前端列表新增复选框列(表头 indeterminate 半选态),选中 1+ 条后工具栏显示「删除选中(N)」红色按钮,确认弹窗二次校验
2026-10-05 08:27:34 +08:00
Trae Assistant f42121d0bb feat: 部员多工作组归属 + 批量添加功能
Deploy to Server / deploy (push) Successful in 1m59s
- 数据库:新增 user_groups 多对多关联表,启动时自动迁移旧 group_id 数据
- 后端 users:所有查询聚合多工作组信息,增删改接口支持 group_ids 数组;新增 POST /users/batch 批量添加接口(事务+逐行错误反馈)
- 后端 export/hours/activities:全面兼容多工作组关联查询
- 前端 Users:新增/编辑改为工作组多选复选框;新增批量添加模态框(粘贴解析+实时校验表+提交汇总)
- 前端列表/详情:工作组以多标签形式展示,搜索支持工作组名称
2026-10-05 08:08:15 +08:00
Trae Assistant a84a8b19ac feat(export): 新增活动时长总表(矩阵)+ 移除Logo
Deploy to Server / deploy (push) Canceled after 14m38s
- 后端 POST /api/export 新增 include_activity_matrix:部员×活动矩阵行,列=所有活动(start_time DESC排),_total尾列
- 前端 Export 新增 06 卡片「活动时长总表(矩阵)」:部员+义工号 左固定列,活动列160px宽表头显示日期副标题,值>0高亮主色+浅底,总时长bg-primary-50
- Excel 新增「活动时长总表(矩阵)」Sheet:列名=活动标题,末列总时长
- 移除Brand组件所有img Logo渲染,纯标题,减小侧栏移动端头部视觉噪音
- 前后端 tsc --noEmit exit 0 + vite build exit 0;浏览器 E2E 验证矩阵张三/校园志愿宣传活动=2.00/总时长 2.00 h
2026-10-04 23:17:19 +08:00
Trae Assistant 25b2b8f381 feat: 初始化义工时长管理系统
- 管理台:活动设置、时长登记、用户管理、数据导出(Excel/PNG)
- 用户端:姓名查询个人义工时长与活动记录
- 技术栈:React + Vite + TailwindCSS / Node.js + Express + sql.js (SQLite)
- 支持 Docker 部署,附带 Gitea Actions 自动部署工作流
- 响应式界面,兼容移动端与 PC 端
- 默认管理员账号:admin / admin123
2026-10-04 18:06:24 +08:00