test: demo seed now 18 footprints across two academic years

This commit is contained in:
root
2026-10-17 16:05:34 +08:00
parent 952a07fe6e
commit caa5cac7b7
24 changed files with 247 additions and 113 deletions
+60 -43
View File
@@ -359,51 +359,59 @@ function openDb(dbPath) {
// ---------- 演示数据(demo 账号播种 / 本地 seed 共用) ----------
// 行格式: [类型, 标题, 角色, 级别, 获奖等级, 主办方, 开始, 结束, 状态, 描述, 结果, 标签, 维度, extras, metrics]
export const DEMO_ROWS = [
['竞赛', '2025 全国大学生数学建模竞赛', '主导', '国家级', '省市级二等奖', '中国工业与应用数学学会', '2025-09-05', '2025-09-08', 'finished',
'担任队长,负责模型建立与论文主笔;协调三人分工与时间安排', '重庆赛区二等奖', ['建模', '团队协作'], ['学业深造'],
{ my_work: '模型建立与论文主笔', deliverable: '参赛论文《基于优化模型的共享单车调度研究》', team_members: '张三、李四、王五' }, {}],
['竞赛', '第十六届蓝桥杯程序设计大赛', '参加', '省市级', '省市级二等奖', '工业和信息化部人才交流中心', '2025-04-12', '2025-06-20', 'finished',
'备战算法与数据结构,完成省赛', '重庆赛区 C/C++ B 组二等奖', ['算法'], ['职业发展', '学业深造'],
{ my_work: '独立参赛', deliverable: '省赛获奖证书' }, {}],
['竞赛', '全国大学生信息安全竞赛', '核心', '国家级', null, '教育部高等学校网络空间安全专业教学指导委员会', '2025-05-01', '2025-08-15', 'submitted',
'负责 Web 漏洞挖掘与利用脚本编写,参与作品报告撰写', '已提交作品,等待国赛评审', ['安全', 'CTF'], ['职业发展'],
{ my_work: 'Web 漏洞挖掘与利用脚本编写', deliverable: '参赛作品与报告' }, {}],
['志愿公益', '校图书馆迎新志愿服务', '参加', '校级', null, '校图书馆', '2025-09-01', '2025-09-05', 'finished',
'新生入馆引导与借阅咨询,共服务 5 天', '获馆方感谢信', ['志愿'], ['综合素养'],
{ hours: 24, contact: '李老师' }, { volunteer_hours: 24 }],
// ---- 大一(2023-2024 学年):学生工作 / 志愿 / 文体 / 证书 ----
['学生工作', '院学生会宣传部干事', '干事', '院级', null, '院学生会', '2023-09-01', '2024-06-30', 'finished',
'负责活动推文撰写与海报设计,全年产出推文 20 篇', '获优秀干事', ['宣传'], ['综合素养'],
{ duties: '推文撰写、海报设计、活动现场摄影', term: '2023.09 - 2024.06' }, {}],
['志愿公益', '校迎新志愿服务', '参加', '校级', null, '校青年志愿者联合会', '2023-09-01', '2023-09-03', 'finished',
'新生入馆引导与借阅咨询', '获馆方感谢信', ['志愿'], ['综合素养'],
{ hours: 24 }, { volunteer_hours: 24 }],
['志愿公益', '无偿献血', '参加', null, null, '市中心血站', '2024-03-15', '2024-03-15', 'finished',
'全血献血 400ml', '', ['公益'], ['综合素养'],
{ hours: 2 }, { volunteer_hours: 2 }],
['文体活动', '校运动会男子3000米', '参加', '校级', '三等奖', '校体育运动委员会', '2024-04-18', '2024-04-20', 'finished',
'坚持训练一个月,决赛第三名', '', ['文体'], ['兴趣生活'],
{ participation: '男子3000米决赛' }, {}],
['证书技能', '大学英语四级(CET-4)', '参加', '国家级', null, '教育部教育考试院', '2024-06-15', '2024-08-20', 'finished',
'笔试 562 分', 'CET-4 562 分', ['英语'], ['学业深造', '职业发展'],
{ score: '562' }, {}],
// ---- 大二(2024-2025 学年):竞赛 / 科研 / 荣誉 / 证书 ----
['竞赛', '全国大学生数学建模竞赛', '主导', '省市级', '一等奖', '中国工业与应用数学学会', '2024-09-05', '2024-09-08', 'finished',
'担任队长,负责模型建立与论文主笔;协调三人分工', '重庆赛区一等奖', ['建模', '团队协作'], ['学业深造'],
{ my_work: '模型建立与论文主笔', team_members: '张三、李四' }, {}],
['竞赛', '第十六届蓝桥杯程序设计大赛', '参加', '省市级', '二等奖', '工业和信息化部人才交流中心', '2025-04-12', '2025-06-01', 'finished',
'备战算法与数据结构,完成省赛', '重庆赛区 C/C++ B 组二等奖', ['算法'], ['职业发展'],
{ my_work: '独立参赛' }, {}],
['竞赛', '全国大学生信息安全竞赛', '核心', '国家级', '三等奖', '网络空间安全专业教指委', '2025-05-01', '2025-08-15', 'finished',
'负责 Web 漏洞挖掘与利用脚本编写', '全国总决赛三等奖', ['安全', 'CTF'], ['职业发展'],
{ my_work: 'Web 漏洞挖掘与利用脚本' }, {}],
['科研', '大学生创新创业训练计划项目', '主导', '校级', null, '校创新创业学院', '2025-03-01', null, 'ongoing',
'主持校级大创项目「基于流量特征的入侵检测研究」,带 2 名成员', '中期检查通过', ['科研', '安全'], ['学业深造'],
{ authors: '主持人', outcome: '研究报告' }, {}],
['文体活动', '校园十佳歌手大赛', '参加', '校级', '二等奖', '校团委', '2024-12-01', '2024-12-15', 'finished',
'初赛复赛决赛三轮', '校园十佳歌手', ['文体'], ['兴趣生活'],
{}, {}],
['志愿公益', '社区敬老院慰问活动', '参加', '区县级', null, '所在社区居委会', '2025-03-15', '2025-03-15', 'finished',
'陪伴老人、协助整理活动室', '', ['志愿', '公益'], ['综合素养'],
{ hours: 6 }, { volunteer_hours: 6 }],
['学生工作', '院学生会宣传部干事', '参加', '院级', null, '院学生会', '2024-09-01', '2025-06-30', 'finished',
'负责活动推文撰写与排版,全年产出推文 20 篇', '获优秀干事', ['宣传'], ['综合素养'],
{ duties: '推文撰写与排版、活动现场摄影', term: '2024.09 - 2025.06' }, {}],
['学生工作', '院学生会宣传部副部长', '主导', '院级', null, '院学生会', '2025-09-01', null, 'ongoing',
'统筹部门工作,管理 8 名干事,主导院级活动宣传方案', '', ['管理'], ['综合素养', '职业发展'],
{ duties: '部门统筹、活动宣传方案设计', term: '2025.09 - 至今' }, {}],
['荣誉惩处', '校级二等奖学金', '参加', '校级', null, '云川理工学院', '2025-10-15', '2025-10-15', 'finished',
'2024-2025 学年综合测评前列', '二等奖学金', ['奖学金'], ['学业深造'],
{ issued_by: '云川理工学院' }, {}],
['学生工作', '校学生会学习部干事', '干事', '校级', null, '校学生会', '2024-09-01', null, 'ongoing',
'负责学风建设活动组织与学业帮扶配对', '', ['学风'], ['综合素养'],
{ duties: '学风活动组织、学业帮扶配对', term: '2024.09 - 至今' }, {}],
['荣誉惩处', '优秀共青团员', '参加', '校级', null, '校团委', '2025-05-04', '2025-05-04', 'finished',
'五四表彰', '优秀共青团员', ['表彰'], ['综合素养'],
{ issued_by: '共青团重庆城市科技学院委员会' }, {}],
['证书技能', '大学英语六级', '参加', '国家级', null, '教育部教育考试院', '2025-06-14', '2025-08-20', 'finished',
'笔试 528 分', 'CET-6 528 分', ['英语'], ['学业深造', '职业发展'],
{ cert_no: '510001251200123', score: '528' }, {}],
['证书技能', '计算机技术与软件专业技术资格(中级)', '参加', '国家级', null, '工业和信息化部', '2025-11-08', null, 'ongoing',
'备考软件设计师', '', ['软考'], ['职业发展'],
{ score: '' }, {}],
['学业', '2024-2025 学年秋季学期', '参加', null, null, null, '2024-09-01', '2025-01-15', 'finished',
'学期绩点 3.72,专业排名 12/156', '', ['绩点'], ['学业深造'],
{ semester_label: '2024-2025-1' }, {}],
['学业', '2024-2025 学年春季学期', '参加', null, null, null, '2025-02-24', '2025-07-05', 'finished',
'学期绩点 3.85,专业排名 9/156', '', ['绩点'], ['学业深造'],
{ semester_label: '2024-2025-2' }, {}],
['文体活动', '校运动会开幕式方阵', '参加', '校级', null, '校体育运动委员会', '2025-04-18', '2025-04-20', 'finished',
'学院方阵队员,参与排练与开幕式表演', '', ['文体'], ['兴趣生活'],
{ participation: '方阵队员' }, {}],
['科研', '大学生创新创业训练计划项目', '主导', '校级', null, '校创新创业学院', '2025-03-01', null, 'ongoing',
'主持校级大创项目「基于流量特征的入侵检测研究」,带 2 名成员', '中期检查通过', ['科研', '安全'], ['学业深造', '职业发展'],
{ authors: '主持人', outcome: '研究报告' }, {}],
{}, {}],
['荣誉惩处', '综合测评奖学金', '参加', '校级', null, '云川理工学院', '2025-10-15', '2025-10-15', 'finished',
'2024-2025 学年综合测评前列(细则规定综测奖学金不加分,用于验证排除逻辑)', '二等奖学金', ['奖学金'], ['学业深造'],
{}, {}],
['证书技能', '全国计算机等级考试二级', '参加', '国家级', null, '教育部考试中心', '2025-03-22', '2025-05-10', 'finished',
'MS Office 高级应用', '二级合格证书', ['计算机'], ['职业发展'],
{}, {}],
['证书技能', '机动车驾驶证(C1)', '参加', null, null, '市公安局交通管理局', '2024-07-01', '2024-08-10', 'finished',
'科目一到科目四一次通过', 'C1 驾驶证', ['驾照'], ['生活技能'],
{}, {}],
['证书技能', '计算机技术与软件专业技术资格(软件设计师)', '参加', '国家级', null, '工业和信息化部', '2025-11-08', null, 'ongoing',
'备考软件设计师(中级)', '', ['软考'], ['职业发展'],
{}, {}],
['实习实践', '某安全公司渗透测试实习生', '参加', null, null, '某网络安全科技有限公司', '2025-07-01', '2025-08-25', 'finished',
'参与企业授权渗透测试项目 3 个,编写测试报告', '获实习优秀评价', ['实习', '安全'], ['职业发展'],
{ position: '渗透测试实习生', mentor: '陈工' }, {}]
@@ -421,7 +429,10 @@ export const DEMO_PROFILE = {
}
};
// 学期: { term, gpa, rank, total, courses: [课程名, 学分, 分数, 绩点][] }
// 演示附件用真实 PNG(1x1,可在预览查看并进入综测证明材料)
const DEMO_PNG = 'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg==';
// 学期: { term, gpa, rank, total, courses: [课程名, 学分, 分数, 绩点, 类别][] }
export const DEMO_SEMESTERS = [
{ term: '2023-2024-1', gpa: 3.42, rank: 38, total: 156, courses: [
['高等数学(上)', 5, 78, 3.0, '必修课'], ['大学英语(一)', 3, 85, 3.7, '必修课'], ['程序设计基础', 4, 91, 4.0, '必修课'],
@@ -433,7 +444,7 @@ export const DEMO_SEMESTERS = [
]},
{ term: '2024-2025-1', gpa: 3.78, rank: 18, total: 156, courses: [
['概率论与数理统计', 3, 88, 3.9, '必修课'], ['操作系统', 4, 92, 4.0, '必修课'], ['计算机网络', 4, 86, 3.8, '必修课'],
['数据库原理', 3, 94, 4.0, '必修课'], ['马克思主义基本原理', 2, 81, 3.3, '必修课']
['数据库原理', 3, 94, 4.0, '必修课'], ['马克思主义基本原理', 2, 81, 3.3, '必修课'], ['体育(三)', 1, 88, 3.9, '必修课']
]},
{ term: '2024-2025-2', gpa: 3.85, rank: 12, total: 156, courses: [
['软件工程', 3, 90, 4.0, '必修课'], ['信息安全导论', 3, 95, 4.0, '必修课'], ['密码学基础', 3, 89, 3.9, '必修课'],
@@ -1225,13 +1236,19 @@ function listFootprints(d, query) {
for (const [t, title, role, level, grade, organizer, start, end, status, desc, result, tags, dimNames, extras, metrics] of DEMO_ROWS) {
const typeId = typeIds[t];
if (!typeId) continue;
handleCommand('footprint_upsert', { item: {
const fr = handleCommand('footprint_upsert', { item: {
type_id: typeId, title, role, level, award_grade: grade, organizer,
start_date: start, end_date: end, status, description: desc, result,
tags, metrics, extras,
dimension_ids: (dimNames || []).map((nm) => dimIds[nm]).filter(Boolean),
}});
n++;
// 演示附件:竞赛/荣誉记录附带证书图片(可预览、可进综测证明材料)
if (/竞赛|优秀共青团员/.test(String(title)) && status === 'finished') {
try {
handleCommand('attachment_add', { owner_id: fr.item.id, file_name: '获奖证书.png', mime: 'image/png', size: DEMO_PNG.length, data_b64: DEMO_PNG, thumb_b64: DEMO_PNG });
} catch {}
}
}
let sems = 0;
for (const s of DEMO_SEMESTERS) {