Trae Assistant b145cbd167
Deploy to Server / deploy (push) Successful in 1m37s
fix: 活动矩阵备注修复 + 时长统一保留 1 位小数 + Excel 导出自定义样式
- 后端 activity_matrix 新增 _remarks 映射,不再依赖 hours 数组独立哈希
  (避免 include_hours=false 时矩阵备注全丢)
- 前端预览矩阵 & Excel 矩阵 & 一键总表统一直读 u._remarks[activityId]
  单元格格式:时长(1位) + 换行 + 「备注:xxx」
- 全局 toFixed(2) → toFixed(1):
  · Export.tsx 明细/MiniTable/矩阵/KPI
  · Hours.tsx 批量设置提示/Excel 导出/卡片汇总
  · Users.tsx 列表累计时长/详情卡片/活动明细
  · user/Dashboard.tsx 累计时长卡片/活动明细表
- Excel 导出自定义样式(utils/export.ts):
  · 表头主题色 #275354 填充 + 白字 + 加粗 + 居中
  · 首行冻结(姓名+义工号两列粘性 xSplit=2)+ 整表 autofilter
  · 全列列宽自适应(按表头+前 2000 行内容最大换行宽度,关键字段保底)
  · 矩阵单元格居中 + 数值格式 0.0 + wrapText 备注换行
  · 交替行底色 ALT_ROW=#F7FAFA,总时长列字加粗主题色 + 浅底色 #EDF7F7
  · 行高按每行最大换行数量线性放大(16+(n-1)*14,最低 18)
  · 所有实体单元格补空值保留边框,避免边角缺失
  · XLSX.write 启用 cellStyles=true;MIME 改为标准 openxmlformats-officedocument
- 矩阵 sheet 通过 hint.matrixColStart/End 精确识别矩阵单元格区间启用数值格式
- 修复 doExcel() sheets 数组类型声明过窄(增加 hint 可选字段)
2026-10-05 10:12:46 +08:00
2026-10-04 18:06:24 +08:00

义工时长管理系统

功能概述

  • 管理台:活动设置、义工时长登记、用户管理、数据导出(表格/图片)
  • 用户端:输入姓名查询个人参与活动及累计义工时长
  • 响应式:同时适配移动设备与 PC 端

技术栈

  • 前端:React 18 + Vite 5 + TypeScript + TailwindCSS 3
  • 后端:Node.js + Express + TypeScript
  • 数据库:SQLite 3 (better-sqlite3)
  • 部署:Docker + Gitea Actions 自动部署
  • 域名:https://volunteer.bzw-hheb.top

初始管理员账号

  • 用户名:admin
  • 密码:admin123

首次登录后请立即修改密码。

本地开发

# 安装后端依赖
cd server && npm install

# 安装前端依赖
cd ../client && npm install

# 启动后端(端口 3001)
cd server && npm run dev

# 启动前端(端口 5173,代理 /api 到 3001)
cd client && npm run dev

Docker 本地运行

docker compose up -d --build

访问 http://localhost:3000

部署配置(Gitea Secrets)

在仓库 Settings -> Secrets 中配置:

名称 说明
SSH_HOST 服务器 IP/域名
SSH_PORT SSH 端口(默认 22)
SSH_USER SSH 用户名
SSH_PRIVATE_KEY SSH 私钥(对应服务器上的公钥需加入 authorized_keys)

数据持久化

SQLite 数据库文件位于容器 /app/server/data/volunteer.db,docker-compose.yml 中已配置为 bind mount 到 ./server/data。

S
Description
No description provided
Readme
664 KiB
Languages
TypeScript 98.8%
CSS 0.6%
Dockerfile 0.4%
HTML 0.2%