简历审核系统是Tech Interview Handbook门户的核心功能,它允许用户上传、浏览、审核和评论简历。本文档详细介绍了简历审核功能的技术架构、组件和工作流程。
该系统允许用户
来源: apps/portal/src/pages/resumes/index.tsx42-44 apps/portal/src/pages/resumes/[resumeId].tsx:42-43, apps/portal/src/pages/resumes/submit.tsx70-73
来源: apps/portal/src/pages/resumes/submit.tsx apps/portal/src/pages/resumes/index.tsx apps/portal/src/pages/resumes/[resumeId].tsx, apps/portal/src/server/router/resumes/resumes-resume-router.ts
来源: apps/portal/src/pages/resumes/submit.tsx141-195 apps/portal/src/pages/resumes/index.tsx185-246 apps/portal/src/pages/resumes/[resumeId].tsx:42-105, apps/portal/src/components/resumes/comments/ResumeCommentsForm.tsx78-103
主要的Resume实体包含以下属性
来源: apps/portal/src/types/resume.d.ts1-16
| 表名 | 目的 | 关键字段 |
|---|---|---|
| ResumesResume | 存储简历元数据和PDF的URL | id, title, url, role, experience, locationId, isResolved, userId |
| ResumeComment | 存储简历上的评论 | id, resumeId, section, description, parentId, userId |
| ResumesStar | 跟踪哪些用户收藏了哪些简历 | id, resumeId, userId |
| CommentVote | 跟踪评论的点赞/点踩 | id, commentId, userId, value |
来源: apps/portal/src/server/router/resumes/resumes-resume-router.ts apps/portal/src/server/router/resumes/resumes-resume-user-router.ts
来源: apps/portal/src/pages/resumes/index.tsx apps/portal/src/pages/resumes/[resumeId].tsx, apps/portal/src/components/resumes/comments/ResumeCommentListItem.tsx
简历浏览页面(index.tsx)提供以下功能
该页面使用多种可重用组件
ResumeListItems:简历列表项的容器ResumeListItem:单个简历条目来源: apps/portal/src/pages/resumes/index.tsx93-759 apps/portal/src/components/resumes/browse/ResumeListItem.tsx24-98
简历详情页面([resumeId].tsx)提供
关键组件
ResumePdf:PDF 查看器组件ResumeCommentsList:评论显示组件ResumeCommentsForm:评论提交表单ResumeCommentListItem:单个评论显示来源: apps/portal/src/pages/resumes/[resumeId].tsx:42-527, apps/portal/src/components/resumes/ResumePdf.tsx17-93
简历提交表单(submit.tsx)处理
该表单实现了
react-hook-form进行受控表单管理react-dropzone进行文件上传来源: apps/portal/src/pages/resumes/submit.tsx70-470
简历审核系统使用tRPC进行类型安全的API通信
| 路由器 | 类型 | 描述 |
|---|---|---|
resumes.resume.findAll | 查询 | 获取所有简历的带分页、过滤的列表 |
resumes.resume.findOne | 查询 | 按ID获取单个简历 |
resumes.resume.star | Mutation | 收藏简历 |
resumes.resume.unstar | Mutation | 取消收藏简历 |
resumes.resume.user.upsert | Mutation | 创建或更新简历(需要认证) |
resumes.resume.user.resolve | Mutation | 将简历标记为已解决/未解决(需要认证) |
resumes.resume.user.delete | Mutation | 删除简历(需要认证) |
resumes.resume.user.findUserStarred | 查询 | 获取当前用户收藏的简历(需要认证) |
resumes.resume.user.findUserCreated | 查询 | 获取当前用户创建的简历(需要认证) |
resumes.comments.list | 查询 | 获取简历的评论 |
resumes.comments.user.create | Mutation | 创建评论(需要认证) |
resumes.comments.user.reply | Mutation | 回复评论(需要认证) |
resumes.comments.user.edit | Mutation | 编辑评论(需要认证) |
resumes.comments.user.delete | Mutation | 删除评论(需要认证) |
resumes.comments.votes.list | 查询 | 获取评论的投票 |
resumes.comments.votes.user.upsert | Mutation | 给评论点赞或点踩(需要认证) |
resumes.comments.votes.user.delete | Mutation | 从评论中移除投票(需要认证) |
来源: apps/portal/src/server/router/resumes/resumes-resume-router.ts14-336 apps/portal/src/server/router/resumes/resumes-resume-user-router.ts13-452
/resumes/submitresumes.resume.user.upsert保存到数据库来源: apps/portal/src/pages/resumes/submit.tsx141-195
/resumes页面使用过滤器或搜索浏览简历/resumes/[resumeId]resumes.comments.user.create提交resumes.comments.votes.user.upsert对评论进行投票resumes.comments.user.reply回复评论来源: apps/portal/src/pages/resumes/[resumeId].tsx:229-249, apps/portal/src/components/resumes/comments/ResumeCommentsForm.tsx25-216 apps/portal/src/components/resumes/comments/comment/ResumeCommentVoteButtons.tsx17-149
简历所有者可以
resumes.resume.user.resolve 将简历标记为“已审核”或“未审核”resumes.resume.user.delete 删除其简历及相关评论任何已登录用户可以
resumes.resume.star 和 resumes.resume.unstar 收藏/取消收藏简历来源: apps/portal/src/pages/resumes/[resumeId].tsx:176-227
系统支持复杂的过滤和搜索功能
筛选是通过以下组合实现的:
useState 和 URL 参数来源: apps/portal/src/utils/resumes/resumeFilters.ts11-36 apps/portal/src/utils/resumes/resumePrismaUtils.ts41-57
评论系统允许对简历的特定部分进行结构化反馈
评论被组织在预定义的简历版块中
来源: apps/portal/src/components/resumes/comments/ResumeCommentsList.tsx24-104 apps/portal/src/components/resumes/comments/ResumeCommentListItem.tsx19-180 apps/portal/src/components/resumes/shared/ResumeExpandableText.tsx8-47
简历审核系统与多个其他组件集成
next-auth 进行用户身份验证来源: apps/portal/src/pages/resumes/[resumeId].tsx:46-50, apps/portal/src/pages/resumes/submit.tsx155-161
简历审核系统为用户提供了一个全面的平台,用于接收和提供简历反馈。其模块化架构由浏览、提交、查看和评论组件组成,它们协同工作以创造无缝的用户体验。该系统利用 tRPC 进行类型安全的 API 通信,并与更广泛的 Tech Interview Handbook 平台集成。