Trae Assistant cc7857e009
Deploy to Server / deploy (push) Successful in 1m40s
fix: 直接加义工时的补录活动时间改为真实提交当天(不再是 2024-01-01 假时间)
- hours.ts POST /direct-add:
  · 不再复用单一『【补录】直接加义工时长』活动(之前 start_time
    硬编码 2024-01-01 00:00 会在所有活动列表/详情里显示错时间)
  · 改为每次提交取 SQLite datetime('now','+8 hours') 真实 UTC+8 时刻,
    活动标题按日期拼接:『【补录】YYYY-MM-DD 直接加义工时长』
  · start_time / end_time 都设为提交这一刻的 YYYY-MM-DD HH:MM,
    同一日内多次提交会复用同日期活动;不同日期自动建独立活动
  · 响应额外返回 direct_add_activity_title / direct_add_activity_time
    便于前端以后 toast 里显示
- 新增容错:last_insert_rowid() 取不到活动就 ROLLBACK + 返回 500,
  防止 hours 行悬挂到无效 activity_id
2026-10-05 13:55:18 +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%