v4.2 冲刺版+每日推送+支付修复+全量代码评审
## 新增功能 - 冲刺版 ¥49.9/月:完整支付→激活→权益扣减链路 - 每日一题定时推送(@nestjs/schedule,早8点微信订阅消息) - miniprogram-ci 编译上传脚本(scripts/upload-mp.js) ## Bug修复 - 套餐值统一:vip→growth/sprint(interview轮次限制、analyze次数检查) - member/pay 移除开发绕过:改为订单校验后激活 - progress→report 参数名不匹配:id→interviewId - result.vue resume.create() 参数传错(对象→独立参数) - resume.vue analyze请求缺少Authorization header - bank.vue contribution请求缺少Authorization header - member.vue startPay() 缺少try/catch导致网络错误崩溃 - login.vue 调试面板 v-if="true" 生产泄漏 ## 配置 - 微信支付生产证书就位(商户号1113760598) - .env 清理冗余文件(删除.example/.production) - WX_NOTIFY_URL 更新为 zhiyinwx.yzrcloud.cn ## 文档 - PROJECT-STATUS.md v4.1→v4.2,状态全面更新 - DEPLOYMENT.md 新增小程序编译上传章节、清理检查清单
This commit is contained in:
+197
-343
@@ -1,9 +1,9 @@
|
||||
# 职引 — 技术架构文档 v3.0
|
||||
# 职引 — 技术架构文档 v4.0
|
||||
|
||||
> 版本: v3.0
|
||||
> 日期: 2026-06-01
|
||||
> 状态: 重新定位后
|
||||
> 定位: 应届生/实习生 AI 面试教练
|
||||
> **版本**: v4.0
|
||||
> **日期**: 2026-06-09
|
||||
> **状态**: Phase 0.5 完成
|
||||
> **定位**: 应届生/实习生 AI 面试教练
|
||||
|
||||
---
|
||||
|
||||
@@ -17,403 +17,256 @@
|
||||
| Vue | 3.4 | 框架 |
|
||||
| TypeScript | 5.x | 类型安全 |
|
||||
| Vite | 5.x | 构建工具 |
|
||||
| Pinia | 2.x | 状态管理(用户状态、面试会话) |
|
||||
| SCSS | - | 样式预处理 |
|
||||
|
||||
### 1.2 后端
|
||||
|
||||
| 技术 | 版本 | 用途 |
|
||||
|------|------|------|
|
||||
| Node.js | 18+ | 运行环境 |
|
||||
| NestJS | 10.x | 框架(模块化,适合快速迭代) |
|
||||
| MongoDB + Mongoose | 7.x | 数据库(灵活 schema,适合快速迭代) |
|
||||
| MongoDB Atlas | - | 免费层起步,0 成本启动 |
|
||||
| JWT | - | 用户认证(微信登录对接后使用) |
|
||||
| NestJS | 10.x | 框架 |
|
||||
| MongoDB + Mongoose | 7.x | 数据库 |
|
||||
| JWT | - | 认证 |
|
||||
| class-validator | - | 参数校验 |
|
||||
| 微信支付 | - | 会员付费(Phase 1.5 接入) |
|
||||
|
||||
### 1.3 AI 能力
|
||||
|
||||
| 技术 | 用途 | 优先级 |
|
||||
|------|------|--------|
|
||||
| opencode-go (deepseek-v4-flash) | 面试模拟、简历诊断、面试报告 | 主用 |
|
||||
| opencode-go (deepseek-v4-flash) | 面试模拟、简历诊断、报告 | 主用 |
|
||||
| NVIDIA (stepfun-ai/step-3.5-flash) | 主用不可用时自动切换 | 备用 |
|
||||
|
||||
### 1.4 部署
|
||||
|
||||
| 技术 | 用途 |
|
||||
|------|------|
|
||||
| 腾讯云轻量应用服务器 | 后端部署(个人开发者友好,已 ICP 备案) |
|
||||
| 微信小程序云开发(可选) | 静态资源 + 云函数(快速原型) |
|
||||
| Nginx | 反向代理(HTTPS 终止) |
|
||||
| 腾讯云轻量应用服务器 | 后端部署(已 ICP 备案) |
|
||||
| Nginx | 反向代理(HTTPS 终止) + H5 静态文件服务 |
|
||||
| PM2 | 进程管理 |
|
||||
|
||||
**生产域名**:
|
||||
| 域名 | 用途 | 指向 |
|
||||
|------|------|------|
|
||||
| `zhiyinwx.yzrcloud.cn` | 后端 API(小程序服务端 + H5 API) | Nginx → `localhost:3006` |
|
||||
| `zhiyin.yzrcloud.cn` | H5 网页端 | `/www/wwwroot/zhiyin.yzrcloud.cn` |
|
||||
|
||||
---
|
||||
|
||||
## 二、项目结构(简化版,MVP 优先)
|
||||
## 二、项目结构
|
||||
|
||||
```
|
||||
zhiyin/
|
||||
├── zhiyin-app/ # 小程序前端
|
||||
│ ├── src/
|
||||
│ │ ├── pages/ # 页面
|
||||
│ │ │ ├── index/ # 首页(岗位选择 + 面试入口)
|
||||
│ │ │ ├── interview/ # 面试模拟(核心页面)
|
||||
│ │ │ ├── report/ # 面试报告
|
||||
│ │ │ ├── history/ # 历史面试记录
|
||||
│ │ │ ├── resume/ # 简历诊断(Phase 1.5)
|
||||
│ │ │ ├── internship/ # 实习搜索聚合(MVP 跳转模式)
|
||||
│ │ │ ├── user/ # 个人中心
|
||||
│ │ │ └── member/ # 会员中心(Phase 1.5)
|
||||
│ │ ├── components/ # 组件
|
||||
│ │ ├── services/ # API 服务
|
||||
│ │ ├── stores/ # Pinia 状态
|
||||
│ │ ├── styles/ # 全局样式
|
||||
│ │ ├── utils/ # 工具函数
|
||||
│ │ ├── App.vue
|
||||
│ │ └── main.ts
|
||||
│ ├── package.json
|
||||
│ ├── vite.config.js
|
||||
│ └── manifest.json # 小程序配置(AI 深度合成类目已通过)
|
||||
│ └── src/
|
||||
│ ├── pages/ # 16 个页面
|
||||
│ │ ├── index/ # 首页(Tab: 面试)
|
||||
│ │ ├── interview/ # 面试模拟
|
||||
│ │ ├── report/ # 面试报告
|
||||
│ │ ├── history/ # 历史记录(Tab: 面经)
|
||||
│ │ ├── user/ # 个人中心(Tab: 我的)
|
||||
│ │ ├── login/ # 登录/注册
|
||||
│ │ ├── member/ # 会员中心
|
||||
│ │ ├── progress/ # 进步轨迹雷达图
|
||||
│ │ ├── contribute/ # 面经贡献
|
||||
│ │ ├── resume/ # 简历诊断/优化
|
||||
│ │ ├── result/ # 优化结果
|
||||
│ │ ├── internship/ # 实习搜索
|
||||
│ │ ├── admin/ # 管理后台
|
||||
│ │ ├── about/ # 关于
|
||||
│ │ ├── agreement/ # 用户协议
|
||||
│ │ └── privacy/ # 隐私政策
|
||||
│ ├── services/api.ts # API 服务封装
|
||||
│ ├── config.ts # 全局配置/端点定义
|
||||
│ ├── pages.json # 路由表(3 Tab + 13 页面)
|
||||
│ └── manifest.json # 小程序配置
|
||||
│
|
||||
├── backend/ # 后端服务
|
||||
│ ├── src/
|
||||
│ │ ├── common/ # 公共模块
|
||||
│ │ │ ├── filters/ # 异常过滤器
|
||||
│ │ │ ├── guards/ # 权限守卫(JWT)
|
||||
│ │ │ ├── interceptors/ # 拦截器(日志、响应格式)
|
||||
│ │ │ └── utils/ # 工具函数
|
||||
│ │ ├── config/ # 配置文件(数据库、AI API、微信)
|
||||
│ │ ├── dto/ # 数据传输对象
|
||||
│ │ ├── modules/ # 业务模块(MVP 只做 3 个核心模块)
|
||||
│ │ │ ├── interview/ # 面试模块(核心,P0)
|
||||
│ │ │ ├── user/ # 用户模块(微信登录,P0)
|
||||
│ │ │ ├── resume/ # 简历模块(Phase 1.5,P1)
|
||||
│ │ │ ├── member/ # 会员模块(Phase 1.5,P1)
|
||||
│ │ │ ├── internship/ # 实习搜索模块(MVP 跳转,P1)
|
||||
│ │ │ └── knowledge/ # 知识图谱模块(Phase 2,P2)
|
||||
│ │ ├── ai/ # AI 能力封装(opencode-go + NVIDIA 切换)
|
||||
│ │ ├── wechat/ # 微信相关(登录、支付、订阅消息)
|
||||
│ │ ├── app.module.ts
|
||||
│ │ └── main.ts
|
||||
│ ├── package.json
|
||||
│ └── tsconfig.json
|
||||
├── backend/ # 后端服务 (NestJS)
|
||||
│ └── src/
|
||||
│ ├── main.ts # 入口(端口 3006, 前缀 /api)
|
||||
│ ├── app.module.ts # 根模块(导入全部 14 个子模块)
|
||||
│ ├── common/ # 公共模块
|
||||
│ │ ├── decorators/ # @CurrentUser, @Public
|
||||
│ │ ├── guards/ # JwtAuthGuard
|
||||
│ │ ├── strategies/ # JwtStrategy
|
||||
│ │ └── filters/ # AllExceptionsFilter
|
||||
│ └── modules/ # 15 个业务模块
|
||||
│ ├── user/ # 用户(手机/邮箱/密码/微信登录)
|
||||
│ ├── interview/ # AI 面试(核心,含进度追踪)
|
||||
│ ├── ai/ # AI 调用封装(主/备切换)
|
||||
│ ├── analyze/ # 简历诊断/优化 AI 分析
|
||||
│ ├── resume/ # 简历 CRUD
|
||||
│ ├── member/ # 会员套餐/状态
|
||||
│ ├── payment/ # 微信支付 v3(签名/解密/回调)
|
||||
│ ├── positions/ # 热门岗位维护
|
||||
│ ├── upload/ # 文件上传
|
||||
│ ├── admin/ # 管理后台 API
|
||||
│ ├── email/ # 邮件发送
|
||||
│ ├── progress/ # 进步轨迹四维统计
|
||||
│ ├── contribution/ # 面经贡献 + 公司题库
|
||||
│ ├── daily-question/ # 每日一题(待完善推送)
|
||||
│ └── schemas/ # 共享数据模型(5 个 schema)
|
||||
│
|
||||
└── docs/ # 项目文档
|
||||
├── PRODUCT-PLAN.md # 产品规划(✅ 已更新 v3.0)
|
||||
├── ARCHITECTURE.md # 架构文档(✅ 当前文件)
|
||||
├── FEATURE-LIST.md # 功能清单(待更新)
|
||||
├── ROADMAP.md # 路线图(待更新)
|
||||
└── PROJECT-STATUS.md # 进度文档(待更新)
|
||||
└── docs/ # 项目文档
|
||||
├── PRODUCT-PLAN.md
|
||||
├── ARCHITECTURE.md
|
||||
├── FEATURE-LIST.md
|
||||
├── ROADMAP.md
|
||||
├── PROJECT-STATUS.md
|
||||
├── DEPLOYMENT.md
|
||||
└── WECHAT-CHECKLIST.md
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 三、核心数据模型(简化,快速迭代)
|
||||
## 三、数据模型
|
||||
|
||||
### 3.1 用户(User)
|
||||
|
||||
```javascript
|
||||
{
|
||||
_id: ObjectId,
|
||||
openid: String, // 微信 openid(唯一标识)
|
||||
nickname: String, // 微信昵称
|
||||
avatar: String, // 微信头像
|
||||
targetPosition: String, // 目标岗位(校招热门岗位)
|
||||
targetIndustry: String, // 目标行业
|
||||
memberStatus: { // 会员状态
|
||||
type: String, // free/vip
|
||||
expireAt: Date,
|
||||
},
|
||||
usage: { // 使用统计
|
||||
dailyInterviewCount: Number, // 每日面试次数
|
||||
totalInterviewCount: Number, // 总面试次数
|
||||
lastResetDate: Date,
|
||||
},
|
||||
createdAt: Date,
|
||||
updatedAt: Date
|
||||
}
|
||||
### 3.1 用户 (User)
|
||||
```
|
||||
phone, wxOpenid, email, password, nickname, avatar
|
||||
plan (free/growth), remaining, vipExpireAt
|
||||
role (user/admin), isSystemAdmin
|
||||
interviewCount
|
||||
```
|
||||
|
||||
### 3.2 面试会话(Interview)—— 核心模型
|
||||
|
||||
```javascript
|
||||
{
|
||||
_id: ObjectId,
|
||||
userId: ObjectId,
|
||||
position: String, // 面试岗位(如"前端工程师")
|
||||
status: String, // pending/active/completed
|
||||
rounds: [{ // 问答轮次
|
||||
question: String, // AI 问题
|
||||
answer: String, // 用户回答
|
||||
feedback: { // AI 反馈
|
||||
score: Number, // 本题得分(0-100)
|
||||
comment: String, // 评语
|
||||
suggestion: String, // 改进建议
|
||||
referenceAnswer: String, // 参考回答思路
|
||||
},
|
||||
createdAt: Date,
|
||||
}],
|
||||
summary: { // 面试总结
|
||||
totalScore: Number, // 总分(0-100)
|
||||
strengths: [String], // 优势
|
||||
weaknesses: [String], // 不足
|
||||
suggestions: [String], // 综合建议
|
||||
dimensionScores: { // 各维度得分
|
||||
logic: Number, // 逻辑思维
|
||||
expression: Number, // 表达能力
|
||||
professionalism: Number, // 专业度
|
||||
stability: Number, // 情绪稳定性
|
||||
},
|
||||
},
|
||||
createdAt: Date,
|
||||
completedAt: Date
|
||||
}
|
||||
### 3.2 面试 (Interview)
|
||||
```
|
||||
userId, position, status (in_progress/completed)
|
||||
messages[{role, content, score, feedback, suggestion}]
|
||||
totalScore, questionCount
|
||||
summary{dimensionScores{logic,expression,professionalism,stability}, strengths, weaknesses, suggestions}
|
||||
```
|
||||
|
||||
### 3.3 简历(Resume)—— Phase 1.5
|
||||
|
||||
```javascript
|
||||
{
|
||||
_id: ObjectId,
|
||||
userId: ObjectId,
|
||||
title: String, // 简历标题
|
||||
originalContent: String, // 原始内容
|
||||
targetPosition: String, // 目标岗位
|
||||
createdAt: Date,
|
||||
updatedAt: Date
|
||||
}
|
||||
### 3.3 进步轨迹 (Progress)
|
||||
```
|
||||
userId, totalInterviews, completedInterviews
|
||||
avgLogic, avgExpression, avgProfessionalism, avgStability
|
||||
streak, lastInterviewDate, streakHistory
|
||||
recentScores[{interviewId, date, position, totalScore, dimensions}]
|
||||
```
|
||||
|
||||
### 3.4 岗位题库(QuestionBank)—— Phase 2 知识图谱前置
|
||||
### 3.4 面经贡献 (Contribution)
|
||||
```
|
||||
userId, interviewId, company, position, rounds, questions, experience, tags, verified
|
||||
```
|
||||
|
||||
```javascript
|
||||
{
|
||||
_id: ObjectId,
|
||||
position: String, // 岗位名称(如"前端工程师")
|
||||
category: String, // 分类(技术/职能/AI专项)
|
||||
difficulty: String, // 难度(junior/mid/senior)
|
||||
questions: [{
|
||||
content: String, // 问题内容
|
||||
type: String, // 类型(basic/algorithm/project/behavioral)
|
||||
referenceAnswer: String, // 参考回答
|
||||
tags: [String], // 标签(如"闭包"、"贪心算法")
|
||||
}],
|
||||
createdAt: Date,
|
||||
updatedAt: Date
|
||||
}
|
||||
### 3.5 公司题库 (CompanyBank)
|
||||
```
|
||||
company, position
|
||||
questions[{content, type, referenceAnswer, difficulty, frequency, tags}]
|
||||
contributionCount, viewCount
|
||||
```
|
||||
|
||||
### 3.6 每日一题 (DailyQuestion)
|
||||
```
|
||||
position, question, referenceAnswer, category, date, pushed
|
||||
```
|
||||
|
||||
### 3.7 支付订单 (PaymentOrder)
|
||||
```
|
||||
outTradeNo, userId, amount, status, channel (native/jsapi)
|
||||
paidAt, wxTransactionId, refundAmount, refundedAt
|
||||
```
|
||||
|
||||
### 3.8 简历/岗位
|
||||
```
|
||||
Resume: userId, title, originalContent, targetPosition
|
||||
HotPosition: name, salary, company, icon, sort, active
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 四、API 接口设计(MVP 核心接口)
|
||||
## 四、API 接口总览
|
||||
|
||||
### 4.1 用户模块(微信登录)
|
||||
### 4.1 用户 (prefix: `/api/user`)
|
||||
| 方法 | 路径 | 说明 |
|
||||
|------|------|------|
|
||||
| POST | `/send-code` | 发送手机验证码 |
|
||||
| POST | `/login` | 手机号+验证码登录 |
|
||||
| POST | `/send-email-code` | 发送邮箱验证码 |
|
||||
| POST | `/email-login` | 邮箱+验证码登录 |
|
||||
| POST | `/password-login` | 邮箱+密码登录 |
|
||||
| POST | `/register` | 邮箱+密码注册 |
|
||||
| POST | `/wx-login` | 微信静默登录 |
|
||||
| GET | `/info` | 获取用户信息 |
|
||||
| PUT | `/update` | 更新用户信息 |
|
||||
| GET | `/usage` | 获取使用额度 |
|
||||
| POST | `/set-password` | 设置密码 |
|
||||
|
||||
| 接口 | 方法 | 路径 | 说明 |
|
||||
|------|------|------|------|
|
||||
| 微信登录 | POST | /api/user/wx-login | 微信授权登录,返回 token |
|
||||
| 获取用户信息 | GET | /api/user/info | 获取用户信息 |
|
||||
| 更新用户信息 | PUT | /api/user/update | 更新目标岗位/行业 |
|
||||
### 4.2 面试 (prefix: `/api/interview`)
|
||||
| 方法 | 路径 | 说明 |
|
||||
|------|------|------|
|
||||
| POST | `/create` | 创建面试 |
|
||||
| POST | `/:id/answer` | 提交回答 |
|
||||
| POST | `/:id/complete` | 完成面试生成报告 |
|
||||
| GET | `/:id` | 获取面试详情 |
|
||||
| GET | `/list/all` | 面试历史列表 |
|
||||
| GET | `/stats/mine` | 用户统计 |
|
||||
|
||||
### 4.2 面试模块(核心)
|
||||
### 4.3 简历/AI 分析 (prefix: `/api/analyze`, `/api/resume`)
|
||||
| 方法 | 路径 | 说明 |
|
||||
|------|------|------|
|
||||
| POST | `/analyze/diagnosis` | AI 简历诊断 |
|
||||
| POST | `/analyze/optimize` | AI 简历优化 |
|
||||
| POST | `/resume/create` | 创建简历 |
|
||||
| GET | `/resume/list` | 简历列表 |
|
||||
| DELETE | `/resume/:id` | 删除简历 |
|
||||
|
||||
| 接口 | 方法 | 路径 | 说明 |
|
||||
|------|------|------|------|
|
||||
| 创建面试 | POST | /api/interview/create | 创建面试会话(选岗位) |
|
||||
| 获取面试 | GET | /api/interview/:id | 获取面试详情 |
|
||||
| 面试列表 | GET | /api/interview/list | 获取用户面试列表 |
|
||||
| 提交回答 | POST | /api/interview/:id/answer | 提交本轮回答 |
|
||||
| 获取反馈 | GET | /api/interview/:id/feedback | 获取本轮反馈 |
|
||||
| 结束面试 | POST | /api/interview/:id/complete | 结束面试生成报告 |
|
||||
### 4.4 会员/支付 (prefix: `/api/member`, `/api/payment`)
|
||||
| 方法 | 路径 | 说明 |
|
||||
|------|------|------|
|
||||
| GET | `/member/plans` | 套餐配置 |
|
||||
| GET | `/member/status` | 会员状态 |
|
||||
| POST | `/member/pay` | ⚠️ 开发绕过(上线前移除) |
|
||||
| POST | `/payment/create` | 创建 Native 支付订单 |
|
||||
| POST | `/payment/jsapi` | 创建 JSAPI 支付 |
|
||||
| POST | `/payment/notify` | 微信支付回调 |
|
||||
| POST | `/payment/query` | 查询订单状态 |
|
||||
|
||||
### 4.3 实习搜索模块(MVP 跳转模式)
|
||||
### 4.5 Phase 0.5 (prefix: `/api/progress`, `/api/contribution`, `/api/daily-question`)
|
||||
| 方法 | 路径 | 说明 |
|
||||
|------|------|------|
|
||||
| GET | `/progress` | 进步轨迹数据 |
|
||||
| GET | `/progress/stats` | 进步轨迹统计 |
|
||||
| POST | `/contribution` | 提交面经贡献 |
|
||||
| GET | `/contribution/my` | 我的贡献列表 |
|
||||
| GET | `/contribution/company/:c/position/:p` | 公司题库查询 |
|
||||
| GET | `/contribution/company/:c` | 公司岗位列表 |
|
||||
| GET | `/daily-question` | 获取每日一题 |
|
||||
| GET | `/daily-question/position/:p` | 按岗位获取题目 |
|
||||
|
||||
| 接口 | 方法 | 路径 | 说明 |
|
||||
|------|------|------|------|
|
||||
| 实习搜索 | GET | /api/internship/search | 搜索实习岗位(聚合入口) |
|
||||
| 热门实习 | GET | /api/internship/hot | 热门实习岗位列表 |
|
||||
|
||||
> MVP 阶段:不存数据,只做搜索聚合入口(跳转模式),低成本验证用户需求。
|
||||
|
||||
### 4.4 简历模块(Phase 1.5)
|
||||
|
||||
| 接口 | 方法 | 路径 | 说明 |
|
||||
|------|------|------|------|
|
||||
| 创建简历 | POST | /api/resume/create | 创建简历记录 |
|
||||
| 诊断简历 | POST | /api/resume/diagnosis | AI 诊断简历问题 |
|
||||
|
||||
### 4.5 会员模块(Phase 1.5)
|
||||
|
||||
| 接口 | 方法 | 路径 | 说明 |
|
||||
|------|------|------|------|
|
||||
| 会员订阅 | POST | /api/member/subscribe | 微信支付订阅 |
|
||||
| 获取会员状态 | GET | /api/member/status | 获取会员信息 |
|
||||
### 4.6 其他
|
||||
| 方法 | 路径 | 说明 |
|
||||
|------|------|------|
|
||||
| GET | `/positions/hot` | 热门岗位 |
|
||||
| POST | `/upload` | 文件上传 |
|
||||
| GET | `/admin/*` | 管理后台接口 |
|
||||
|
||||
---
|
||||
|
||||
## 五、AI 面试模拟核心流程
|
||||
## 五、部署架构
|
||||
|
||||
```
|
||||
用户选择岗位
|
||||
微信小程序 (用户端) H5 浏览器 (用户端)
|
||||
↓ HTTPS ↓ HTTPS
|
||||
zhiyinwx.yzrcloud.cn zhiyin.yzrcloud.cn
|
||||
↓ ↓
|
||||
Nginx 反向代理 (腾讯云轻量应用服务器) Nginx 静态文件服务
|
||||
↓ ↓
|
||||
backend (NestJS :3006) /www/wwwroot/zhiyin.yzrcloud.cn/
|
||||
↓
|
||||
创建面试会话(/api/interview/create)
|
||||
↓
|
||||
AI 生成第一题(基于岗位 + 用户简历)
|
||||
↓
|
||||
用户语音/文字回答
|
||||
↓
|
||||
提交回答(/api/interview/:id/answer)
|
||||
↓
|
||||
AI 实时反馈(评分 + 评语 + 建议 + 参考回答)
|
||||
↓
|
||||
AI 追问(基于回答内容)
|
||||
↓
|
||||
循环(通常 5-8 轮)
|
||||
↓
|
||||
用户结束面试
|
||||
↓
|
||||
生成面试报告(/api/interview/:id/complete)
|
||||
↓
|
||||
展示报告(总分 + 各维度得分 + 优劣势 + 建议)
|
||||
```
|
||||
|
||||
### 5.1 AI Prompt 设计要点
|
||||
|
||||
**系统提示词(System Prompt)**:
|
||||
```
|
||||
你是一位专业的校招面试官,正在面试一位应聘{position}岗位的应届毕业生。
|
||||
请根据以下要求进行了面试:
|
||||
1. 问题要符合校招难度(不要求工作经验)
|
||||
2. 结合应聘岗位提出专业问题
|
||||
3. 根据考生回答进行针对性追问
|
||||
4. 每次回答后给出评分(0-100)和具体改进建议
|
||||
5. 面试共 5-8 轮,涵盖基础、项目、算法(如适用)、行为问题
|
||||
```
|
||||
|
||||
**反馈提示词(Feedback Prompt)**:
|
||||
```
|
||||
请对以下面试回答进行评分和反馈:
|
||||
问题:{question}
|
||||
回答:{answer}
|
||||
岗位:{position}
|
||||
|
||||
输出格式(JSON):
|
||||
{
|
||||
"score": 85,
|
||||
"comment": "回答逻辑清晰,但缺少具体案例...",
|
||||
"suggestion": "建议结合项目经历,用STAR法则组织回答",
|
||||
"referenceAnswer": "参考回答思路:..."
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 六、部署架构
|
||||
|
||||
```
|
||||
微信小程序 (用户端)
|
||||
↓ HTTPS
|
||||
Nginx 反向代理(腾讯云轻量应用服务器)
|
||||
↓
|
||||
backend (NestJS :3000)
|
||||
↓
|
||||
MongoDB Atlas (数据库)
|
||||
MongoDB Atlas / 自建 MongoDB
|
||||
↓
|
||||
AI API (opencode-go → NVIDIA 主备切换)
|
||||
```
|
||||
|
||||
### 6.1 合规优势
|
||||
|
||||
- ✅ **ICP 备案已完成**(合规运营基础)
|
||||
- ✅ **AI 深度合成类目已通过**(可立即上线,竞品需 3-6 个月)
|
||||
- ✅ 微信小程序已配置(manifest.json)
|
||||
|
||||
---
|
||||
|
||||
## 七、关键技术决策
|
||||
## 六、安全与合规
|
||||
|
||||
### 7.1 为什么继续用 NestJS + MongoDB?
|
||||
|
||||
- 已有代码基础,重写浪费时间
|
||||
- NestJS 模块化适合快速迭代(MVP → Phase 1.5 → Phase 2)
|
||||
- MongoDB 灵活的数据模型适合快速改 schema(早期频繁迭代)
|
||||
- 个人开发者能 hold 住(社区资源丰富)
|
||||
|
||||
### 7.2 为什么 MVP 先做 3 个核心模块?
|
||||
|
||||
- **面试模块**(核心差异,必须做好)
|
||||
- **用户模块**(微信登录,0 门槛)
|
||||
- **实习搜索**(跳转模式,低成本验证需求)
|
||||
|
||||
其他模块(简历、会员、知识图谱)MVP 后按优先级加入。
|
||||
|
||||
### 7.3 为什么实习搜索用跳转模式?
|
||||
|
||||
- 不存数据 = 0 合规风险
|
||||
- 不爬数据 = 0 维护成本
|
||||
- 只做聚合搜索入口 = 低成本验证用户需求
|
||||
- 如果需求验证成功,Phase 1.5 再做"精选实习岗位"(人工整理)
|
||||
|
||||
### 7.4 AI 模型选型
|
||||
|
||||
- **主用**:opencode-go (deepseek-v4-flash) — 性能优先,成本低
|
||||
- **备用**:NVIDIA (stepfun-ai/step-3.5-flash) — 主用不可用时自动降级
|
||||
- **合规**:已备案,可合法提供 AI 服务
|
||||
|
||||
---
|
||||
|
||||
## 八、MVP 开发优先级
|
||||
|
||||
### P0(Week 1-2,必须完成)
|
||||
|
||||
- [ ] 微信登录对接(/api/user/wx-login)
|
||||
- [ ] 岗位选择页面(校招热门 20+ 岗位,含 AI 岗位)
|
||||
- [ ] AI 面试模拟核心逻辑(多轮对话)
|
||||
- [ ] 每轮反馈评分接口(/api/interview/:id/feedback)
|
||||
- [ ] 面试报告生成(/api/interview/:id/complete)
|
||||
- [ ] 历史面试记录查看(/api/interview/list)
|
||||
|
||||
### P1(Week 3-4,PMF 验证后)
|
||||
|
||||
- [ ] 简历诊断功能(复用已有代码)
|
||||
- [ ] 会员系统开发(¥9.9/月)
|
||||
- [ ] 微信支付对接
|
||||
- [ ] 实习搜索聚合入口(跳转模式)
|
||||
|
||||
### P2(Week 5-8,增强功能)
|
||||
|
||||
- [ ] AI 岗位专属题库(算法/大模型)
|
||||
- [ ] 技能缺口分析
|
||||
- [ ] 知识图谱(校招岗位-技能映射)
|
||||
- [ ] 精选实习岗位(人工整理)
|
||||
|
||||
---
|
||||
|
||||
## 九、性能与扩展性考虑
|
||||
|
||||
### 9.1 性能优化
|
||||
|
||||
- AI 调用异步化(避免阻塞用户操作)
|
||||
- 面试报告生成用队列(防止并发超时)
|
||||
- MongoDB 索引优化(userId, position, createdAt)
|
||||
|
||||
### 9.2 扩展性考虑
|
||||
|
||||
- 模块化设计(NestJS 天然支持)
|
||||
- AI 模型可插拔(opencode-go / NVIDIA / 未来接入其他模型)
|
||||
- 数据库分片预留(用户量大的时候)
|
||||
- 微信支付/订阅消息可替换(如果未来做独立 App)
|
||||
|
||||
---
|
||||
|
||||
## 十、安全风险与应对
|
||||
|
||||
| 风险 | 影响 | 应对 |
|
||||
|------|------|------|
|
||||
| AI 内容合规 | 微信下架 | 严格遵守微信 AI 内容规范;敏感词过滤;人工审核机制 |
|
||||
| 用户数据泄露 | 信任危机 | HTTPS 全站;数据库访问权限控制;不存敏感信息 |
|
||||
| 微信登录伪造 | 账户被盗 | 签名验证;openid 绑定校验 |
|
||||
| AI API 费用失控 | 成本飙升 | 限制每日调用次数;监控告警;备用模型自动切换 |
|
||||
- ✅ ICP 备案已完成
|
||||
- ✅ AI 深度合成类目已通过
|
||||
- ✅ JWT 认证全局守卫(白名单接口 @Public 放行)
|
||||
- ✅ 请求限流 (10次/分钟)
|
||||
- ⚠️ 生产环境需配置:强 JWT_SECRET、CORS 白名单、HTTPS、移除固定验证码
|
||||
|
||||
---
|
||||
|
||||
@@ -421,6 +274,7 @@ AI API (opencode-go → NVIDIA 主备切换)
|
||||
|
||||
| 日期 | 变更内容 | 操作人 |
|
||||
|------|----------|--------|
|
||||
| 2026-05-14 | 职引项目启动,架构文档初版 | AI |
|
||||
| 2026-05-15 | 方向调整:简历工具 → AI 职业发展平台 | AI |
|
||||
| 2026-06-01 | **重新架构**:专注校招,简化 MVP,价格 ¥9.9/月,合规优势 | AI |
|
||||
| 2026-05-14 | 初版 | AI |
|
||||
| 2026-06-01 | 重新架构:专注校招 | AI |
|
||||
| 2026-06-09 | 全面重写:匹配真实 15 模块 + 16 页面 + API 清单 | AI |
|
||||
| 2026-06-09 | 更新部署架构:添加生产域名 zhiyinwx.yzrcloud.cn / zhiyin.yzrcloud.cn | 小之 |
|
||||
|
||||
Reference in New Issue
Block a user