本项目是一个基于 Next.js + Prisma + SQLite 的整改任务跟踪系统,旨在帮助管理员高效分发整改任务,并让各县市用户方便地查看和反馈整改情况。
- 框架: Next.js (App Router)
- 语言: TypeScript
- 数据库: SQLite (通过 Prisma ORM 管理)
- 样式: Tailwind CSS
- 工具: XLSX (Excel 导入导出)
确保您的本地环境已安装:
- Node.js (推荐 v18 或更高版本)
- npm (Node.js 安装包通常自带)
在项目根目录下执行:
npm install本项目默认使用本地 SQLite 数据库 (prisma/dev.db)。首次运行前需初始化数据库结构:
# 1. 生成 Prisma Client 代码
npx prisma generate
# 2. 将 Schema 同步到数据库文件 (自动创建 dev.db)
npx prisma db push执行内置脚本创建一个默认的管理员账号:
- 用户名:
admin - 密码:
admin
node prisma/seed.jsnpm run dev启动成功后,访问浏览器:http://localhost:3000
访问 /login 页面。
- 管理员: 使用
admin/admin登录,进入后台管理。 - 普通用户: 使用管理员创建的账号登录,自动跳转至所属县市的任务批次列表。
- 批量导入: 上传 Excel 文件导入整改任务,支持自定义列映射(如指定哪一列是“县市”)。
- 任务管理: 查看所有批次,删除误导的批次,或导出特定批次的数据。
- 用户管理: 创建各县市的普通用户账号(需绑定具体的县市名称,如“北京”)。
- 数据导出: 支持导出全部数据或按批次导出 Excel。
- 批次选择: 登录后查看相关的任务批次及完成进度。
- 任务反馈: 点击进入任务列表,查看具体问题并提交整改反馈(支持文字和图片)。
- 数据导出: 可导出当前所属县市的任务数据。
在服务器上创建一个目录用于存放数据库文件,防止容器重启数据丢失。
mkdir -p ./data
# 确保该目录有写权限
chmod 777 ./data本项目已发布到 GitHub Container Registry,直接运行即可(支持 x86 和 arm64):
docker run -d \
--name rectification-app \
--restart always \
-p 3000:3000 \
-v $(pwd)/data:/app/data \
-e DATABASE_URL="file:/app/data/dev.db" \
ghcr.io/javesun99/rectification:latest说明:
- 容器启动时会自动检测数据库是否存在。如果不存在,会自动创建表结构并初始化默认管理员账号 (
admin/admin)。 - 请勿修改
/app/data容器内路径,这是数据库的默认存储位置。
访问 http://服务器IP:3000 即可。
新代码兼容了“生产环境跑在内网 IP(无 SSL)”的常见情况。
- 默认情况:允许 HTTP 访问(
secureCookie 策略为false)。 - 启用 HTTPS:如果您配置了域名和 HTTPS(反向代理),为了恢复最高安全性,请在启动命令中添加
-e USE_HTTPS=true。docker run -d ... -e USE_HTTPS=true ...
如果您不想使用 Docker,可以直接下载我们构建好的独立运行包(包含 Node.js 运行时以外的所有依赖,支持 Linux x86/ARM64 和 macOS)。
前往 GitHub 仓库的 Actions 页面,找到最新的构建记录,下载 standalone-package Artifact。
# 解压
tar -xzf rectification-system-standalone.tar.gz
cd app
# 启动 (使用内置脚本,自动处理数据库初始化)
./start.sh前置要求:
- 服务器需安装 Node.js 18 或更高版本。
- 确保端口 3000 未被占用。
- Node.js 18+
- npm
# 安装依赖
npm install
# 初始化数据库
npx prisma generate
npx prisma db push
node prisma/seed.js
# 开发模式启动
npm run dev
# 生产模式编译与启动
npm run build
npm start-
查看/管理数据库:
npx prisma studio
这会打开一个网页版数据库管理器,方便直接查看和修改数据。
-
Schema 变更后更新: 如果修改了
prisma/schema.prisma文件,必须执行:npx prisma generate
并重启开发服务器。