Files
resume/README.md
T

12 KiB
Raw Blame History

Resume Platform · 智能简历平台

Go Version Gin SQLite License PRs Welcome

基于 Go + Gin + SQLite 的现代化开源简历平台,内置 AI 面试助手、多模板支持、多人简历管理,让你的个人主页脱颖而出。


功能特性

📄 简历管理

  • 多人简历支持 — 每个人独立访问路由(如 /zhangsan/lisi),支持人员绑定与解绑
  • 多模板主题 — 内置 7 种精美模板(modern / classic / fresh / minimalist / professional / tech / project
  • 实时编辑 — 所见即所得的编辑体验,自动保存防止丢失
  • 访问密码 — 支持为简历设置独立访问密码,保护隐私
  • 数据脱敏 — 公开展示时自动脱敏手机号、邮箱等敏感信息

🤖 AI 智能面试

  • 智能出题 — 基于简历内容或关键词自动生成面试题,支持选择题、填空题、简答题、算法题
  • 多 AI 提供商 — 接入 DeepSeek / 豆包 / 讯飞星火 / 通义千问,自由切换
  • 关键词驱动 — 智能提取简历技能作为关键词,支持别名扩展,每次生成随机不重复
  • 答题记录 — 完整记录每次答题情况,支持查看历史、重练错题
  • 收藏 & 错题本 — 一键收藏好题,错题自动入库,针对性复习

🎨 作品集展示

  • 独立作品集页 — 每个用户拥有专属作品集展示页面
  • 项目关联 — 支持从简历项目中导入,也可独立创建
  • 分类筛选 — 按技术栈、类型快速筛选项目
  • 首页精选 — 可设置首页展示的精选项目

🛡️ 安全保障

  • 后台隐藏路径 — 自定义管理后台 URL,降低被探测风险
  • 登录验证码 — 图形验证码防止机器人暴力破解
  • 登录限流 — 基于 IP 的登录次数限制,超出自动锁定
  • AES 加密 — 数据库支持 AES-GCM 加密存储,敏感数据更安全
  • PBKDF2 密钥派生 — 使用 PBKDF2-SHA256 派生加密密钥

📊 管理后台

  • 仪表盘 — 数据总览,快速了解平台运行状态
  • 用户管理 — 完整的用户 CRUD,支持状态管理
  • 简历管理 — 统一管理所有简历,支持绑定/解绑人员
  • 答题管理 — 查看用户答题记录、学习进度
  • 菜单管理 — 自定义后台导航菜单
  • 系统设置 — 站点名称、Logo、SEO 等配置可视化管理
  • 全局搜索 — 一键搜索用户、简历、作品集

🏗️ 技术栈

类别 技术 版本
语言 Go 1.25+
Web 框架 Gin v1.9.1
数据库 SQLite (modernc.org/sqlite) v1.26.0
AI Agent CloudWeGo Eino v0.9.12
配置管理 Viper v1.18.2
验证码 base64Captcha v1.3.2
前端 HTML Template + Tailwind CSS + Font Awesome
部署 Docker / Docker Compose

📁 项目结构

resume-platform/
├── cmd/
│   ├── server/              # 主服务入口
│   │   └── main.go
│   └── checkdb/             # 数据库检查工具
│       └── main.go
├── config/
│   └── config.yaml          # 应用配置文件
├── internal/
│   ├── agent/               # AI Agent 层(Eino
│   │   ├── config.go
│   │   └── tools.go         # 题目生成、答案解析等工具
│   ├── ai/                  # AI 提供商适配层
│   │   ├── provider.go      # 统一接口定义
│   │   ├── deepseek.go
│   │   ├── doubao.go
│   │   ├── spark.go
│   │   └── tongyi.go
│   ├── handler/             # HTTP 处理器
│   │   ├── admin.go         # 管理后台
│   │   ├── ai.go            # AI 相关接口
│   │   ├── chat.go          # AI 对话接口
│   │   ├── document.go      # 文档解析接口
│   │   ├── response.go      # 统一响应格式
│   │   └── resume.go        # 简历/作品集/答题 API
│   ├── model/               # 数据模型
│   │   ├── resume.go        # 简历、用户、题目、作品集等
│   │   └── document.go
│   ├── parser/              # 简历解析
│   │   └── parser.go
│   ├── repository/          # 数据访问层
│   │   ├── interface.go     # 仓库接口定义
│   │   └── sqlite.go        # SQLite 实现
│   ├── router/              # 路由配置
│   │   ├── router.go        # 路由总入口
│   │   ├── admin.go         # 管理后台路由
│   │   ├── api.go           # REST API 路由
│   │   └── frontend.go      # 前端页面路由
│   ├── security/            # 安全模块
│   │   ├── captcha.go       # 验证码
│   │   └── rate_limiter.go  # 登录限流
│   └── service/             # 业务逻辑层
│       ├── ai_service.go    # AI 服务
│       ├── chat.go          # 对话服务
│       ├── document.go      # 文档服务
│       ├── resume.go        # 简历服务
│       └── vector.go        # 向量服务
├── pkg/
│   └── config/              # 公共配置包
│       └── config.go
├── static/                  # 静态资源
│   ├── images/
│   └── js/
├── templates/               # HTML 模板
│   ├── admin/               # 管理后台模板
│   └── web/                 # 前端展示模板
├── data/                    # 数据库文件(运行时生成)
├── logs/                    # 日志文件(运行时生成)
├── Dockerfile
├── docker-compose.yml
├── go.mod
└── go.sum

🚀 快速开始

环境要求

  • Go 1.25+(推荐使用最新稳定版)
  • Docker / Docker Compose

本地运行

# 1. 克隆项目
git clone https://github.com/yourusername/resume-platform.git
cd resume-platform

# 2. 安装依赖
go mod download

# 3. 运行服务
go run cmd/server/main.go

服务启动后:

地址 说明
http://localhost:8090 产品首页
http://localhost:8090/default 默认简历示例
http://localhost:8090/my-secret-admin-123 管理后台(默认路径)

默认账号admin / admin123456

⚠️ 生产环境请务必修改默认密码和后台路径!

Docker 部署

使用 Docker Compose(推荐)

docker-compose up -d

手动构建

docker build -t resume-platform .
docker run -d \
  -p 8090:8090 \
  -v $(pwd)/data:/app/data \
  -v $(pwd)/logs:/app/logs \
  --name resume-platform \
  resume-platform

⚙️ 配置说明

配置文件位于 config/config.yaml,所有配置项均支持通过环境变量覆盖。

server:
  host: "0.0.0.0"           # 监听地址
  port: 8090                # 监听端口
  mode: "release"           # Gin 模式:debug / release

database:
  type: "sqlite"            # 数据库类型(目前仅支持 SQLite)
  path: "./data/resume.db"  # 数据库文件路径
  password: "resume@2024"   # 数据库加密密码

auth:
  enabled: true             # 是否启用后台认证
  username: "admin"         # 管理员用户名
  password: "admin123456"   # 管理员密码
  admin_path: "/my-secret-admin-123"  # 后台路径(建议修改)
  max_login_attempts: 5     # 最大登录尝试次数
  lockout_duration: 15      # 锁定时长(分钟)

template:
  default: "modern"         # 默认简历模板

log:
  level: "info"             # 日志级别
  output: "./logs/app.log"  # 日志输出路径

ai:
  provider: "spark"         # AI 提供商:spark / tongyi / doubao / deepseek
  enabled: true             # 是否启用 AI 功能
  spark:                    # 讯飞星火配置
    api_password: ""
    base_url: ""
    model: "lite"
    max_tokens: 1024
    timeout: 30
  # 其他 AI 提供商配置...

🔌 API 概览

简历接口

方法 路径 说明
GET /api/resume/:id 获取单份简历
GET /api/resume/by-route/:route 按路由获取简历
POST /api/resume 创建简历
PUT /api/resume/:id 更新简历
DELETE /api/resume/:id 删除简历
GET /api/user/resumes 获取指定用户的简历列表

AI 答题接口

方法 路径 说明
POST /api/ai/agent/generate-questions 生成面试题
POST /api/ai/agent/submit-answers 提交答案并评分
POST /api/ai/agent/evaluate-answers 评估答案

收藏 & 错题

方法 路径 说明
POST /api/favorite 添加收藏/错题
GET /api/favorite 获取收藏/错题列表
DELETE /api/favorite/:id 删除收藏/错题
PUT /api/favorite/:id/toggle 切换收藏状态

作品集接口

方法 路径 说明
GET /api/portfolio 获取作品集列表
POST /api/portfolio 创建作品集项目
GET /api/portfolio/:id 获取单个项目
PUT /api/portfolio/:id 更新项目
DELETE /api/portfolio/:id 删除项目

管理后台

所有管理接口前缀为 {admin_path}/(默认 /my-secret-admin-123/)。


🧩 模板系统

内置 7 种精美模板,支持随时切换:

模板 风格 适用场景
modern 现代简约 通用型,推荐首选
classic 经典商务 传统行业、资深岗位
fresh 清新活力 应届生、设计岗
minimalist 极简主义 追求简洁表达
professional 专业职业 管理岗、专业岗
tech 技术导向 程序员、工程师
project 项目展示 突出项目经验

模板文件位于 templates/web/,可基于现有模板自定义新主题。


🛠️ 开发指南

添加新模板

  1. templates/web/ 目录下创建 your-template.html
  2. 继承 base.html 的结构,使用 Go 模板语法访问 .Resume 数据
  3. resume.Template 字段设置模板名称即可

添加新的 AI 提供商

  1. internal/ai/ 下创建 yourprovider.go
  2. 实现 AIProvider 接口
  3. provider.goNewProvider 工厂中注册

数据库迁移

项目使用 CREATE TABLE IF NOT EXISTS + migrateSchema 机制自动处理表结构变更。新增列时在 migrateSchema 函数中添加对应 ALTER TABLE ADD COLUMN 语句即可,程序启动时自动执行。

代码规范

# 格式化代码
gofmt -w .

# 静态检查
go vet ./...

# 构建检查
go build ./...

🤝 贡献指南

欢迎提交 Issue 和 Pull Request

贡献流程

  1. Fork 本仓库
  2. 创建特性分支:git checkout -b feature/AmazingFeature
  3. 提交更改:git commit -m 'Add some AmazingFeature'
  4. 推送到分支:git push origin feature/AmazingFeature
  5. 打开 Pull Request

提交规范

  • 使用 Conventional Commits 规范
  • 示例:feat: add dark mode supportfix: correct user binding display

📜 开源协议

本项目基于 MIT License 开源,详见 LICENSE 文件。


支持项目

如果这个项目对你有帮助,欢迎:

  • 点个 Star 让更多人看到
  • 分享给身边需要的朋友
  • 提交 Issue / PR 一起完善

Made with ❤️ by Resume Platform Team