Files
zhiyin/docs/ARCHITECTURE.md
T
yuzhiran 9276ab9028 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 新增小程序编译上传章节、清理检查清单
2026-06-09 20:03:05 +08:00

9.7 KiB
Raw Blame History

职引 — 技术架构文档 v4.0

版本: v4.0 日期: 2026-06-09 状态: Phase 0.5 完成 定位: 应届生/实习生 AI 面试教练


一、技术栈

1.1 前端

技术 版本 用途
uni-app 3.x 跨端框架(微信小程序 + H5
Vue 3.4 框架
TypeScript 5.x 类型安全
Vite 5.x 构建工具

1.2 后端

技术 版本 用途
Node.js 18+ 运行环境
NestJS 10.x 框架
MongoDB + Mongoose 7.x 数据库
JWT - 认证
class-validator - 参数校验

1.3 AI 能力

技术 用途 优先级
opencode-go (deepseek-v4-flash) 面试模拟、简历诊断、报告 主用
NVIDIA (stepfun-ai/step-3.5-flash) 主用不可用时自动切换 备用

1.4 部署

技术 用途
腾讯云轻量应用服务器 后端部署(已 ICP 备案)
Nginx 反向代理(HTTPS 终止) + H5 静态文件服务
PM2 进程管理

生产域名

域名 用途 指向
zhiyinwx.yzrcloud.cn 后端 API(小程序服务端 + H5 API Nginx → localhost:3006
zhiyin.yzrcloud.cn H5 网页端 /www/wwwroot/zhiyin.yzrcloud.cn

二、项目结构

zhiyin/
├── zhiyin-app/                    # 小程序前端
│   └── 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/                       # 后端服务 (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
    ├── ARCHITECTURE.md
    ├── FEATURE-LIST.md
    ├── ROADMAP.md
    ├── PROJECT-STATUS.md
    ├── DEPLOYMENT.md
    └── WECHAT-CHECKLIST.md

三、数据模型

3.1 用户 (User)

phone, wxOpenid, email, password, nickname, avatar
plan (free/growth), remaining, vipExpireAt
role (user/admin), isSystemAdmin
interviewCount

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 进步轨迹 (Progress)

userId, totalInterviews, completedInterviews
avgLogic, avgExpression, avgProfessionalism, avgStability
streak, lastInterviewDate, streakHistory
recentScores[{interviewId, date, position, totalScore, dimensions}]

3.4 面经贡献 (Contribution)

userId, interviewId, company, position, rounds, questions, experience, tags, verified

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 接口总览

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 设置密码

4.2 面试 (prefix: /api/interview)

方法 路径 说明
POST /create 创建面试
POST /:id/answer 提交回答
POST /:id/complete 完成面试生成报告
GET /:id 获取面试详情
GET /list/all 面试历史列表
GET /stats/mine 用户统计

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 删除简历

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.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 按岗位获取题目

4.6 其他

方法 路径 说明
GET /positions/hot 热门岗位
POST /upload 文件上传
GET /admin/* 管理后台接口

五、部署架构

微信小程序 (用户端)               H5 浏览器 (用户端)
    ↓ HTTPS                           ↓ HTTPS
zhiyinwx.yzrcloud.cn            zhiyin.yzrcloud.cn
    ↓                                 ↓
Nginx 反向代理 (腾讯云轻量应用服务器)       Nginx 静态文件服务
    ↓                                 ↓
backend (NestJS :3006)              /www/wwwroot/zhiyin.yzrcloud.cn/
    ↓
MongoDB Atlas / 自建 MongoDB
    ↓
AI API (opencode-go → NVIDIA 主备切换)

六、安全与合规

  • ICP 备案已完成
  • AI 深度合成类目已通过
  • JWT 认证全局守卫(白名单接口 @Public 放行)
  • 请求限流 (10次/分钟)
  • ⚠️ 生产环境需配置:强 JWT_SECRET、CORS 白名单、HTTPS、移除固定验证码

变更记录

日期 变更内容 操作人
2026-05-14 初版 AI
2026-06-01 重新架构:专注校招 AI
2026-06-09 全面重写:匹配真实 15 模块 + 16 页面 + API 清单 AI
2026-06-09 更新部署架构:添加生产域名 zhiyinwx.yzrcloud.cn / zhiyin.yzrcloud.cn 小之