Zodiac & Career Test(星座查询 + 职业性格测试)
Overview
提供两项独立功能:星座查询(日期/星座名 → 星座资料卡)与职业性格测试(RIASEC 模型 12 题 → 职业性格报告)。两项功能可独立触发,也可串联使用(如"我是天秤座,顺便测测我适合什么职业"——此时星座部分仅作参考信息,职业结论必须以测试结果为准)。
功能路由
收到用户请求后,按以下规则路由:
- 用户提供出生日期或星座名称,询问星座信息/性格/运势 → 走【功能一:星座查询】
- 用户要求"职业测试"、"测测我适合什么工作"、"职业性格"等 → 走【功能二:职业性格测试】
- 两项都涉及 → 先执行星座查询(快速、无交互成本),再发起职业测试流程
- 用户请求含糊(如只说"帮我测测")→ 用一句话澄清:是想查星座,还是做职业性格测试,还是两者都要
功能一:星座查询
输入参数
| 参数 | 必填 | 说明 |
|---|---|---|
| 出生日期 | 与星座名二选一 | 支持 5月20日、1990-05-20、05/20、5.20 等格式;年份可有可无(星座判定只需月、日) |
| 星座名称 | 与出生日期二选一 | 支持 12 星座标准名与常见别名(牧羊座=白羊座、山羊座=摩羯座、宝瓶座=水瓶座、室女座=处女座、人马座=射手座等) |
处理流程
- 解析输入,识别为日期或星座名。
- 日期输入:先运行脚本做确定性的日期校验与星座判定(避免模型记错交界日期):
bash
python scripts/zodiac_lookup.py --date "5-20"
脚本输出 JSON:星座 key、标准名、日期范围、boundary 标志(是否为交界日)。若日期非法(如 2月30日、13月45日),脚本返回 error 字段,向用户转述错误原因并请求重新提供。
3. 星座名输入:同样用脚本解析(内置别名映射):
bash
python scripts/zodiac_lookup.py --name "山羊座"
4. 依据脚本返回的星座 key,从 references/zodiac_data.md 加载该星座的完整资料。
5. 按下方【输出格式】组织回复。用户若未指定关注维度,输出完整资料卡;用户若只问单一维度(如"天蝎座和什么星座配"),只答所问,不强制输出整卡。
输出格式
完整资料卡按以下模板输出(顺序与标题保持一致):
## ♏ 天蝎座(Scorpio)
| 维度 | 信息 |
|------|------|
| 日期范围 | 10月24日 - 11月22日 |
| 元素/三方宫 | 水象 · 固定宫 |
| 守护星 | 冥王星(传统守护星:火星) |
| 幸运色 | 深红、黑色 |
| 幸运数字 | 2、9 |
| 幸运宝石 | 黄玉、石榴石 |
### 性格特征
**核心特质**:……
**优点**:……
**注意点**:……
**适配星座**:……
### 运势参考
> 以下为基于星座一般特征的泛化描述,仅供娱乐参考,不构成任何预测或建议。
- **事业**:……
- **感情**:……
- **财运**:……
运势生成规则:从 references/zodiac_data.md 中该星座的"运势倾向"字段生成泛化描述(描述该星座人群普遍的行事风格带来的倾向)。禁止编造具体数字预测("本周三会遇到贵人"、"投资必赚 20%")。若用户追问"今日运势"等精确内容,明确说明本 skill 提供的是基于星座特征的参考性描述。
边界情况处理
| 情况 | 处理方式 |
|---|---|
| 日期格式无法解析(如"秋天的某一天") | 说明支持的格式(X月X日 / YYYY-MM-DD / MM/DD),请用户重新提供 |
| 日期不存在(2月30日、4月31日、13月、0日) | 明确指出该日期不存在及原因,请用户核对 |
| 2月29日 | 合法日期(按闰年规则处理),正常判定为双鱼座,无需额外提示年份 |
| 交界日期(星座首日/末日,如 4月19/20日) | 脚本返回 boundary: true 时,在资料卡前加一行提示:"您提供的日期处于星座交界,不同流派的划分可能相差一天,以下按标准西方占星日期划分" |
| 只提供月份未提供日期(如"我5月出生") | 说明需要具体日期才能判定,并列出该月涉及的 1-2 个星座供用户参考 |
| 星座名错别字("天歇座"、"磨羯座") | 尝试纠正并确认:"您是想查天蝎座吗?"确认后再输出 |
| 星座名不在 12 星座内("蛇夫座"、"十三星座") | 说明通行占星体系为 12 星座,并列出 12 星座名称清单 |
| 日期与星座名同时提供且矛盾("我是 5月20日 的双子座") | 以日期判定结果为准,礼貌指出:"5月20日 按标准划分是金牛座哦" |
| 用户问"XX 座准不准/科学吗" | 如实说明星座为流行文化娱乐内容,无科学实证,本 skill 以娱乐和自我探索为目的 |
功能二:职业性格测试(RIASEC)
测试设计说明
基于霍兰德职业兴趣理论(RIASEC)的简化版测评:12 道题,每题 A/B 二选一,每个选项归属 R/I/A/S/E/C 六个维度之一(每维度恰好出现 4 次),得分范围 0-4。测试题目、维度定义、评分规则与职业匹配表全部位于 references/career_test.md,提问前必须加载该文件,逐字使用其中题目,不得自行改编或增删。
交互流程
- 开场说明:告知用户——测试基于霍兰德 RIASEC 模型,共 12 道二选一题,约 3-5 分钟;请凭第一直觉作答,没有对错之分。
- 分批提问:默认每次提出 3-4 题(如第 1-3 题),等用户回答该批后再提下一批。若用户表示想快点("一次全给我"),可一次性列出 12 题。每次提问都标注题号,格式如下:
```markdown
第 1 题:以下哪个描述更符合你?
A. 我喜欢动手修理、组装或制作实物
B. 我喜欢分析问题背后的原理
第 2 题:……
```
- 记录进度:在会话中维护已收集的答案映射(题号 → A/B)。每批回答后简短复述已确认的答案(如"已收到 1-6 题"),让用户可核对。
- 收齐 12 题答案后评分:运行脚本得出确定性的得分与代码:
bash
python scripts/score_career_test.py --answers "ABABABABABAB"
参数为 12 位字符串,按题号顺序,每位为 A 或 B。脚本输出 JSON:六维度得分、排序结果、霍兰德代码(2-3 个字母)、并列情况。
5. 从 references/career_test.md 加载对应维度与组合的解读与职业列表,按下方【输出格式】生成报告。
评分规则(脚本已内置,供核对答案时参考)
- 各维度得分 = 该维度选项被选中的次数(0-4)。
- 霍兰德代码取得分最高的前两个维度;若次高并列,纳入前三个;若最高分并列,并列项按 RIASEC 字母顺序排列并全部纳入。
- 所有维度同为 2 分的极端均匀情况:代码输出
RIASEC,报告中说明兴趣分布均衡,建议用户结合实际经历自我审视。
输出格式
## 职业性格测试报告
**霍兰德代码:ASE**(艺术型 A · 社会型 S · 企业型 E)
### 六维度得分
| 维度 | 得分 |
|------|------|
| A 艺术型 | 4/4 |
| S 社会型 | 3/4 |
| E 企业型 | 2/4 |
| R 现实型 | 1/4 |
| I 研究型 | 0/4 |
| C 常规型 | 0/4 |
### 性格解读
(结合代码首两维度的特征描述,2-4 句)
### 适配职业方向
(列出 6-10 个职业,按主维度→次维度组织;标注哪些与首维度强相关)
### 发展建议
(2-3 条可操作建议:如何发挥优势、补足短板、下一步可做什么验证)
> 本测试为简化版兴趣测评,仅供职业探索参考,不构成职业规划或人事决策依据。
边界情况处理
| 情况 | 处理方式 |
|---|---|
| 回答不是 A 或 B(如"C"、"都行"、"不知道") | 请用户在该题的 A/B 中选择更倾向的一项;用户坚持"都行"时,请其任意选一个,并说明第一直觉更准确 |
| 回答批次不完整(问了 3 题只答 2 题) | 点明缺失题号,只请求补答缺失的题,不重复整批 |
| 用户中途表示不想继续 | 保存进度并告知:"已记录 X 题,随时回来可以从中断处继续。"不强迫完成 |
| 用户要求中途换题/改答案 | 允许:明确告知修改了第几题,评分前重新核对全部答案 |
| 用户一次性给出全部 12 题答案(如直接输入 "ABBA..." 或分号分隔) | 逐位解析并回显确认("第 3 题您选了 B,对吗?"),确认无误后直接评分 |
| 用户跳过测试直接问"我适合什么职业"且信息不足 | 建议做测试(一句话说明价值),用户拒绝则按其提供的已有信息给出通用建议并注明未经测评 |
| 用户要求输出"测试结果文件" | 按输出格式生成 Markdown 文件交付 |
| 用户质疑测试科学性 | 如实说明:霍兰德模型在职业辅导领域应用广泛,但本 skill 为简化版,专业场景请使用正式测评工具 |
Resources
references/zodiac_data.md— 12 星座完整资料(日期范围、元素、守护星、性格、幸运物、运势倾向、别名映射)。星座查询输出前必须加载。references/career_test.md— RIASEC 测试题库(12 题)、六维度定义、评分细则、维度与常见组合的职业匹配表。测试提问前必须加载。scripts/zodiac_lookup.py— 日期/星座名 → 星座的确定性判定(含日期合法性校验、闰年处理、别名映射、交界日标记)。scripts/score_career_test.py— 12 题答案 → 六维度得分与霍兰德代码的确定性计算(含平局处理)。
通用语气与免责
- 全程语气轻松友好,星座部分允许适度活泼的措辞,职业测试报告部分保持专业、建设性。
- 任何输出不得替代专业建议:星座内容仅为娱乐;职业测试仅为自我探索参考。用户表现出重大职业/人生决策依赖倾向时,温和提醒结果仅供参考。
- 不对用户做价值评判(如"你性格有缺陷"),性格描述一律用"特质/倾向/注意点"等中性表述。