# Resume Platform · 智能简历平台 [](https://go.dev/) [](https://gin-gonic.com/) [](https://www.sqlite.org/) [](LICENSE) [](#贡献指南) > 基于 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** ### 本地运行 ```bash # 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(推荐) ```bash docker-compose up -d ``` #### 手动构建 ```bash 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`,所有配置项均支持通过环境变量覆盖。 ```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.go` 的 `NewProvider` 工厂中注册 ### 数据库迁移 项目使用 `CREATE TABLE IF NOT EXISTS` + `migrateSchema` 机制自动处理表结构变更。新增列时在 `migrateSchema` 函数中添加对应 `ALTER TABLE ADD COLUMN` 语句即可,程序启动时自动执行。 ### 代码规范 ```bash # 格式化代码 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](https://www.conventionalcommits.org/) 规范 - 示例:`feat: add dark mode support`、`fix: correct user binding display` --- ## 📜 开源协议 本项目基于 **MIT License** 开源,详见 [LICENSE](LICENSE) 文件。 --- ## ⭐ 支持项目 如果这个项目对你有帮助,欢迎: - 点个 Star ⭐️ 让更多人看到 - 分享给身边需要的朋友 - 提交 Issue / PR 一起完善 ---
Made with ❤️ by Resume Platform Team