Files

171 lines
9.3 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Package model 数据模型层,定义所有业务实体结构
// 包含用户、简历、作品集、答题记录等核心数据模型
package model
// User 用户模型,用于用户认证和权限管理
type User struct {
ID string `json:"id"` // 用户唯一标识
Username string `json:"username"` // 用户名(唯一)
PasswordHash string `json:"password_hash"` // 密码哈希值
Email string `json:"email"` // 用户邮箱
Name string `json:"name"` // 用户姓名
Phone string `json:"phone"` // 用户手机号
Role string `json:"role"` // 用户角色(admin/user
CreatedAt string `json:"created_at"` // 创建时间
UpdatedAt string `json:"updated_at"` // 更新时间
}
// Resume 简历模型,存储个人简历的完整信息
type Resume struct {
ID string `json:"id"` // 简历唯一标识
UserID string `json:"user_id"` // 关联的用户ID
Route string `json:"route"` // 访问路由(唯一,如 zhangsan)
Password string `json:"password"` // 简历密码(用于访问保护)
BasicInfo BasicInfo `json:"basic_info"` // 基本信息
Experience []Experience `json:"experience"` // 工作经历列表
Education []Education `json:"education"` // 教育背景列表
Skills []Skill `json:"skills"` // 技能列表
Projects []Project `json:"projects"` // 项目经验列表
Template string `json:"template"` // 使用的模板名称(默认modern)
ShowInHome bool `json:"show_in_home"` // 是否在首页展示
CreatedAt string `json:"created_at"` // 创建时间
UpdatedAt string `json:"updated_at"` // 更新时间
}
// BasicInfo 基本信息,包含个人基本资料
type BasicInfo struct {
Name string `json:"name"` // 姓名
Title string `json:"title"` // 职位/头衔
Email string `json:"email"` // 邮箱地址
Phone string `json:"phone"` // 手机号码
Location string `json:"location"` // 所在地
Website string `json:"website"` // 个人网站地址
Summary string `json:"summary"` // 个人简介
Avatar string `json:"avatar"` // 头像URL
ExperienceYears string `json:"experience_years"` // 工作年限
JobTarget string `json:"job_target"` // 求职目标
Industry string `json:"industry"` // 所属行业
CoreAdvantages []string `json:"core_advantages"` // 核心优势列表
}
// Experience 工作经历,记录职业发展历程
type Experience struct {
ID uint `json:"id"` // 经历唯一标识
ResumeID string `json:"resume_id"` // 关联的简历ID
Company string `json:"company"` // 公司名称
Position string `json:"position"` // 职位名称
StartDate string `json:"start_date"` // 开始日期(格式:YYYY-MM
EndDate string `json:"end_date"` // 结束日期(格式:YYYY-MM"至今"表示当前)
Description string `json:"description"` // 工作描述
Highlights []string `json:"highlights"` // 工作亮点列表
Platforms []string `json:"platforms"` // 线上平台列表
}
// Education 教育背景,记录学习经历
type Education struct {
ID uint `json:"id"` // 教育背景唯一标识
ResumeID string `json:"resume_id"` // 关联的简历ID
School string `json:"school"` // 学校名称
Degree string `json:"degree"` // 学位(本科/硕士/博士等)
Major string `json:"major"` // 专业名称
StartDate string `json:"start_date"` // 入学日期(格式:YYYY-MM
EndDate string `json:"end_date"` // 毕业日期(格式:YYYY-MM
GPA string `json:"gpa"` // GPA成绩
}
// Skill 技能,记录个人技能和熟练程度
type Skill struct {
ID uint `json:"id"` // 技能唯一标识
ResumeID string `json:"resume_id"` // 关联的简历ID
Name string `json:"name"` // 技能名称
Level string `json:"level"` // 熟练程度(beginner/intermediate/advanced/expert
Category string `json:"category"` // 技能分类(后端/前端/数据库/运维等)
}
// Project 项目经验,记录参与的项目
type Project struct {
ID uint `json:"id"` // 项目唯一标识
ResumeID string `json:"resume_id"` // 关联的简历ID
Name string `json:"name"` // 项目名称
Description string `json:"description"` // 项目描述
TechStack []string `json:"tech_stack"` // 技术栈列表
URL string `json:"url"` // 项目链接
Highlights []string `json:"highlights"` // 项目亮点列表
Achievements []string `json:"achievements"` // 项目成果列表
StartDate string `json:"start_date"` // 开始日期(格式:YYYY-MM
EndDate string `json:"end_date"` // 结束日期(格式:YYYY-MM
ShowInResume bool `json:"show_in_resume"` // 是否在简历中显示
}
// PortfolioItem 作品集项目,用于展示详细的项目文档
type PortfolioItem struct {
ID uint `json:"id"` // 作品集项目唯一标识
UserID string `json:"user_id"` // 关联的用户ID
Name string `json:"name"` // 项目名称
Description string `json:"description"` // 项目描述
TechStack []string `json:"tech_stack"` // 技术栈列表
URL string `json:"url"` // 项目链接
StartDate string `json:"start_date"` // 开始日期(格式:YYYY-MM
EndDate string `json:"end_date"` // 结束日期(格式:YYYY-MM
Doc string `json:"doc"` // 项目文档(Markdown格式)
ShowInResume bool `json:"show_in_resume"` // 是否在简历中显示
ResumeID string `json:"resume_id"` // 关联的简历ID
ProjectID uint `json:"project_id"` // 关联的简历项目ID
Password string `json:"password"` // 访问密码
Hidden bool `json:"hidden"` // 是否隐藏
}
// ResumeUpdate 简历更新请求模型,用于部分更新简历内容
type ResumeUpdate struct {
BasicInfo *BasicInfo `json:"basic_info"` // 基本信息(可选)
Experience *[]Experience `json:"experience"` // 工作经历列表(可选)
Education *[]Education `json:"education"` // 教育背景列表(可选)
Skills *[]Skill `json:"skills"` // 技能列表(可选)
Projects *[]Project `json:"projects"` // 项目经验列表(可选)
Template *string `json:"template"` // 模板名称(可选)
ShowInHome *bool `json:"show_in_home"` // 是否在首页展示(可选)
Route *string `json:"route"` // 访问路由(可选)
Password *string `json:"password"` // 简历密码(可选)
}
// QuizQuestion 面试题题目模型
type QuizQuestion struct {
Type string `json:"type"` // 题目类型:mcq(选择题)、fill(填空题)、sa(简答题)、algo(算法设计题)
Text string `json:"text"` // 题目内容
Options []string `json:"options"` // 选项(选择题)
Answer string `json:"answer"` // 参考答案
Analysis string `json:"analysis"` // 答案解析(详细拓展)
Score int `json:"score"` // 分值
Keywords []string `json:"keywords"` // 关联关键词
Difficulty string `json:"difficulty"` // 难度级别:入门、初级、中级、进阶、高级
Category string `json:"category"` // 题目分类
}
// QuizRecord 面试题历史记录模型
type QuizRecord struct {
ID string `json:"id"` // 记录唯一标识
UserID string `json:"user_id"` // 关联的用户ID
ResumeID string `json:"resume_id"` // 关联的简历ID
ResumeRoute string `json:"resume_route"` // 关联的简历路由
Title string `json:"title"` // 答题记录标题
Questions []QuizQuestion `json:"questions"` // 题目列表
UserAnswers map[string]string `json:"user_answers"` // 用户答案
Score float64 `json:"score"` // 得分
CorrectCount int `json:"correct_count"` // 正确题数
TotalCount int `json:"total_count"` // 总题数
CreatedAt string `json:"created_at"` // 创建时间
}
// FavoriteQuestion 收藏/错题本模型
type FavoriteQuestion struct {
ID string `json:"id"` // 记录唯一标识
UserID string `json:"user_id"` // 关联的用户ID
ResumeID string `json:"resume_id"` // 关联的简历ID
ResumeRoute string `json:"resume_route"` // 关联的简历路由
Question QuizQuestion `json:"question"` // 题目内容
UserAnswer string `json:"user_answer"` // 用户答案
IsCorrect bool `json:"is_correct"` // 是否正确
IsFavorite bool `json:"is_favorite"` // 是否收藏
CreatedAt string `json:"created_at"` // 添加时间
}