feat: 更新岗位面试状态数据源
- 导入岗位面试状态.json文件数据 - 创建transformInterviewStatus函数转换面试状态数据 - 从企业内推岗位库中移除已有面试状态的岗位(避免重复显示) - 更新服务层使用新的interviewStatus数据源 - 面试状态板块现在显示真实的面试进度数据 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
77
src/data/interviewStatus.json
Normal file
77
src/data/interviewStatus.json
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"查询岗位名称": "会展策划师",
|
||||||
|
"阶段日期": "2025/9/16",
|
||||||
|
"面试状态": "收到Offer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"查询岗位名称": "商业会展执行专员",
|
||||||
|
"阶段日期": "2025/7/30",
|
||||||
|
"面试状态": "拒绝Offer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"查询岗位名称": "活动策划师",
|
||||||
|
"阶段日期": "2025/7/26",
|
||||||
|
"面试状态": "收到Offer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"查询岗位名称": "SEO专员",
|
||||||
|
"阶段日期": "2025/7/28",
|
||||||
|
"面试状态": "拒绝Offer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"查询岗位名称": "新媒体运营专员",
|
||||||
|
"阶段日期": "2025/7/31",
|
||||||
|
"面试状态": "拒绝Offer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"查询岗位名称": "ip运营",
|
||||||
|
"阶段日期": "2025/7/10",
|
||||||
|
"面试状态": "收到Offer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"查询岗位名称": "二次元周边店店长",
|
||||||
|
"阶段日期": "2025/6/27",
|
||||||
|
"面试状态": "HR初筛未通过"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"查询岗位名称": "社群运营",
|
||||||
|
"阶段日期": "2025/7/23",
|
||||||
|
"面试状态": "收到Offer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"查询岗位名称": "品牌推广专员",
|
||||||
|
"阶段日期": "2025/8/2",
|
||||||
|
"面试状态": "面试未通过"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"查询岗位名称": "会展策划师",
|
||||||
|
"阶段日期": "2025/9/16",
|
||||||
|
"面试状态": "收到Offer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"查询岗位名称": "客服",
|
||||||
|
"阶段日期": "2025/8/2",
|
||||||
|
"面试状态": "拒绝Offer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"查询岗位名称": "境外展会操作助理",
|
||||||
|
"阶段日期": "2025/8/9",
|
||||||
|
"面试状态": "面试未通过"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"查询岗位名称": "海外活动策划专员",
|
||||||
|
"阶段日期": "2025/7/17",
|
||||||
|
"面试状态": "收到Offer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"查询岗位名称": "品牌公关",
|
||||||
|
"阶段日期": "2025/9/7",
|
||||||
|
"面试状态": "等待面试"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"查询岗位名称": "景区运营专员",
|
||||||
|
"阶段日期": "2025/8/12",
|
||||||
|
"面试状态": "面试未通过"
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -1,17 +1,70 @@
|
|||||||
// 导入JSON数据
|
// 导入JSON数据
|
||||||
import companyJobsData from './companyJobs.json';
|
import companyJobsData from './companyJobs.json';
|
||||||
import companyJobsNewData from './companyJobsNew.json';
|
import companyJobsNewData from './companyJobsNew.json';
|
||||||
|
import interviewStatusData from './interviewStatus.json';
|
||||||
import calendarCoursesData from './calendarCourses.json';
|
import calendarCoursesData from './calendarCourses.json';
|
||||||
import aiCoursesData from '../../网页未导入数据/文旅产业/ai课程表.json';
|
import aiCoursesData from '../../网页未导入数据/文旅产业/ai课程表.json';
|
||||||
import marketingCoursesData from './marketingCourses.json';
|
import marketingCoursesData from './marketingCourses.json';
|
||||||
|
|
||||||
// 转换函数:将JSON数据转换为页面所需格式
|
// 转换函数:将JSON数据转换为页面所需格式
|
||||||
|
// 转换面试状态数据
|
||||||
|
const transformInterviewStatus = (statusData, jobsData) => {
|
||||||
|
return statusData.map((status, index) => {
|
||||||
|
// 从岗位数据中查找匹配的岗位详情
|
||||||
|
const matchedJob = jobsData.find(job =>
|
||||||
|
job["内推岗位名称"] === status["查询岗位名称"]
|
||||||
|
);
|
||||||
|
|
||||||
|
// 解析日期
|
||||||
|
const dateParts = status["阶段日期"].split('/');
|
||||||
|
const formattedDate = `${dateParts[0]}-${dateParts[1].padStart(2, '0')}-${dateParts[2].padStart(2, '0')}`;
|
||||||
|
|
||||||
|
// 根据面试状态确定状态码和文本
|
||||||
|
let statusCode = 'PENDING';
|
||||||
|
let statusText = status["面试状态"];
|
||||||
|
|
||||||
|
if (status["面试状态"] === "收到Offer") {
|
||||||
|
statusCode = 'OFFER';
|
||||||
|
} else if (status["面试状态"] === "拒绝Offer") {
|
||||||
|
statusCode = 'REJECTED_OFFER';
|
||||||
|
} else if (status["面试状态"] === "HR初筛未通过" || status["面试状态"] === "面试未通过") {
|
||||||
|
statusCode = 'FAILED';
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
id: index + 1,
|
||||||
|
position: status["查询岗位名称"],
|
||||||
|
interviewTime: formattedDate,
|
||||||
|
status: statusCode,
|
||||||
|
statusText: statusText,
|
||||||
|
job: matchedJob ? {
|
||||||
|
salary: matchedJob["薪资"],
|
||||||
|
tags: matchedJob["职位标签"] || [],
|
||||||
|
location: matchedJob["工作地点"],
|
||||||
|
education: matchedJob["学历要求"],
|
||||||
|
companyInfo: matchedJob["公司介绍"]
|
||||||
|
} : {
|
||||||
|
salary: "面议",
|
||||||
|
tags: [],
|
||||||
|
location: "待定",
|
||||||
|
education: "待定",
|
||||||
|
companyInfo: ""
|
||||||
|
}
|
||||||
|
};
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
const transformCompanyJobs = (jobsData) => {
|
const transformCompanyJobs = (jobsData) => {
|
||||||
// 获取今天的日期(只保留日期部分)
|
// 获取今天的日期(只保留日期部分)
|
||||||
const today = new Date();
|
const today = new Date();
|
||||||
today.setHours(0, 0, 0, 0);
|
today.setHours(0, 0, 0, 0);
|
||||||
|
|
||||||
|
// 获取所有有面试状态的岗位名称
|
||||||
|
const interviewedPositions = interviewStatusData.map(status => status["查询岗位名称"]);
|
||||||
|
|
||||||
return jobsData
|
return jobsData
|
||||||
|
// 过滤掉已有面试状态的岗位
|
||||||
|
.filter(job => !interviewedPositions.includes(job["内推岗位名称"]))
|
||||||
.map((job, index) => {
|
.map((job, index) => {
|
||||||
// 处理截止时间格式(2025/8/28 -> Date对象)
|
// 处理截止时间格式(2025/8/28 -> Date对象)
|
||||||
const deadlineParts = job["截止时间"].split('/');
|
const deadlineParts = job["截止时间"].split('/');
|
||||||
@@ -2212,6 +2265,7 @@ export const mockData = {
|
|||||||
title: "企业内推岗位",
|
title: "企业内推岗位",
|
||||||
subtitle: "基于AI智能匹配的企业内推岗位推荐系统",
|
subtitle: "基于AI智能匹配的企业内推岗位推荐系统",
|
||||||
companyPositions: transformCompanyJobs(companyJobsNewData),
|
companyPositions: transformCompanyJobs(companyJobsNewData),
|
||||||
|
interviewStatus: transformInterviewStatus(interviewStatusData, companyJobsNewData),
|
||||||
},
|
},
|
||||||
|
|
||||||
// 用户简历数据
|
// 用户简历数据
|
||||||
|
|||||||
@@ -13,9 +13,9 @@ export async function getCompanyJobsPageData(params) {
|
|||||||
total: mockData.companyJobs.companyPositions?.length || 0
|
total: mockData.companyJobs.companyPositions?.length || 0
|
||||||
},
|
},
|
||||||
interviews: {
|
interviews: {
|
||||||
list: mockData.companyJobs.internalPositions || [],
|
list: mockData.companyJobs.interviewStatus || [],
|
||||||
hasMore: false,
|
hasMore: false,
|
||||||
total: mockData.companyJobs.internalPositions?.length || 0
|
total: mockData.companyJobs.interviewStatus?.length || 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -62,7 +62,7 @@ export async function getJobsDetail(id) {
|
|||||||
// 获取企业内推岗位面试
|
// 获取企业内推岗位面试
|
||||||
export async function getInterviewsList(params) {
|
export async function getInterviewsList(params) {
|
||||||
// 使用mock数据
|
// 使用mock数据
|
||||||
const allInterviews = mockData.companyJobs.internalPositions || [];
|
const allInterviews = mockData.companyJobs.interviewStatus || [];
|
||||||
const page = params.page || 1;
|
const page = params.page || 1;
|
||||||
const pageSize = params.pageSize || 10;
|
const pageSize = params.pageSize || 10;
|
||||||
const startIndex = (page - 1) * pageSize;
|
const startIndex = (page - 1) * pageSize;
|
||||||
|
|||||||
77
网页未导入数据/文旅产业/岗位面试状态.json
Normal file
77
网页未导入数据/文旅产业/岗位面试状态.json
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"查询岗位名称": "会展策划师",
|
||||||
|
"阶段日期": "2025/9/16",
|
||||||
|
"面试状态": "收到Offer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"查询岗位名称": "商业会展执行专员",
|
||||||
|
"阶段日期": "2025/7/30",
|
||||||
|
"面试状态": "拒绝Offer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"查询岗位名称": "活动策划师",
|
||||||
|
"阶段日期": "2025/7/26",
|
||||||
|
"面试状态": "收到Offer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"查询岗位名称": "SEO专员",
|
||||||
|
"阶段日期": "2025/7/28",
|
||||||
|
"面试状态": "拒绝Offer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"查询岗位名称": "新媒体运营专员",
|
||||||
|
"阶段日期": "2025/7/31",
|
||||||
|
"面试状态": "拒绝Offer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"查询岗位名称": "ip运营",
|
||||||
|
"阶段日期": "2025/7/10",
|
||||||
|
"面试状态": "收到Offer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"查询岗位名称": "二次元周边店店长",
|
||||||
|
"阶段日期": "2025/6/27",
|
||||||
|
"面试状态": "HR初筛未通过"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"查询岗位名称": "社群运营",
|
||||||
|
"阶段日期": "2025/7/23",
|
||||||
|
"面试状态": "收到Offer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"查询岗位名称": "品牌推广专员",
|
||||||
|
"阶段日期": "2025/8/2",
|
||||||
|
"面试状态": "面试未通过"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"查询岗位名称": "会展策划师",
|
||||||
|
"阶段日期": "2025/9/16",
|
||||||
|
"面试状态": "收到Offer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"查询岗位名称": "客服",
|
||||||
|
"阶段日期": "2025/8/2",
|
||||||
|
"面试状态": "拒绝Offer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"查询岗位名称": "境外展会操作助理",
|
||||||
|
"阶段日期": "2025/8/9",
|
||||||
|
"面试状态": "面试未通过"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"查询岗位名称": "海外活动策划专员",
|
||||||
|
"阶段日期": "2025/7/17",
|
||||||
|
"面试状态": "收到Offer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"查询岗位名称": "品牌公关",
|
||||||
|
"阶段日期": "2025/9/7",
|
||||||
|
"面试状态": "等待面试"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"查询岗位名称": "景区运营专员",
|
||||||
|
"阶段日期": "2025/8/12",
|
||||||
|
"面试状态": "面试未通过"
|
||||||
|
}
|
||||||
|
]
|
||||||
Reference in New Issue
Block a user