""" 问卷种子数据 — 首次启动时自动初始化 重新设计:开放式问题,不预设立场,不提具体专业名 """ import sqlite3 import json import os DB_PATH = os.path.join(os.path.dirname(__file__), "data", "gaokao.db") def seed(): conn = sqlite3.connect(DB_PATH) conn.execute("PRAGMA journal_mode=WAL") conn.execute("PRAGMA foreign_keys=ON") # 初始化表结构 conn.executescript(""" CREATE TABLE IF NOT EXISTS questionnaires ( id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT NOT NULL, description TEXT, questions TEXT NOT NULL, target_user TEXT DEFAULT '天恒', created_at TEXT DEFAULT (datetime('now', 'localtime')) ); CREATE TABLE IF NOT EXISTS responses ( id INTEGER PRIMARY KEY AUTOINCREMENT, questionnaire_id INTEGER NOT NULL, user_name TEXT NOT NULL, answers TEXT NOT NULL, created_at TEXT DEFAULT (datetime('now', 'localtime')), FOREIGN KEY (questionnaire_id) REFERENCES questionnaires(id) ); """) # 迁移:为已有表添加 target_user 列(如果不存在) try: conn.execute("ALTER TABLE questionnaires ADD COLUMN target_user TEXT DEFAULT '天恒'") conn.commit() except sqlite3.OperationalError: pass # 列已存在 # 检查是否已有问卷数据(幂等:不重复插入) existing = conn.execute("SELECT COUNT(*) FROM questionnaires").fetchone()[0] if existing > 0: print(f"[seed] 问卷已存在({existing}份),跳过初始化") conn.close() return # ================================================================ # 问卷1: 综合兴趣和偏好问卷(合并版) # 将原"职业兴趣体验问卷"+"性格与行为模式问卷"+"院校偏好问卷"合并为一份 # 内分三个分区,带分区标题 # ================================================================ merged_qs = [ # ---- 第一分区:职业兴趣体验 ---- {"id": "SEC1", "type": "section", "title": "第一分区:职业兴趣体验", "desc": "以下问题没有标准答案,请根据你的真实感受和经历回答,不需要考虑应该怎么回答,只描述你最真实的想法。"}, {"id": "E1", "text": "做什么事情的时候,你会觉得时间过得特别快?", "type": "text", "placeholder": "比如:写代码、设计海报、打游戏、和朋友聊天..."}, {"id": "E2", "text": "当你完成了一件很有挑战性的事情,你通常是什么感受?", "type": "text", "placeholder": "比如:很有成就感、想再挑战更高的、没什么特别..."}, {"id": "E3", "text": "如果让你连续做同一件事10个小时,你最不可能选择做什么?", "type": "text", "placeholder": "写下你不会做的事情..."}, {"id": "C1", "text": "在团队合作中,你通常扮演什么角色?", "type": "single", "options": [ {"value": "A", "label": "我来做决定,大家听我的"}, {"value": "B", "label": "我听大家的,协调配合"}, {"value": "C", "label": "我负责具体执行"}, {"value": "D", "label": "我负责发现问题,提醒大家"}, {"value": "E", "label": "看情况,不一定"}, ]}, {"id": "C2", "text": "你更倾向于独立工作还是团队协作?", "type": "single", "options": [ {"value": "A", "label": "独立完成,更有掌控感"}, {"value": "B", "label": "团队协作,分工合作"}, {"value": "C", "label": "两者都可以,看任务性质"}, ]}, {"id": "S1", "text": "什么事情做得好会让你觉得自己很厉害?", "type": "text", "placeholder": "比如:解出一道难题、完成一个作品..."}, {"id": "S2", "text": "什么东西没做好会让你想放弃?", "type": "text", "placeholder": "比如:反复失败、被人否定、看不到进步..."}, {"id": "L1", "text": "学习新东西时,你更习惯于?", "type": "single", "options": [ {"value": "A", "label": "先看教程/文档,搞懂原理再动手"}, {"value": "B", "label": "直接动手做,遇到问题再查"}, {"value": "C", "label": "有人教我,带着我做"}, {"value": "D", "label": "边做边学,一起进行"}, ]}, {"id": "L2", "text": "面对一个完全陌生的事物,你会怎么做?", "type": "single", "options": [ {"value": "A", "label": "先搜索相关资料,全面了解"}, {"value": "B", "label": "直接尝试,不懂就问"}, {"value": "C", "label": "找有经验的人带路"}, {"value": "D", "label": "先观望,等别人先试"}, ]}, {"id": "W1", "text": "你理想中最完美的一天是什么样的?", "type": "text", "placeholder": "描述你理想的一天..."}, {"id": "W2", "text": "你更看重工作/学习的哪个方面?", "type": "multiple", "options": [ {"value": "A", "label": "有挑战,能成长"}, {"value": "B", "label": "有成就感,被认可"}, {"value": "C", "label": "能发挥创意"}, {"value": "D", "label": "稳定,不担心失业"}, {"value": "E", "label": "收入高"}, {"value": "F", "label": "时间灵活"}, ]}, # ---- 第二分区:性格与行为模式 ---- {"id": "SEC2", "type": "section", "title": "第二分区:性格与行为模式", "desc": "以下问题了解你在日常生活中的行为偏好,没有好坏对错之分,请如实选择最符合你实际情况的选项。"}, {"id": "B1", "text": "在社交场合中,你的能量通常从哪里来?", "type": "single", "options": [ {"value": "A", "label": "和很多人在一起,聊天交流"}, {"value": "B", "label": "独处,安静思考"}, {"value": "C", "label": "看情况,有时喜欢热闹有时喜欢安静"}, ]}, {"id": "B2", "text": "做重要决定时,你通常会?", "type": "single", "options": [ {"value": "A", "label": "和很多人讨论后再决定"}, {"value": "B", "label": "自己仔细想清楚再决定"}, {"value": "C", "label": "凭直觉,先做了再说"}, ]}, {"id": "B3", "text": "你更容易注意到事物的哪些方面?", "type": "single", "options": [ {"value": "A", "label": "具体的事实和细节"}, {"value": "B", "label": "整体的可能性和想象力"}, {"value": "C", "label": "两者差不多"}, ]}, {"id": "B4", "text": "描述一个你经历过的事情,你通常会?", "type": "single", "options": [ {"value": "A", "label": "详细还原过程和细节"}, {"value": "B", "label": "讲重点和感受,略过细节"}, {"value": "C", "label": "加入自己的理解和联想"}, ]}, {"id": "B5", "text": "当你和别人的观点不同,你会怎么做?", "type": "single", "options": [ {"value": "A", "label": "坚持我的观点,给出逻辑理由"}, {"value": "B", "label": "考虑对方的感受,寻求共识"}, {"value": "C", "label": "看谁的理由更充分"}, {"value": "D", "label": "先听大家的,之后再决定"}, ]}, {"id": "B6", "text": "你更容易被什么说服?", "type": "single", "options": [ {"value": "A", "label": "数据和逻辑分析"}, {"value": "B", "label": "情感故事和共情"}, {"value": "C", "label": "实际案例和效果"}, {"value": "D", "label": "权威人士的意见"}, ]}, {"id": "B7", "text": "你更喜欢什么样的计划?", "type": "single", "options": [ {"value": "A", "label": "提前做好计划,按部就班"}, {"value": "B", "label": "有个大概方向,灵活调整"}, {"value": "C", "label": "不做计划,随机应变"}, ]}, {"id": "B8", "text": "面对截止日期,你通常会?", "type": "single", "options": [ {"value": "A", "label": "提前完成,避免意外"}, {"value": "B", "label": "最后几天集中完成"}, {"value": "C", "label": "截止前一晚通宵搞定"}, {"value": "D", "label": "通常会拖到截止后"}, ]}, {"id": "B9", "text": "你通常如何认识新朋友?", "type": "single", "options": [ {"value": "A", "label": "主动搭话,主动组织活动"}, {"value": "B", "label": "等别人来认识我"}, {"value": "C", "label": "通过共同朋友介绍"}, {"value": "D", "label": "在共同活动中自然认识"}, ]}, {"id": "B10", "text": "当你遇到问题时,你通常会找谁?", "type": "multiple", "options": [ {"value": "A", "label": "自己想办法解决"}, {"value": "B", "label": "找父母或家人"}, {"value": "C", "label": "找朋友帮忙"}, {"value": "D", "label": "上网搜索答案"}, {"value": "E", "label": "找老师或权威人士"}, ]}, # ---- 第三分区:院校偏好 ---- {"id": "SEC3", "type": "section", "title": "第三分区:院校偏好与未来规划", "desc": "以下问题了解你对大学和未来的想法。没有对错,请选择最贴近你真实想法的选项。"}, {"id": "SCH1", "text": "你更倾向于在哪类城市上大学?", "type": "single", "options": [ {"value": "A", "label": "杭州/宁波等省内大城市"}, {"value": "B", "label": "省内其他城市(温州/嘉兴/台州等)"}, {"value": "C", "label": "省外一线城市(北京/上海/广州/深圳)"}, {"value": "D", "label": "省外新一线或二线城市(成都/武汉/西安等)"}, {"value": "E", "label": "哪里都行,不挑城市"}, ]}, {"id": "SCH2", "text": "对离家距离的接受度?", "type": "single", "options": [ {"value": "A", "label": "最好省内,周末能回家"}, {"value": "B", "label": "江浙沪范围内就行,小长假能回"}, {"value": "C", "label": "全国都行,寒暑假回一次就够了"}, {"value": "D", "label": "越远越好,想看看外面的世界"}, ]}, {"id": "SCH3", "text": "学校层次 vs 专业实力,怎么选?", "type": "single", "options": [ {"value": "A", "label": "优先学校牌子(985/211/双一流光环)"}, {"value": "B", "label": "优先专业实力(哪怕学校名气差一点)"}, {"value": "C", "label": "两者兼顾,取中间值"}, {"value": "D", "label": "无所谓,看缘分"}, ]}, {"id": "SCH4", "text": "用一个词或一句话描述你感兴趣的方向(可以天马行空):", "type": "text", "placeholder": "比如:做游戏、设计产品、搞技术、研究 AI..."}, {"id": "SCH5", "text": "你为什么对这个方向感兴趣?", "type": "text", "placeholder": "可以是你的经历、性格、或者单纯的喜欢..."}, {"id": "SCH6", "text": "对大学教学方式的偏好?", "type": "single", "options": [ {"value": "A", "label": "小班制+项目制+导师制(像工作室一样)"}, {"value": "B", "label": "大班理论课为主也可以接受"}, {"value": "C", "label": "无所谓,能学到东西就行"}, ]}, {"id": "SCH7", "text": "对学费的承受范围?", "type": "single", "options": [ {"value": "A", "label": "公办普通学费(5000~8000/年)"}, {"value": "B", "label": "可以接受稍高(1~3万/年)"}, {"value": "C", "label": "中外合作也可考虑(4~8万/年)"}, ]}, {"id": "SCH8", "text": "大学毕业后第一优先级是?", "type": "single", "options": [ {"value": "A", "label": "直接就业,尽快经济独立"}, {"value": "B", "label": "考研深造,提升学历"}, {"value": "C", "label": "考公/考编,追求稳定"}, {"value": "D", "label": "还没想好"}, ]}, {"id": "SCH9", "text": "你对大学校园氛围的偏好?", "type": "single", "options": [ {"value": "A", "label": "学术氛围浓厚,图书馆经常找不到座位"}, {"value": "B", "label": "创新创业活跃,社团和比赛多"}, {"value": "C", "label": "文艺气息重,艺术展演和创作空间多"}, {"value": "D", "label": "轻松自在就行,不要太大压力"}, ]}, {"id": "SCH10", "text": "你对未来的薪资预期(毕业5年内)?", "type": "single", "options": [ {"value": "A", "label": "8~12万/年,能养活自己就行"}, {"value": "B", "label": "12~20万/年,中等偏上"}, {"value": "C", "label": "20万+/年,越高越好"}, {"value": "D", "label": "没概念,不太关心"}, ]}, ] # ================================================================ # 问卷2: 家庭期望对齐问卷(去掉具体专业名) # 只问抽象的期望,不预设任何方向 # ================================================================ family_qs = [ { "id": "F1", "text": "你认为天恒大学毕业后最理想的去向是?", "type": "single", "options": [ {"value": "A", "label": "在杭州/宁波就业,离家近"}, {"value": "B", "label": "去一线城市闯一闯"}, {"value": "C", "label": "考研/深造后再决定"}, {"value": "D", "label": "尊重天恒自己的选择"}, ] }, { "id": "F2", "text": "天恒现在感兴趣的方向,你了解多少?", "type": "single", "options": [ {"value": "A", "label": "非常了解,经常和他讨论"}, {"value": "B", "label": "大概知道,但不深入"}, {"value": "C", "label": "不太清楚,他没说过"}, {"value": "D", "label": "他感兴趣的方向我不太支持"}, ] }, { "id": "F3", "text": "你对'好工作'的核心定义是?(选最重要的1~2个)", "type": "multiple", "options": [ {"value": "A", "label": "收入高"}, {"value": "B", "label": "稳定(不容易失业)"}, {"value": "C", "label": "天恒做得开心、有成就感"}, {"value": "D", "label": "有社会地位、体面"}, {"value": "E", "label": "有成长空间,能不断提升"}, ] }, { "id": "F4", "text": "如果中外合作办学(学费4~8万/年)是找到好专业的最佳途径,你支持吗?", "type": "single", "options": [ {"value": "A", "label": "支持,教育投资值得"}, {"value": "B", "label": "可以考虑,但要看具体项目和回报"}, {"value": "C", "label": "经济压力大,尽量不选"}, ] }, { "id": "F5", "text": "你认为天恒最大的优势是什么?(选1~2个)", "type": "multiple", "options": [ {"value": "A", "label": "创造力强,有艺术感觉"}, {"value": "B", "label": "社交能力强,能搞定人际关系"}, {"value": "C", "label": "动手实践能力强"}, {"value": "D", "label": "逻辑思维好,数理基础扎实"}, {"value": "E", "label": "有主见,知道自己要什么"}, {"value": "F", "label": "适应能力强,什么环境都能活"}, ] }, { "id": "F6", "text": "你最担心天恒大学生涯可能出什么问题?", "type": "single", "options": [ {"value": "A", "label": "对专业失去兴趣,混日子"}, {"value": "B", "label": "沉迷游戏或其他娱乐,荒废学业"}, {"value": "C", "label": "社交孤立或不适应集体生活"}, {"value": "D", "label": "毕业找不到工作"}, {"value": "E", "label": "不太担心,相信他能搞定"}, ] }, { "id": "F7", "text": "志愿填报时,你认为最终决定权应该?", "type": "single", "options": [ {"value": "A", "label": "天恒自己决定,父母只提供信息"}, {"value": "B", "label": "全家协商,共同决策"}, {"value": "C", "label": "父母有最终否决权"}, ] }, { "id": "F8", "text": "用一句话描述你对天恒大学四年的期望:", "type": "text", "placeholder": "请输入你的期望...", }, ] # ---------- 插入数据 ---------- questionnaires = [ { "title": "综合兴趣和偏好问卷", "description": "合并了职业兴趣体验、性格行为模式和院校偏好三大板块,一份问卷全面了解天恒的个人画像。含3个分区共31题,完成时间约15分钟。", "questions": json.dumps(merged_qs, ensure_ascii=False), "target_user": "天恒" }, { "title": "家庭期望对齐问卷", "description": "请每位家庭成员独立填写,表达你对天恒大学生涯的真实想法。去掉预设的专业立场,只聊最真实的期望。完成后可以查看汇总,发现家人之间的共同点和差异点。", "questions": json.dumps(family_qs, ensure_ascii=False), "target_user": "父母" }, ] for q in questionnaires: conn.execute( "INSERT INTO questionnaires (title, description, questions, target_user) VALUES (?, ?, ?, ?)", (q["title"], q["description"], q["questions"], q["target_user"]) ) conn.commit() conn.close() print(f"[seed] 已初始化 {len(questionnaires)} 份开放式问卷") if __name__ == "__main__": seed()