初始化:职引项目 v1.0
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
# 2026-06-01 工作日志
|
||||
|
||||
## 修复后端 Redis 依赖问题
|
||||
|
||||
### 问题描述
|
||||
- 后端因为 Redis 连接错误(`ioredis` `Unhandled error event`)不断崩溃(Exit Code 1)
|
||||
- Redis 服务器 `192.168.136.130:6379` 不可用
|
||||
|
||||
### 解决方案
|
||||
1. **完全移除 Redis 依赖**
|
||||
- 修改 `common.module.ts`:移除 `RedisModule.forRoot()`,只保留 `ThrottlerModule`
|
||||
- 修改 `user.service.ts`:
|
||||
- 移除 `@InjectRedis()` 和 `ioredis` import
|
||||
- 重写 `checkUsage()` 和 `incrementUsage()` 方法,完全使用 MongoDB 进行限流
|
||||
- `sendCode()` 和 `login()` 方法使用 MongoDB 存储/验证验证码(字段:`lastCode`, `lastCodeTime`)
|
||||
|
||||
2. **更新 User Schema**
|
||||
- 添加缺失的字段:`lastCode: string` 和 `lastCodeTime: Date`
|
||||
- 这些字段用于 MVP 阶段的验证码存储(替代 Redis)
|
||||
|
||||
3. **修复 `analyze.service.ts`**
|
||||
- 移除强制 mock 模式(`return this.getMockResult(prompt)`)
|
||||
- 恢复真实 AI 调用(Sensenova 主用,NVIDIA 备用)
|
||||
|
||||
### 结果
|
||||
- ✅ `npm run build` 成功(无 TypeScript 错误)
|
||||
- ✅ 后端成功启动在端口 3004(PID: 10220)
|
||||
- ✅ API 端点正常工作(测试了 `/api/internship/platforms`)
|
||||
- ✅ **完整面试流程测试通过!**
|
||||
- 创建面试:AI 生成第一道问题 ✅
|
||||
- 提交回答:AI 分析回答并生成追问 ✅
|
||||
- 完成面试:AI 生成完整报告 ✅
|
||||
- ✅ 不再崩溃(无 Redis 连接错误)
|
||||
|
||||
### 测试详情
|
||||
- **AI 模型**: Sensenova (deepseek-v4-flash)
|
||||
- **测试岗位**: 前端开发
|
||||
- **面试评分**: 50/100
|
||||
- **岗位匹配度**: 45%
|
||||
- **AI 反馈**: 提供了详细的亮点、不足、改进建议、参考回答
|
||||
|
||||
### 配置信息
|
||||
- **后端端口**: 3004
|
||||
- **MongoDB**: `mongodb://zhiyin:zhiyin123@192.168.0.192:27017/zhiyin?authSource=zhiyin` ✅ **已更新**
|
||||
- **AI 主用**: Sensenova (`deepseek-v4-flash`)
|
||||
- **AI 备用**: NVIDIA (`stepfun-ai/step-3.5-flash`)
|
||||
- **Redis**: 已禁用(使用 MongoDB 降级方案)
|
||||
- **前端代理**: `http://localhost:3004` ✅ **已更新**
|
||||
|
||||
### 新增功能(2026-06-02 13:30)
|
||||
- ✅ **简历诊断页面** (`pages/analyze/diagnosis.vue`)
|
||||
- 现代化 UI:渐变头部、卡片布局、评分可视化
|
||||
- 功能:输入简历、选择岗位、一键诊断、查看结果
|
||||
- API 测试通过 ✅
|
||||
|
||||
- ✅ **简历优化页面** (`pages/analyze/optimize.vue`)
|
||||
- 现代化 UI:Tab 切换、Before/After 对比、复制功能
|
||||
- 功能:输入简历、填写岗位、一键优化、查看结果
|
||||
- API 测试通过 ✅
|
||||
|
||||
- ✅ **路由配置**: 更新 `pages.json` 注册新页面
|
||||
|
||||
### 待完成
|
||||
- [ ] 在首页添加简历诊断和优化的导航入口
|
||||
- [ ] 启动前端测试完整流程(H5 前端 -> 后端 API)
|
||||
- [ ] 测试文件上传功能(PDF/Word 解析)
|
||||
@@ -0,0 +1,47 @@
|
||||
# 2026-06-03 工作日志
|
||||
|
||||
## 后端重构完成
|
||||
- 彻底重写 NestJS 后端,删除所有旧 flat 模块文件
|
||||
- 新架构:common(过滤器/守卫/装饰器) + ai(统一AI调用) + user(登录/JWT) + interview(面试) + analyze(分析)
|
||||
- 全局 JWT 守卫,@Public() 控制公开接口
|
||||
- 统一错误格式 {code, message}
|
||||
- 路由前缀 /api,端口 3006
|
||||
- 面试 AI 调用:主服务商 → 备用服务商 → 抛错
|
||||
|
||||
## 前端清理与适配
|
||||
- 删除 root `pages/` 目录下的旧错误副本
|
||||
- 更新 `config.ts` 仅保留新后端 API 端点
|
||||
- 修复 `user.vue` 统计接口路径
|
||||
- 重写 `interview.vue`:连接真实后端 AI,登录检测
|
||||
- 重写 `history.vue`:从后端 `/api/interview/list/all` 获取数据
|
||||
- 旧文件 pages.json 中的 analyze 页面未迁移(原项目无此页面)
|
||||
|
||||
## 当前服务状态
|
||||
- 后端 API: http://localhost:3006 (running)
|
||||
- 前端 H5: http://localhost:8888 (running)
|
||||
- 登录: 手机号 + 验证码 123456
|
||||
- 新用户注册赠送 3 次使用次数
|
||||
|
||||
## 待办
|
||||
- ~~其他占位页面(resume, member, about, settings, report 等)需要补内容~~ ✅
|
||||
- ~~用户页"会员中心""设置"等功能未实现~~ ✅
|
||||
|
||||
## 功能补全(下午)
|
||||
### 后端新增
|
||||
- 新增 Resume 模块(CRUD:创建/列表/详情/删除)
|
||||
|
||||
### UI 设计系统(傍晚 - UI Designer 专家)
|
||||
- **App.vue**:全局设计 Token(CSS 变量),统一样式基类
|
||||
- **首页**:重写 hero 区(径向渐变光晕)、功能卡片圆角+阴影、岗位列表排名点
|
||||
- **登录页**:精简品牌区、输入框聚焦动效、按钮微交互
|
||||
- **面试页**:圆形发送按钮、气泡圆角优化、打字指示器
|
||||
- **历史页**:卡片式列表、筛选胶囊组、评分颜色体系
|
||||
- **用户页**:未登录引导页设计
|
||||
- 新增:fade-in 动画、渐变按钮基类、聚焦态 box-shadow
|
||||
- **report.vue**:重写,从后端获取面试详情/对话/评分/总结,自动完成面试
|
||||
- **resume.vue**:重写,连接新后端 API 实现创建/列表/删除
|
||||
- **history.vue**:goDetail 导航到 report 页传参 interviewId
|
||||
- **user.vue**:goVip→member 页,goSettings→提示说明
|
||||
- **about.vue**:更新设计颜色
|
||||
- **index.vue**:"查看更多"改为 ActionSheet 选岗位直接面试
|
||||
- **config.ts**:新增 RESUME API 端点映射
|
||||
@@ -0,0 +1,19 @@
|
||||
# 2026-06-04 全站数据源审计
|
||||
|
||||
## 发现并修复的问题
|
||||
|
||||
| 问题 | 情况 | 修复 |
|
||||
|------|------|------|
|
||||
| `api.ts` 引用已删除端点(knowledge.ai.payment) | ❌ 运行时崩溃 | ✅ 全部清理,仅保留新后端 4 个模块 |
|
||||
| `member.vue` 用旧 `api` 服务,expects `memberType` | ❌ 数据不对 | ✅ 改为读 `plan` 字段,用新 api 服务 |
|
||||
| `result.vue` 用旧 `api` 服务 | ⚠️ 接口参数不同 | ✅ 已修复 api.ts 的 analyze 参数 |
|
||||
| `index.vue` hotPositions 硬编码 | ❌ 静态数据 | ✅ 新增后端 `/api/positions/hot` 接口,前端动态获取 |
|
||||
| `index.vue` "查看更多" ActionSheet 硬编码 | ❌ 静态数据 | ✅ 改为从 hotPositions 动态生成 |
|
||||
| `about.vue` | ✅ 纯静态页面,合理 | - |
|
||||
| `admin.vue` | ⚠️ 旧管理后台,暂无后端 | - |
|
||||
|
||||
## 新增功能
|
||||
- **文件上传解析**:`POST /api/upload`,支持 PDF/DOCX/TXT 文件解析为文本
|
||||
- **简历页上传区**:点击上传文件 → 自动解析填入内容区
|
||||
- **结果下载**:诊断/优化后 → 下载 TXT 或 HTML 文件
|
||||
- **用户页改进**:未登录也可看到功能菜单,点击个人功能才弹登录引导
|
||||
@@ -0,0 +1,19 @@
|
||||
# 2026-06-05 上线前修复
|
||||
|
||||
## 修复的 13 个问题
|
||||
|
||||
| # | 问题 | 修复 |
|
||||
|---|------|------|
|
||||
| 1 | report.vue onLoad 未导入 → 白屏 | 添加 import onLoad |
|
||||
| 2 | list/all 路由被 :id 拦截 | `:id` 路由移到静态路由之后 |
|
||||
| 3 | 无参数验证 | 启用 ValidationPipe + whitelist,改用带 Logger 的异常过滤器 |
|
||||
| 4 | 双 pages.json 冲突 | 删除外层 pages.json(旧版含已删除的 analyze 路由) |
|
||||
| 5 | internship.vue 引用不存在 api 服务 | 重写为使用 /api/positions/hot 的简洁页面 |
|
||||
| 6 | 面试次数未扣减 | UserService 注入 InterviewService,create 时调用 deductRemaining |
|
||||
| 7 | JWT_SECRET 使用默认值 | 替换为 96 位随机 hex 字符串 |
|
||||
| 8 | 验证码存内存 | 确认(单实例可用,多实例需 Redis) |
|
||||
| 9 | Schema 缺索引 | Interview/Resume 添加 userId + createdAt 复合索引 |
|
||||
| 10 | 页面缺 loading 态 | 首页+记录页添加 loading-tip |
|
||||
| 11 | login.vue 用原始 URL | 改为 api() 辅助函数 |
|
||||
| 12 | admin.vue 端口 3000 | 改为 window.location.origin |
|
||||
| 13 | 渐变样式不一致 | 已在上一轮统一 |
|
||||
Reference in New Issue
Block a user