Skip to content

Repository files navigation

Resume Ticket System

一个单机运行的简历工单系统,适合个人或小团队在本机直接处理 PDF / 图片 / 文本简历,完成导入、识别、人工确认、建单、面试推进和基础统计。

当前技术栈固定为:

  • Python 3.12
  • Django
  • SQLite
  • Django Templates
  • HTMX

默认本机访问地址:http://127.0.0.1:30110

给不太懂电脑的朋友

如果你朋友只是想把项目下载下来,然后尽快跑起来,直接照着下面做,不用研究别的。

第 1 步:先装 Python 3.12

brew install python@3.12

装完后确认一下:

python3.12 --version

第 2 步:下载项目

最推荐:

git clone https://github.com/mmhsdxwdxx/resume-ticket-system.git
cd resume-ticket-system

如果他不会用 Git,也可以在 GitHub 页面右上角点 Code -> Download ZIP,下载后解压,再进入项目目录。

第 3 步:双击 setup.command

也可以在终端执行:

./setup.command

它会自动打开一个安装页面。

第 4 步:把安装页面里的内容填完

  • DJANGO_SECRET_KEY 可以直接留空,系统会自动生成
  • MinerU / OpenAI / 阿里云 OCR 这些 Key 不确定的话可以先留空
  • 第一次安装一般要等 1 到 3 分钟,别中途关掉

第 5 步:打开页面开始用

安装完成后,直接打开:

  • http://127.0.0.1:30110
  • http://127.0.0.1:30110/welcome
  • http://127.0.0.1:30110/healthz

如果 healthz 能看到 status: ok,基本就说明装好了。

万一打不开,先做这 2 件事

./scripts/doctor.sh
./scripts/status_service.sh

看不懂报错也没关系,把输出贴给我就行。

这套项目现在能做什么

  • 上传 PDF、图片,或直接粘贴简历文本
  • 调用 MinerU Cloud API 做文档解析
  • MinerU 结果异常时回退到本地 PDF 文本提取或阿里云 OCR
  • 调用 OpenAI 兼容接口做结构化字段预填
  • 在待人工确认列表里做快捷建单或人工确认
  • 进入工单工作台,推进一面 / 二面 / 三面 / Offer / 入职流程
  • 在本机通过 launchd 做常驻运行

最快启动

1)准备环境

推荐 macOS + Python 3.12。

如果你的 Mac 还没有 Python 3.12,可以先安装:

brew install python@3.12

2)最省事的方式(推荐给朋友)

git clone https://github.com/mmhsdxwdxx/resume-ticket-system.git
cd resume-ticket-system
./setup.command

也可以在 Finder 里直接双击项目根目录的 setup.command

这个一键安装向导会自动:

  • 打开浏览器配置页,让你一次性填完常用 Key
  • 自动生成或更新 .env
  • 创建 .venv 并安装依赖
  • 执行数据库迁移和静态文件收集
  • 自动装好本机常驻服务
  • 自动把项目跑在 http://127.0.0.1:30110

说明:

  • Key 可以先留空,页面照样能打开
  • 但如果要用真实 MinerU、真实 LLM、真实阿里云 OCR,还是要填对应配置

3)手动方式(给熟悉命令行的人)

./scripts/bootstrap.sh

这一步会自动完成:

  • 创建 .venv
  • 安装依赖
  • 如果本地没有 .env,自动从 .env.example 复制
  • 执行数据库迁移
  • 执行 collectstatic
  • 执行 manage.py check

如果你想手动启动前台调试:

./scripts/start_local.sh

也可以直接执行:

./scripts/open_local.sh

停止:

./scripts/stop_local.sh

4)快速自检

./scripts/doctor.sh

第一次接手这个项目的人,建议先看:

  • docs/FRIEND_QUICKSTART.md
  • http://127.0.0.1:30110/welcome

macOS 常驻运行

如果你想让项目在自己电脑上长期挂着,或者朋友下载后想稳定常驻运行,直接用 launchd

安装常驻服务:

./scripts/install_service.sh

查看状态:

./scripts/status_service.sh

重启服务:

./scripts/restart_service.sh

卸载服务:

./scripts/uninstall_service.sh

说明:

  • 默认监听 127.0.0.1:30110
  • 默认使用 gunicorn + launchd
  • 登录后自动拉起,异常退出会自动重启
  • 所有 launchd 产物都会按当前机器路径自动生成,不进 Git

常用命令

./scripts/bootstrap.sh
./scripts/start_local.sh
./scripts/open_local.sh
./scripts/update_from_github.sh
./scripts/backup_local_data.sh
./scripts/restore_local_data.sh backups/<timestamp>
./scripts/doctor.sh
./scripts/install_service.sh
./scripts/status_service.sh
./scripts/restart_service.sh
./scripts/uninstall_service.sh
./.venv/bin/python manage.py check
./.venv/bin/python manage.py test
./.venv/bin/python manage.py createsuperuser

页面使用说明

推荐处理顺序:

  1. 导入简历:/imports/new
  2. 待人工确认列表:/imports/review-queue
  3. 工单工作台:/tickets/
  4. 工单详情:/tickets/<id>
  5. 统计页:/analytics/

更详细的页面使用说明见:

  • docs/FRIEND_QUICKSTART.md
  • docs/USER_GUIDE.md

给开发者的文档

  • docs/FRIEND_QUICKSTART.md:朋友拿到仓库后的最短上手路径
  • docs/DEVELOPMENT.md:开发说明、目录结构、常用命令、提交流程
  • docs/DEPLOY_MAC.md:另一台 Mac 从零部署指南
  • docs/RELEASE_CHECKLIST.md:发版本前逐条确认的清单
  • docs/ROLLBACK.md:更新后出问题时的回退路径
  • docs/USER_GUIDE.md:页面使用说明

项目目录

resume-ticket-system/
├── apps/
│   ├── analytics/
│   ├── imports/
│   └── tickets/
├── config/
├── docs/
├── scripts/
├── templates/
├── manage.py
├── requirements.txt
└── README.md

更新项目后的建议操作

如果你从 GitHub 拉了新代码,最省事的做法是直接执行:

./scripts/update_from_github.sh

如果你更喜欢手动更新,也可以:

git pull
./scripts/bootstrap.sh
./scripts/restart_service.sh

日志和排障

常驻日志默认写在:

  • runtime/logs/com.resume-ticket-system.web.stdout.log
  • runtime/logs/com.resume-ticket-system.web.stderr.log

如果页面打不开,建议按顺序检查:

./scripts/doctor.sh
./scripts/status_service.sh

如果只是想前台调试,直接执行:

./scripts/start_local.sh

环境变量清单

DJANGO_SECRET_KEY=
DEBUG=True
ALLOWED_HOSTS=127.0.0.1,localhost
MINERU_API_KEY=
MINERU_BASE_URL=https://mineru.net/api/v4
OPENAI_API_KEY=
OPENAI_BASE_URL=
OPENAI_MODEL=
ALIBABA_CLOUD_ACCESS_KEY_ID=
ALIBABA_CLOUD_ACCESS_KEY_SECRET=
ALIBABA_CLOUD_OCR_ENDPOINT=ocr-api.cn-hangzhou.aliyuncs.com

兼容性说明

这份项目目前优先保证:

  • macOS 本机运行稳定
  • Python 3.12 环境稳定
  • 从 GitHub 拉代码后可按文档直接初始化和启动

当前不承诺:

  • Windows 一键兼容
  • Linux 下的 launchd 常驻部署
  • 多机共享同一个 SQLite 数据库

健康检查

项目提供健康检查地址:

  • http://127.0.0.1:30110/healthz

正常情况下会返回 JSON,至少包含:

  • status: ok
  • database: ok

这在你朋友排查“服务到底有没有活着”时特别省事。

GitHub 自动检查

仓库已经带了 GitHub Actions。

每次 push / pull request 都会自动执行:

  • manage.py check
  • manage.py test

这样你和你朋友在更新代码前后,都更容易判断主分支是不是健康的。

首次启动引导页

项目现在提供了一个专门给新接手者看的页面:

  • http://127.0.0.1:30110/welcome

适合你朋友第一次打开时直接照着走。

数据备份和恢复

升级前建议先备份:

./scripts/backup_local_data.sh

如果要恢复某次备份:

./scripts/restore_local_data.sh backups/<timestamp>

默认会备份:

  • db.sqlite3
  • media/

备份目录会放在项目根目录下的 backups/,并且不会进 Git。

About

Single-machine resume ticket system built with Django, SQLite, HTMX, MinerU and OpenAI-compatible APIs.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages