轻松聘
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

362 lines
8.7 KiB

/**
* 工具类页面领域模型(行业技能词云 / 薪资计算器 / 求职进度 / 选择身份 / 入职准备清单)。
* 与有职设计稿中「行业技能词云」「薪资计算器」「求职进度」「选择身份」「入职准备清单」五屏对应。
*/
/** 入职准备清单分类 */
export type ChecklistCategory = 'material' | 'procedure' | 'study' | 'life' | 'daily';
/** 入职准备清单单项 */
export interface ChecklistItem {
id: string;
/** 待办标题 */
title: string;
/** 是否已完成 */
done: boolean;
/** 是否必填 */
required?: boolean;
}
/** 入职准备清单分组 */
export interface ChecklistGroup {
id: ChecklistCategory;
/** 分组标题 */
title: string;
/** Ionicons 图标名 */
icon: string;
/** 是否展开 */
expanded: boolean;
/** 分组待办 */
items: ChecklistItem[];
}
/** 入职小贴士 */
export interface OnboardingTip {
id: string;
/** 标题 */
title: string;
/** 描述 */
desc: string;
/** Ionicons 图标名 */
icon: string;
}
/** 入职准备清单数据 */
export interface OnboardingChecklist {
/** 距离入职天数 */
daysLeft: number;
/** 岗位名 */
position: string;
/** 公司名 */
company: string;
/** 总待办数 */
total: number;
/** 已完成数 */
completed: number;
/** 分组清单 */
groups: ChecklistGroup[];
/** 入职日期 */
onboardingDate: string;
/** 每日提醒 */
dailyReminder: {
enabled: boolean;
time: string;
};
/** 入职小贴士 */
tips: OnboardingTip[];
}
/** 行业技能词云:单个技能词(权重决定字号与色深) */
export interface SkillWord {
/** 唯一 id */
id: string;
/** 技能名称(如 React、数据分析) */
text: string;
/** 热度权重 0-100,决定字号与色深 */
weight: number;
/** 所属技能分组(用于配色区分) */
group: 'tech' | 'soft' | 'domain' | 'tool';
}
/** 技能分类 */
export interface SkillCategory {
id: string;
label: string;
}
/** 热门技能 TOP N */
export interface TopSkill {
id: string;
/** 技能名 */
name: string;
/** 排名 */
rank: number;
/** 热度变化百分比 */
change: number;
/** 需求热度 0-100 */
demand: number;
}
/** 词云筛选标签 */
export interface SkillCloudFilter {
/** 行业选项 */
industries: string[];
/** 岗位选项 */
positions: string[];
/** 城市选项 */
cities: string[];
/** 经验选项 */
experiences: string[];
}
/** 行业技能词云数据 */
export interface SkillCloudData {
/** 行业名称 */
industry: string;
/** 岗位名称(展示用) */
position: string;
/** 城市 */
city: string;
/** 经验要求 */
experience: string;
/** 当前选中的技能分类 id */
activeCategoryId: string;
/** 筛选可选项 */
filters: SkillCloudFilter;
/** 技能分类 */
categories: SkillCategory[];
/** 技能词列表 */
words: SkillWord[];
/** 热门技能 TOP 10 */
topSkills: TopSkill[];
/** 个人技能匹配度 0-100 */
matchPercent: number;
/** 数据更新时间(展示用) */
updatedAt: string;
}
/** 薪资计算器输入参数 */
export interface SalaryCalcInput {
/** 税前月薪(元) */
monthlyGross: number;
/** 所在城市(决定社保/公积金缴费基数上下限,选择后实际参与计算) */
city: string;
/** 社保缴费基数(元) */
socialBase: number;
/** 公积金缴纳比例 0-1(如 0.12) */
providentFundRate: number;
/** 专项附加扣除(元/月) */
specialDeduction: number;
/** 年终奖月数 */
bonusMonths: number;
}
/** 城市社保/公积金缴费基数上下限(mock 阶段内置,真实后端按城市下发) */
export interface CitySocialProfile {
/** 城市名(与 CITIES 常量对应) */
city: string;
/** 社保缴费基数上限(元/月) */
socialBaseUpper: number;
/** 社保缴费基数下限(元/月) */
socialBaseLower: number;
/** 公积金缴存基数上限(元/月) */
providentBaseUpper: number;
/** 公积金缴存基数下限(元/月) */
providentBaseLower: number;
}
/** 五险一金单项明细 */
export interface SalaryInsuranceItem {
/** 险种名称 */
label: string;
/** 个人缴纳比例(0-1) */
rate: number;
/** 个人缴纳金额(元/月) */
amount: number;
}
/** 个人所得税明细项 */
export interface SalaryTaxItem {
/** 税项名称 */
label: string;
/** 金额(元) */
amount: number;
/** 适用税率(可选) */
rate?: number;
}
/** 薪资结构饼图单项 */
export interface SalaryStructureItem {
/** 分类名称 */
label: string;
/** 金额(元) */
value: number;
/** 占比 0-100 */
percent: number;
/** 主题色 token(页面中映射为 colors[color]) */
color: string;
}
/** 薪资计算器更多工具入口 */
export interface SalaryToolLink {
id: string;
/** 工具名称 */
title: string;
/** 工具描述 */
desc: string;
/** Ionicons 图标名 */
icon: string;
/** 跳转路由 */
route?: string;
}
/** 薪资计算器结果(接口层计算,页面只渲染) */
export interface SalaryCalcResult {
/** 输入参数快照 */
input: SalaryCalcInput;
/** 税前月薪(元) */
monthlyGross: number;
/** 年终奖月数 */
bonusMonths: number;
/** 月度税前合计(月薪 + 年终摊入) */
monthlyTotal: number;
/** 月度五险一金个人缴纳合计(元) */
monthlySocial: number;
/** 月度个人所得税(元) */
monthlyTax: number;
/** 月到手(元) */
monthlyNet: number;
/** 年税前合计(元) */
annualGross: number;
/** 年到手合计(元) */
annualNet: number;
/** 五险一金明细 */
insuranceItems: SalaryInsuranceItem[];
/** 个税明细 */
taxItems: SalaryTaxItem[];
/** 薪资结构(税前/五险一金/个税/到手) */
structure: SalaryStructureItem[];
}
/** 行业薪资参考(计算器对比用) */
export interface SalaryBracket {
/** 行业名称 */
industry: string;
/** 该行业平均月薪(K) */
avgMonthly: number;
/** 样本量 */
sampleCount: number;
}
/** 求职进度统计卡 */
export interface JobProgressStats {
/** 投递总数 */
total: number;
/** 待反馈数 */
pending: number;
/** 面试中 */
interviewing: number;
/** Offer 数 */
offer: number;
/** 已结束 */
ended: number;
}
/** 求职进度:即将到期 Offer */
export interface JobProgressOffer {
id: string;
/** 公司名 */
companyName: string;
/** 岗位名 */
positionName: string;
/** 薪资 */
salary: string;
/** 截止日期展示文本 */
deadline: string;
/** 剩余天数 */
daysLeft: number;
}
/** 求职进度:公司流程条目 */
export type JobProgressStage = '投递' | '待反馈' | '面试中' | 'Offer' | '已结束';
export interface JobProgressCompany {
id: string;
/** 公司名 */
companyName: string;
/** 岗位名 */
positionName: string;
/** 薪资 */
salary: string;
/** 当前阶段 */
stage: JobProgressStage;
/** 阶段展示标签 */
stageLabel: string;
/** 下一步动作或状态 */
nextAction: string;
/** 更新时间 */
date: string;
/** 未读数 */
unread?: number;
}
/** 求职进度:月度统计 */
export interface JobProgressMonthly {
/** 月份,如「8月」 */
month: string;
/** 投递数 */
deliveries: number;
/** 面试数 */
interviews: number;
/** Offer 数 */
offers: number;
}
/** 求职进度步骤状态(派生联合类型,禁止页面硬编码判断) */
export type ProgressStatus = 'done' | 'active' | 'todo';
/** 求职进度单个步骤 */
export interface ProgressStep {
id: string;
/** 阶段标题(如 已投递) */
title: string;
/** 阶段描述 */
desc: string;
/** 状态:已完成 / 进行中 / 未开始 */
status: ProgressStatus;
/** 完成时间(已完成步骤展示,进行中/未开始为空) */
date?: string;
}
/** 求职进度数据 */
export interface JobProgress {
/** 统计概览 */
stats: JobProgressStats;
/** 即将到期 Offer */
offers: JobProgressOffer[];
/** 公司流程列表 */
companies: JobProgressCompany[];
/** 月度统计 */
monthlyStats: JobProgressMonthly[];
/** 时间轴步骤(可选,保留旧结构) */
steps?: ProgressStep[];
/** 面试中数 */
interviewCount?: number;
/** 总投递数 */
deliveryCount?: number;
/** 已拿 Offer 数 */
offerCount?: number;
}
/** 身份选项(C 端求职者 / 企业端 HR) */
export interface IdentityOption {
id: string;
/** 身份标题 */
title: string;
/** 身份描述 */
desc: string;
/** 图标名(Ionicons) */
icon: string;
/** 角色:求职者 / 企业(HR) */
role: 'candidate' | 'enterprise';
}