feat(consult): career answers don't guess the field — strength/resistance/timing + one ask; follow-up reads a stated job (BUG-1176 decision); goldens regenerated; rubric round-4 pass lines; backtest script career follow-up

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
This commit is contained in:
Jesse_Chen
2026-10-02 09:12:06 +08:00
co-authored by Claude Opus 5.5
parent ffafa28b79
commit 6a02e5e91e
11 changed files with 82 additions and 35 deletions
@@ -1,6 +1,6 @@
import type { ConsultationDomain } from "./consultation-domain-registry.ts";
import type { ProfileGender } from "./profile-gender.ts";
import { AFFLICTION_RANGE_RULE } from "./consultation-thinking-plan.ts";
import { AFFLICTION_RANGE_RULE, CAREER_FIELD_ASK_RULE } from "./consultation-thinking-plan.ts";
/**
* Condensed consultation checklists (TASK-consult-evidence-card-v2-20260927
@@ -81,14 +81,12 @@ export const CONSULT_BRIEF_CHECKLIST_SOURCE = "consultation checklist (TASK-cons
export const CONSULTATION_CONDENSED_CHECKLISTS: Readonly<Partial<Record<ConsultationDomain, readonly string[]>>> = {
career: [
"先讲这张盘一生的事业形态:公众型还是幕后型、靠什么出头(AL 落宫、10 宫与 10 宫主、太阳、入旺入庙星坐角宫);受冲只说阻力和代价,不改写事业形态。",
"行业看星的本性:10 宫里的星、10 宫主、AmK,以及 10 宫主在 D9 的定位星。太阳 = 权力、公职、管理;月亮 = 公众、照护、流动;火星 = 体力、竞技、工程、军警;水星 = 沟通、写作、商业、分析;木星 = 教育、法律、顾问、宗教;金星 = 艺术、表演、娱乐、美;土星 = 劳动、组织、长期工程;罗睺 = 新技术、跨界、海外、大众传播。先说最强的一两颗,不平均罗列。",
"公众型还是幕后型要有依据:太阳或 10 宫主强且在角宫、AL 或 A10 落角宫、10 宫或命宫有入旺入庙星、`traditional_yogas` 有大格局,偏公众;10 宫主落 12 宫且无上述信号,才偏幕后。没有依据就不写这一句。不写「出头慢、越往后越稳、靠专业交付」这类人人适用的话,除非能指出具体盘面。",
CAREER_FIELD_ASK_RULE,
"必看:D1 10 宫与 10 宫主、AmK;卡上 d9 段确认 10 宫主与 AmK 的旺弱、Vargottama、D1/D9 反转;D10 上升与 10 宫;AL 与 A10;10 宫 SAV 与木星、土星所在宫的 SAV。",
"时间:Vimshottari(MD/AD/PD)与 Narayana 双轨同向才谈应期,看大运主与 10 宫、10 宫主、D10 的关系;每颗星先按功能吉凶定性。",
"分三层说,不得合成一句「事业机会」:①机会出现(消息、邀约、初步接洽)②成形(合同、合作、长期项目)③公开落地(发布、到账、被看见、名声)。",
"禁写:本命承诺弱时,不得因一段大运或一次行运断言「事业必成」;不得把接触窗写成落地窗。",
"AL 落第几宫要说出来(落 10 宫 = 公众形象就是事业);10 宫主、AmK 的受冲按通用读法。",
"AL 落第几宫要说出来(说明名声和外界印象这条线有没有力量,不据此断定公众型或幕后型);10 宫主、AmK 的受冲按通用读法。",
"卡外按需补取一次:Karakamsha、宫主链、D1→D9→D10 联动、Argala、Chara 大运;KP 精确宫头仍 blocked,只作参考、不作依据。",
],
marriage: [
@@ -382,6 +382,21 @@ const ANSWER_FROM_EVIDENCE = "拿到本轮计算结果后直接写给用户的
*/
export const AFFLICTION_RANGE_RULE = "同一个人或同一件事有两个及以上受冲信号:先说这条线有压力或距离的迹象(括号里写是哪几条),再说现实里可能是什么,给一个范围(例:「现实里可能是分开、离得远,也可能只是关系紧、话少」);不替用户断定他自己更清楚的事实(父母在不在身边、几段婚姻或感情、有没有病),也不反过来写「有分量」「站得住」「不是缺位」「底子不差」「关系稳」「能走下去」;这一段末尾用一句话请用户说说实际情况,全篇这类请求最多一处。";
/**
* Career answers (product decision 2026-10-02 on TASK-consult-career-yoga-
* functional-20261002, BUG-1176: "don't guess the field — ask"). The chart
* cannot separate a footballer from a consultant or a public figure from a
* back-office one (the 10th-house system of the backtest celebrities read as
* analysis / advice for actors, athletes and presidents alike), so the answer
* talks about strength, resistance and timing and asks what the user does.
* Same principle as AFFLICTION_RANGE_RULE. Defined here only; the career
* checklist quotes it.
*/
export const CAREER_FIELD_ASK_RULE = "事业题只讲盘上的力量、阻力和时间:哪几颗星、哪几个宫给事业撑力,阻力在哪,哪段时间推进;不替用户断定他做哪一行、是公众型还是幕后型(盘分不出,用户自己更清楚,同受冲规则);不写「出头慢」「越往后越稳」「靠专业交付」这类人人适用的话,除非能指出具体盘面;事业这一段末尾用一句话问用户实际做什么(例:「你现在具体做哪一行、什么角色,告诉我一句,我按你的实际工作再看。」),这一句就是全篇唯一一处请用户说实际情况,受冲那段不再另问。";
/** BUG-1176: the user states their work in a follow-up; read the chart relative to it. */
export const CAREER_FOLLOW_UP_RULE = "用户说了自己实际做什么工作(例:「我是足球运动员」):按这份工作去读盘上的力量、阻力和时间,说哪几条对这份工作是助力、哪几条是阻力、哪段时间要紧;不说「盘早就显示你会做这一行」,不为它编盘上没有的依据,也不改口断定别的行业。";
/**
* What each per-person section says (TASK-consult-no-presupposition-and-
* backtest-20261001 D1/D2/D7, BUG-1164; replaces 「这个人是什么样、你们怎么
@@ -431,6 +446,7 @@ export function followUpAnswerShapeInstruction(): string {
ANSWER_FROM_EVIDENCE,
"这是追问轮:本会话前面已经写过完整解读。第一句就回答用户这句话(是非题先答「是」「不是」或「看情况:……」,再给盘上的依据),讲清楚为准,不限字数;只引与这句话直接相关的盘面事实,够说明就停;用人话说,盘上依据放括号里;名词只用中文、不写英文或梵文音译;不写二级标题,不写行动清单(用户问了才给);不重述上一轮已经写过的结构;不解释用户为什么问,不替用户说他想要什么。",
FOLLOW_UP_CORRECTION_RULE,
CAREER_FOLLOW_UP_RULE,
`只有用户明确换了领域或要求完整看一下,才回到完整形状:口语开场、按对象分段,再接二级标题(## ${REPORT_HEADING.support}、## ${REPORT_HEADING.timing}、## ${REPORT_HEADING.action})。`,
"不要写「统一参数与原始结构」,不要写技法审计表,不要写思考过程清单,不要复述内部 JSON 字段。",
].join("");