From d4e5ca32078a2c564068c0ce4955782050ca90d0 Mon Sep 17 00:00:00 2001 From: Jesse_Chen Date: Sat, 17 Oct 2026 17:03:44 +0800 Subject: [PATCH] docs(tasks): marriage match rules switch to practitioner consensus Co-Authored-By: Claude Opus 5.5 (1M context) Claude-Session: https://claude.ai/code/session_014Ad9rqAB8pXXvyzh7f4X8v --- ...match_practitioner_consensus_2026_10_17.md | 92 +++++++++++++++++++ docs/tasks/README.md | 2 +- docs/tasks/TASK-marriage-match-p1-20261017.md | 56 +++++------ 3 files changed, 121 insertions(+), 29 deletions(-) create mode 100644 docs/research/marriage_match_practitioner_consensus_2026_10_17.md diff --git a/docs/research/marriage_match_practitioner_consensus_2026_10_17.md b/docs/research/marriage_match_practitioner_consensus_2026_10_17.md new file mode 100644 index 00000000..167b1efd --- /dev/null +++ b/docs/research/marriage_match_practitioner_consensus_2026_10_17.md @@ -0,0 +1,92 @@ +# 婚恋合盘规则:从业者共识调研(2026-10-17) + +用途:`docs/tasks/TASK-marriage-match-p1-20261017.md` 的规则口径 `practitioner_consensus_v1` 的出处。 + +起因:占星师复核第一版(只按 B. V. Raman《Muhurtha》定口径)时指出,这些规则不能只按一本书定,参与的信息很多,不能粗暴下断语,不要刻板。所以改为调研印度占星从业者公开资料,按共识程度分档。 + +## 读法与局限 + +- 分档:**广泛公认**(几乎所有来源一致)、**常见**(多数采用,细节有出入)、**少数 / 地区性**、**有争议**(来源互相矛盾或明说无依据)。 +- 公开资料大多是商业占星站或计算器站,彼此转录,很少注明出处;经典出处(Muhurta Chintamani、Jataka Parijata、Jyotirnibandha、Kala Prakasika)多是二手转引。分档只说明从业者有多常用,不说明对不对。 +- 没找到 K.N. Rao、Sanjay Rath、PVR Narasimha Rao、Komilla Sutton 对 Kuja / Papasamya 的一手原文。注意:jagannathhora.com 不是 PVR 的站点(PVR 本人站点是 vedicastrologer.org),引用时不能当作 PVR 的观点。 +- AstroSage、Prokerala、ClickAstro 的规则页这次没取到(404 或没有方法细节)。 + +## 1. 火星冲克(Kuja / Mangal Dosha) + +| 规则 | 分档 | 来源 | +| --- | --- | --- | +| 犯宫 1/2/4/7/8/12 | 常见 | [Drik Panchang](https://www.drikpanchang.com/jyotisha/mangal-dosha/mangal-dosha-calculator.html)、[r-astro](https://r-astro.com/glossary/mangal-dosha)、[Daily Mirror LK](https://www.dailymirror.lk/print/jyotisha-news/Myths-and-Misconceptions-about-Kuja-Dosha/312-157122) | +| 犯宫 1/4/7/8/12(不含 2) | 常见(另一主流版本) | [onlinejyotish](https://www.onlinejyotish.com/articles/marriage-matching/english/kuja-dosha-nivarana.php)、[dekhopanchang](https://dekhopanchang.com/learn/modules/13-3) | +| 犯宫 2/4/7/8/12(不含 1) | 少数(Raman《Muhurtha》1969,pp. 91–92) | 上游书库 | +| 南北印差异:哪一派不看 1 宫、哪一派不看 2 宫 | 有争议(各站说法相反) | Drik Panchang、dekhopanchang | +| 从上升、月亮、金星三处同查 | 广泛公认 | Drik Panchang、onlinejyotish;Raman | +| 三处权重 | 少数,没有公认数值(只有一家厂商博客给 1 / 0.5 / 0.25;Raman 给的次序与它相反) | [roxyapi](https://roxyapi.com/blogs/porutham-vs-gun-milan-rajju-vedha-papasamyam) | +| 化解:火星本垣(白羊、天蝎)或入旺(摩羯) | 广泛公认 | 几乎所有来源 | +| 化解:木星与火星同宫或木星相位火星 | 广泛公认 | onlinejyotish(引 Jataka Parijata)、Daily Mirror、dekhopanchang;Raman 只写同宫 | +| 化解:水星 / 月亮 / 金星与火星同宫或相位;吉星落角宫 | 常见(多写作「减弱」) | Daily Mirror、[jagannathhora](https://jagannathhora.com/mangal-dosha-cancellation-rules/) | +| 化解:宫 × 星座例外(2 双子/处女、4 白羊/天蝎、7 巨蟹/摩羯、8 射手/双鱼、12 金牛/天秤) | 常见,星座略有出入 | [astrosight](https://astrosight.ai/doshas/mangal-dosha-cancellation-rules)、[aaps](https://aaps.space/blog/mangal-dosha-cancellation/)、Daily Mirror;Raman | +| 化解:巨蟹或狮子上升(火星为 Yogakaraka) | 常见 | jagannathhora、onlinejyotish | +| 化解:火星在动星座 | 常见,出处说法不一 | onlinejyotish(Jataka Chandrika)、jagannathhora(Jataka Parijata) | +| 化解:火星落巨蟹(落陷) | 有争议 | onlinejyotish 引 Garga;jagannathhora 标 debated | +| 化解:火星逆行、燃烧 | 有争议 | jagannathhora | +| 化解:火星在狮子或水瓶 | 少数 / 写法不一 | dekhopanchang、Daily Mirror;Raman | +| 28 / 30 岁后减弱 | 少数,多站明说无经典依据 | jagannathhora、vedicmarga、astrojagriti | +| 两人都有则相抵(要求程度相当) | 广泛公认 | onlinejyotish(Dosha-samya)、dekhopanchang、jagannathhora;Raman | +| 一方有、另一方同类宫位有土星 / 罗睺等凶星可平衡 | 常见(Papasamya 思路) | 匹配讲义(Scribd),只有二手资料 | +| 轻重分两档:部分(anshik)/ 完全(poorna) | 常见(口语说法) | [Wikipedia](https://en.wikipedia.org/wiki/Mangala_Dosha)、[shubhpanchang](https://shubhpanchang.com/jyotisha/mangal-dosh) | +| 百分比分级(12 宫 50%、1 宫 60%、2/4 宫 80%、7/8 宫 100%,叠加凶星可到 150–250%) | 少数,单站自定 | Drik Panchang | + +## 2. 婚姻宫压力(Papasamya / Dosha Samya) + +| 规则 | 分档 | 来源 | +| --- | --- | --- | +| 计入火星、土星、太阳、罗睺;计都有的算有的不算 | 常见(以南印为主) | roxyapi、[泰米尔匹配讲义](https://www.scribd.com/document/331807497/Match-Making) | +| 从上升、月亮、金星数 1/2/4/7/8/12 宫 | 常见 | 同上 | +| 女方总数不得多于男方 | 常见(南印习惯;带性别不对称,产品不采用) | 同上 | +| 加权(太阳减半、7/8 宫加倍、三处系数) | 有争议,没找到可信来源;roxyapi 明说各派权重不同、经典没有公布分表 | roxyapi | +| 星体旺弱影响轻重 | 常见 | 匹配讲义 | + +## 3. 性情(Yoni Koota) + +| 规则 | 分档 | 来源 | +| --- | --- | --- | +| 14 种动物,同类 4 分、死敌 0 分 | 广泛公认 | [onlinejyotish](https://www.onlinejyotish.com/articles/marriage-matching/english/yoni-kootam.php)(引 Muhurta Chintamani)、[jagannathhora](https://jagannathhora.com/yoni-koot-yoni-milan-explained/)、[AstroVed](https://www.astroved.com/articles/yoni-porutham) | +| 七对死敌:牛—虎、象—狮、马—水牛、犬—鹿、猫—鼠、蛇—獴、羊—猴 | 广泛公认 | 同上三家 | +| 中间档 3 / 2 / 1 的归属 | 有争议(各注本不同) | onlinejyotish、jagannathhora | +| 南印只判合格 / 不合格,北印打 0–4 分 | 常见 | roxyapi、AstroVed | +| 蛇—鼠相仇的南北差异 | 未找到依据(标准表里蛇的死敌是獴,鼠的死敌是猫);PyJHora 的南印敌对表里有这一对 | — | + +没找到权威网页公布完整的 14 × 14 表。实现用版本化的表,与 PyJHora `YoniArray`、上游 vendored 的 dashaflow `matchmaking.py` 交叉核对。 + +## 4. 月宫距离(Bhakoot)例外 + +| 规则 | 分档 | 来源 | +| --- | --- | --- | +| 两人月宫同一主星 | 广泛公认 | [onlinejyotish](https://www.onlinejyotish.com/articles/marriage-matching/english/bhakoota-kootam.php)、[astrosight](https://astrosight.ai/doshas/bhakoot-koota-dosha-cancellation)、[jagannathhora](https://jagannathhora.com/bhakoot-dosha-complete-guide/);Raman p. 81 | +| 两颗主星互为朋友 | 常见(2/12 引 Kala Prakasika,6/8 引 Muhurta Pradipa) | 同上 | +| 5/9 较轻,或看男女方向 | 常见;方向规则属少数 | onlinejyotish | +| 九分盘主星相同或友好 | 少数 | astrosight | +| 脉或月主友谊满分可抵 | 少数(只有商业站) | — | + +## 5. 脉(Nadi)例外 + +| 规则 | 分档 | 来源 | +| --- | --- | --- | +| 同一月亮星座、不同星宿 | 广泛公认(引 Jyotirnibandha) | [onlinejyotish](https://www.onlinejyotish.com/articles/marriage-matching/english/nadi-kootam.php)、[jagannathhora](https://jagannathhora.com/nadi-dosha-complete-guide/) | +| 同一星宿、不同月亮星座 | 广泛公认 | 同上、[vedicmarga](https://vedicmarga.com/nadi-dosha-calculator/) | +| 同一星宿、不同 pada | 常见(有来源注明不那么普遍);Raman 用 pada 重算表 | jagannathhora、astrosight;Raman pp. 86–87 | +| 月宫主星或九分盘主星友好 | 少数(引 Muhurta Ganapati);Raman 也列了月宫同主、主星友好 | onlinejyotish、[daanyam](https://daanyam.in/blog/nadi-dosha-meaning-cancellation-remedies) | +| 豁免星宿名单 | 有争议(Narada Samhita 与 Piyushdhara 两份名单不一致) | onlinejyotish、daanyam | +| 只对特定种姓严格 | 少数,产品不采用 | onlinejyotish | + +## 6. 36 分的分量与措辞 + +- 各来源一致:36 分只看月亮;第 7 宫、宫主、D9、大运必须另看。高分也可能不顺,低分配上好的整盘也可能顺([shreekundli](https://www.shreekundli.com/blog/marriage-matchmaking/36-guna-matching-not-enough-kundli-milan)、[shubhpanchang](https://performance.shubhpanchang.com/blog/kundali-matching-compatibility-beyond-love-and-destiny))。 +- 18 分是常见及格线,但各站分别用 18 / 25 / 27 / 28。 +- 多个来源批评对火星冲克过度恐惧和误用。像「若干年内婚姻结束」这类宿命化说法正是要避开的。 + +## 产品采用(摘要,细则见任务书) + +- 默认用广泛公认的规则;常见、有争议的规则也列出来,并标注分档。 +- 轻重只用文字(未见 / 轻 / 明显),不给百分比,不出加权总分。 +- 不采用:性别不对称的比较、种姓规则、28 / 30 岁之说参与判断(只列出、标「有争议」)。 diff --git a/docs/tasks/README.md b/docs/tasks/README.md index 63a9562a..c2724e56 100644 --- a/docs/tasks/README.md +++ b/docs/tasks/README.md @@ -500,4 +500,4 @@ | `TASK-data-layer-types-20261013.md` | `PROGRESS-data-layer-types-20261013.md` | 数据访问层改用自己的 DataClient 类型第一阶段(BUG-1351;任务书预留的 1343 已被更大编号越过) | 待验收 | `codex/data-layer-types-20261013` | | `TASK-contracts-helpers-dedupe-20261013.md` | — | 前后端契约与小工具去重第一阶段 | 待领取(排队:frontend-dead-code、consult-route-split) | `codex/contracts-helpers-dedupe-20261013` | | `TASK-people-archive-limit-20-20261017.md` | — | 星盘档案上限 5→20 人(触发器新迁移 + 常量 + 文案;婚恋合盘前置单) | 待领取 | `codex/people-archive-limit-20-20261017`;动表,需 test:db | -| `TASK-marriage-match-p1-20261017.md` | — | 婚恋合盘第一期:独立页、任意两人、Raman 口径火星冲克 / Papasamya / 八项例外并列、按报告扣点(BUG-1370 起) | 排队(等上限单合入) | `codex/marriage-match-p1-20261017`;动表 | +| `TASK-marriage-match-p1-20261017.md` | — | 婚恋合盘第一期:独立页、任意两人、从业者共识口径(分档并列)、按报告扣点(BUG-1370 起) | 排队(等上限单合入) | `codex/marriage-match-p1-20261017`;动表 | diff --git a/docs/tasks/TASK-marriage-match-p1-20261017.md b/docs/tasks/TASK-marriage-match-p1-20261017.md index 9745fd4a..a626bdd9 100644 --- a/docs/tasks/TASK-marriage-match-p1-20261017.md +++ b/docs/tasks/TASK-marriage-match-p1-20261017.md @@ -39,46 +39,46 @@ | D6 | 副标题定稿:「看这段感情往后的走向,和两人之间的助力与考验。」页面任何地方不写「合不合」「会不会在一起」 | | D7 | 新增星盘入口放在两个选人下拉的**最底一行**「+ 新增星盘」,本页弹出与星盘档案同一张新建表,保存后自动选进这一格;档案满时这一行变灰 | | D8 | 「开始合盘」按钮居中,点数说明在按钮正下方 | -| D9 | **规则口径定为 `raman_muhurtha_v1`**(占星师 2026-10-17 答复,产品采纳),细则见下节。**推翻**现有 `calc_kuja_dosha` 的五星合分、旺弱打分表与 `match_kuja_dosha` 的性别不对称阈值——这些不得出现在新功能里,也不作为并列口径展示(产品 10-17 同意) | -| D10 | **规则有分歧时并列展示**:默认口径在前,另一派写明「按那一派结果会变成什么」,不悄悄选一个 | +| D9 | **规则口径定为「从业者共识 + 分歧并列」`practitioner_consensus_v1`**(2026-10-17 第二版)。占星师复核意见:这些规则不能只按一本书定,参与的信息很多,不能粗暴下断语,不要刻板。所以不再以 Raman《Muhurtha》一书为准,改为按印度占星从业者公开资料的共识分档:**广泛公认的作默认,常见的、有争议的都列出来并注明分档**。**推翻**同日第一版的 `raman_muhurtha_v1`,以及现有 `calc_kuja_dosha` 的五星合分、旺弱打分表、`match_kuja_dosha` 的性别不对称阈值。旧打分与性别不对称不得出现在新功能里,也不作为并列口径展示(产品 10-17 同意) | +| D10 | **规则有分歧时并列展示**:每条命中的规则都标出分档(广泛公认 / 常见 / 有争议),并写明按另一派结果会变成什么,不悄悄只选一个。轻重一律用文字,不出百分比,也不出伪精确分数 | | D11 | 第二期(本单不做、不留占位):两人大运同步「什么时候顺」、就这对关系开对话、导出报告、非婚恋关系 | -### 规则口径 `raman_muhurtha_v1` +### 规则口径 `practitioner_consensus_v1` -出处:B. V. Raman《Muhurtha or Electional Astrology》(1969)Kuja Dosha 节(原书 pp. 91–92)、Rasi Kuta 例外(p. 81)、Nadi Kuta 与 pada 重算(pp. 86–87)、Special Considerations(pp. 87–88);Hart de Fouw & Svoboda《Light on Life》Kuja Dosha 节(本垣 / 入旺的修饰与 30 岁之说)。书在上游仓库 `yinduzhanxing/references/book_corpus/`,本仓不收原书。下面摘的是实现所需要点。 +调研记录:`docs/research/marriage_match_practitioner_consensus_2026_10_17.md`(与本任务书同批推送,逐条附来源链接)。公开资料多为商业站互相转录,经典出处多是二手转引。所以分档只说明「从业者有多常用」,不说明「对不对」。 -**火星冲克(Kuja Dosha)**——只看火星 +**火星冲克(Kuja / Mangal Dosha)**:只看火星。 -| 项 | 默认(Raman) | 并列的另一派 | +| 项 | 默认 | 同时列出 | | --- | --- | --- | -| 参照点 | 从上升、月亮、金星三处分别数;分量 上升 < 月亮 < 金星(只作排序,**不换算成数值权重**) | — | -| 犯宫 | 2、4、7、8、12 | 北 / 西印度:另加 1 宫(profile `north_west_6_house`,整列并列) | -| 完全取消该参照点 | 火星在狮子或水瓶;宫 × 星座例外表:2 宫双子/处女、4 宫白羊/天蝎、7 宫摩羯/巨蟹、8 宫射手/双鱼、12 宫金牛/天秤;火星与木星同宫;火星与月亮同宫 | — | -| 减轻(不取消) | 火星本垣(白羊、天蝎)或入旺(摩羯);木星相位火星(标「需复核」);30 岁后(一派说法) | 本垣 / 入旺**完全取消**(分歧说明里写出按这派结果变成什么) | -| 单人归档 | 无:三处都未触发或已取消;轻:只有「减轻」的触发,或只有上升一处完全触发;明显:月亮或金星有一处完全触发;重:两处及以上完全触发 | 同一归档规则用于另一列 | -| 两人比较 | 相当:等级相同,或相差一级且两人都不是「无」(Raman:两人都有则相抵);一方偏重:其余;定不了:缺资料。**不分男女** | 同左 | -| 与整体结论 | 不改 36 分。一方「重」且另一方「无」或「轻」时,结果页顶部显示「整体:有条件,需复核」 | 任一口径满足即显示,并写明是哪一派 | +| 参照点 | 从上升、月亮、金星三处分别数,逐处列出「从哪里数、落第几宫」。**不给权重** | — | +| 犯宫 | 1、2、4、7、8、12(多数采用) | 每处触发都注明「不计 2 宫的版本(1/4/7/8/12)下是否仍算」「不计 1 宫的版本(2/4/7/8/12,Raman)下是否仍算」 | +| 化解:广泛公认 | 火星本垣(白羊、天蝎)或入旺(摩羯);木星与火星同宫或木星相位火星 | — | +| 化解:常见 | 水星 / 月亮 / 金星与火星同宫或相位;宫 × 星座例外(2 宫双子/处女、4 宫白羊/天蝎、7 宫巨蟹/摩羯、8 宫射手/双鱼、12 宫金牛/天秤,各家星座略有出入);巨蟹或狮子上升(火星为 Yogakaraka);火星在动星座 | 写明「常见,各家写法不一」 | +| 化解:有争议 | 火星落巨蟹(落陷)、逆行、燃烧;火星在狮子或水瓶;28 / 30 岁后减弱(多处明说无经典依据) | 写明「有争议」,不参与轻重判断,只列出 | +| 单人轻重(文字) | **未见**:三处都没触发,或每处触发都被广泛公认的条件化解;**轻**:触发只被常见条件化解,或只在某一宫位版本下成立;**明显**:至少一处触发没有任何广泛公认或常见的化解 | 页面脚注写明:这是计算层的归纳,不是定论,要结合整盘看 | +| 两人比较 | 两人都「明显」或都「轻」→ 相互抵消(广泛公认,前提是程度相当);一方「明显」、另一方「未见」→ 需要留意,并提示看婚姻宫压力是否平衡。**不分男女** | — | -上表「单人归档」「两人比较」的分级是产品为了不出伪精度分数而定的归档规则,不是原书原文;结果页脚注写明。 - -**婚姻宫压力(Papasamya)**:火星、土星、太阳、罗睺、计都落在从上升、月亮、金星数的 1、2、4、7、8、12 宫,逐处列出、数处数,两人比较「相当 / 一方明显更重」(差 ≥ 3 处或一方是另一方两倍以上算明显更重)。**单独一节,不叫火星冲克,不打分。** 宫位集合采用 Papasamya 常见口径,若开工检索到 Raman 原书另有规定,以原书为准并写进进度记录。 +**婚姻宫压力(Papasamya)**:多为南印做法。火星、土星、太阳、罗睺落在从上升、月亮、金星数的 1、2、4、7、8、12 宫,逐处列出;计都单列一行,标「部分派别计入」。两人比较只写「大致均衡 / 一方明显偏重」。**不出加权总分**(各派权重不同,经典没有公布分表)。南印习惯里「女方不得多于男方」的比较带性别不对称,不采用,脚注说明。单独一节,不叫火星冲克。 **八项配对(36 分)** -| 项 | 改法 | -| --- | --- | -| 性情 Yoni | 补齐五档:同类 4、友 3、中 2、敌 1、仇 0。用版本化的 14 × 14 完整矩阵(以 PyJHora `jhora/horoscope/match/compatibility.py` 的 `YoniArray` 为对照写入,注明出处),不得按动物名临时推。北 / 南印度对蛇—鼠是否相仇不同:命中这一对时两种结果并列 | -| 月宫距离 Bhakoot | 原始 0 / 7 分照算照显示。两人月宫同一主星、或两颗主星互为朋友时,另给 `bhakoot_exception = cancelled_by_same_or_friendly_rashi_lords`;**不得把原始分偷偷改成 7** | -| 脉 Nadi | 顺序:① 按星宿算原始脉;② 同脉时按星宿的脚(pada)重算——108 个 pada 从 Aswini 1 起每三个一行、正反交替(行号 `r = p // 3`,偶数行列号 `p % 3`、奇数行 `2 - p % 3`,列依次为 Vata / Pitta / Sleshma;原书表头几行:Aswini 1/2/3;Aswini 4 在 Sleshma 列、Bharani 1 在 Pitta 列、Bharani 2 在 Vata 列);pada 重算不同脉则取消;③ 仍同脉时查 Raman 例外:(a) 月宫距离与同绳(Rajju)都成立 (b) 两人月宫同一主星 (c) 两颗月宫主星互为朋友,任一成立则取消。逐步写进结果 | -| 合计 | 表尾并列两个数:原始合计;计入例外后的合计 | +| 项 | 默认 | 同时列出 | +| --- | --- | --- | +| 性情 Yoni | 同类 4、七对死敌 0(牛—虎、象—狮、马—水牛、犬—鹿、猫—鼠、蛇—獴、羊—猴),广泛公认。中间档 3 / 2 / 1 用一张版本化 14 × 14 表计分(以 PyJHora `YoniArray` 对照写入、注明出处),页面用文字写「友好 / 中性 / 略不合」 | 注明「中间档各家表不同」;南印只判是否死敌,并列一行「南印:是 / 否死敌」 | +| 月宫距离 Bhakoot | 原始分照算照显示,并标类型(2/12、5/9、6/8)。两人月宫同一主星、或两主星互为朋友 → 例外成立(广泛公认 / 多数采用),单独标出;**不改原始分** | 九分盘主星友好、其他项满分可抵:标「部分占星师接受」 | +| 脉 Nadi | 原始分照算。例外(广泛公认):同一月亮星座不同星宿;同一星宿不同月亮星座。多数采用:同一星宿不同 pada | 月宫主星友好:标「少数」;豁免星宿名单:标「有争议」,并写明出自哪份名单 | +| 合计 | 表尾并列两个数:原始合计、计入广泛公认例外后的合计。**不显示及格分档**:常见及格线是 18,但各家分别用 18 / 25 / 27 / 28,脚注写「满分 36,常见及格线 18,各家不一」 | — | -`ashtakoot.py` 里的现有附加项(Mahendra、Stree Deergha、Vedha、Rajju、BadConstellations)保留,Stree Deergha / Rajju 的例外改用 Raman Special Considerations 的写法。 +`ashtakoot.py` 现有的附加项(Mahendra、Stree Deergha、Vedha、Rajju、BadConstellations)保留展示,例外按上面同样的分档标注。 + +**结论措辞**:三句话总述的落点只用三档:「助力多于考验」「有几处需要留意,建议结合整盘细看」「考验较多,建议请占星师细看」。火星冲克一方「明显」另一方「未见」时,至少落到第二档。总述以各自婚姻征象(D1 第 7 宫、D9、UL、DK)为主,36 分只作一层参考。 ## 硬红线 1. `scripts/jyotish_api_server.py` 不增长(类方法数、`__new__` 伪造点、行数护栏):新计算放新模块(建议 `scripts/marriage_match.py`),主文件只做薄注册。 2. `app/(app)/page.tsx` 的 `Home()` 状态数不得增长;本单删掉 `SynastryDeepLink` 与开机拉合盘历史,只会减少。 -3. 新功能里不得出现:五星合分、100/80/50 之类的火星冲克分数、按性别判轻重、「合 / 不合」「会不会在一起」「适合结婚」。 +3. 新功能里不得出现:五星合分、任何百分比或 100/80/50 之类的火星冲克分数、Papasamya 加权总分、按性别判轻重、「合 / 不合」「相合」「会不会在一起」「适合 / 不宜结婚」「分离」「寿命」。 4. 生产运行时不得 import PyJHora(只作测试对照,许可证边界);验收会屏蔽 PyJHora 模拟生产。 5. 合同测试的 fixture 用真实引擎输出(golden)。所有示例与测试只用虚构人物或公开名人。 6. 扣点:先预留、算失败或超时**释放不扣**;读已保存结果不预留。用现有 `authorizeUsage` / `completeUsage` 及其释放路径,记账 metadata 标明 `kind: "marriage_match"`。 @@ -90,15 +90,15 @@ | # | 内容 | 验收标准 | | --- | --- | --- | -| T1 | **引擎**:新模块实现 `raman_muhurtha_v1`——Kuja(三参照点 × 两列口径 × 取消 / 减轻原因)、Papasamya、八项(Yoni 五档、Bhakoot 例外、Nadi pada 重算 + 例外)、单人婚姻征象(复用 `relationship_analysis.analyze_relationship`:7 宫主、金星、D9、UL、DK)、D9 对照(两人 D9 上升、D9 金星、D9 上升相隔几宫)。输入两份出生资料 + 性别,一次请求内算完(占重计算并发位) | 新 pytest:Raman 宫 × 星座例外表 10 格逐格、狮子 / 水瓶、木星同宫、月亮同宫、本垣 / 入旺两列分歧、1 宫只在另一列触发、归档四级与两人比较各至少一例;Yoni 14 × 14 与 PyJHora 对照全等(测试里可 import PyJHora,缺时 skip 并记录);pada 表头 6 个 pada 的列号;Bhakoot 例外不改原始分;至少 20 对虚构出生资料的八项原始分与 PyJHora North 方法对照,差异逐条解释 | +| T1 | **引擎**:新模块实现 `practitioner_consensus_v1`:火星冲克(三参照点 × 三种宫位版本 × 命中的化解条件及其分档)、婚姻宫压力、八项(Yoni 表、Bhakoot / Nadi 例外分档)、单人婚姻征象(复用 `relationship_analysis.analyze_relationship`:7 宫主、金星、D9、UL、DK)、D9 对照(两人 D9 上升、D9 金星、D9 上升相隔几宫)。输入两份出生资料 + 性别,一次请求内算完(占重计算并发位)。每条规则带 `consensus: broad / common / disputed` 和来源键,来源键对应调研记录里的条目 | 新 pytest:每条化解条件至少一例且分档正确;宫位三版本差异各一例;单人「未见 / 轻 / 明显」与两人比较各至少一例;有争议的条件不改变轻重;Yoni 14 × 14 与 PyJHora 对照全等(测试里可 import PyJHora,缺时 skip 并记录),七对死敌为 0;Bhakoot / Nadi 例外不改原始分;至少 20 对虚构出生资料的八项原始分与 PyJHora North 方法对照,差异逐条解释 | | T2 | **Python 接口**:新端点(如 `POST /api/marriage_match`)薄注册;旧 `/api/synastry` 保留给 MCP / CLI 兼容但不再被网页调用 | `tests/test_api_server_growth_contract.py` 绿;端点 golden 一份进 `frontend/tests/fixtures/` | | T3 | **退役与文档纠错**:删 `scripts/synastry.py`,CLI `synastry` 改走新模块或删除(同步 `SKILL.md` 命令表、`tests/run_all.py`、`tests/test_open_source_integrations.py`);`ashtakoot.py` 的 `calc_kuja_dosha` / `match_kuja_dosha` 标为旧版、不被新功能调用;删掉三处 Papasamya / Mangal 匹配虚报 | 全量 pytest 与基线逐条比对无新增失败;`git grep "synastry.calc_ashtakoot"` 0 命中 | | T4 | **数据**:`synastry_reports` 加列——两人的人物引用(本人用约定值,他人用 `chart_profiles.id`)、两人出生资料指纹、规则版本 `rules_version`、结构化结果;旧行不迁移、不显示 | `npm run test:db`:同一对人同指纹第二次读到旧行;任一人改出生资料后指纹不同;删人后其合盘行消失 | | T5 | **Next 接口**:重写 `app/api/synastry/route.ts`(或新路由,旧的删):收两个人物 id → `loadSubjectBirth` 两次 → 查已保存(命中即返回,不扣点)→ 预留 `report.full` → 调 T2 → 存 → 结算;性别按 D5;保留产品开关 `compatibility` 与限流桶;删掉 `relationshipType` 与 business / family / general 分支 | 路由测试覆盖:命中缓存不扣点;计算失败释放不扣;两个 id 相同 400;不属于本人的 id 拒绝;同性 / 缺性别按顺序定男方 | -| T6 | **页面**:侧栏「婚恋合盘」;`/marriage-match`(路由名可议,写进 DESIGN)选人页(两个自定义下拉,底行「+ 新增星盘」复用星盘档案新建表;居中按钮;点数来自定价不写死;之前的合盘列表只列「人名 × 人名 · 日期」,点开不扣点);结果页按原型 v3:三句话总述 → 各自的婚姻征象 → 八项配对(含例外绿字 / 另一派灰字、两个合计)→ 火星冲克(每人一张两列表 + 两人对比 + 分歧说明)→ 婚姻宫压力 → 脚注口径来源 | 渲染测试:两个状态(口径不一 / 失衡封顶)的 golden 渲染;20 人时下拉可滚动;手机 390 px 无横向滚动;`next build` 后 `/` 仍 Static,首屏 gzip ±2% | -| T7 | **三句话总述**:由服务端按结构化结果确定性拼句(不调模型),讲各自征象、相处的助力与考验、八项合计只作一层参考;有「有条件,需复核」时第三句讲清原因 | 单测覆盖两种状态;文案进 VOICE | +| T6 | **页面**:侧栏「婚恋合盘」;`/marriage-match`(路由名可议,写进 DESIGN)选人页(两个自定义下拉,底行「+ 新增星盘」复用星盘档案新建表;居中按钮;点数来自定价不写死;之前的合盘列表只列「人名 × 人名 · 日期」,点开不扣点);结果页按原型 v3:三句话总述 → 各自的婚姻征象 → 八项配对(含例外绿字 / 另一派灰字、两个合计)→ 火星冲克(每人逐处列出触发与化解,化解条件带分档标签;两人对比)→ 婚姻宫压力 → 脚注(口径来源、分档含义、「计算层归纳不是定论」)。原型 v3 的火星冲克两列表按本任务书的新口径改为「逐处 + 分档标签」 | 渲染测试:两个状态(两人火星冲克相当 / 一方明显)的 golden 渲染;20 人时下拉可滚动;手机 390 px 无横向滚动;`next build` 后 `/` 仍 Static,首屏 gzip ±2% | +| T7 | **三句话总述**:由服务端按结构化结果确定性拼句(不调模型),讲各自征象、相处的助力与考验、八项合计只作一层参考;落点只用「结论措辞」的三档,第二、三档讲清原因 | 单测覆盖两种状态;文案进 VOICE | | T8 | **清旧入口**:档案页「和我合盘」改跳新页并预选两人;删 `SynastryDeepLink`、`use-synastry.ts` 中无人用的部分、`buildSynastryQuestion` 草稿路径、孤儿 CSS、`page.tsx` 开机拉合盘历史 | 按 AGENTS §7.8 grep 源码文本合同测试同轮改,三栏说明 | -| T9 | **记录**:DESIGN.md、VOICE.md(新文案、删人确认句、侧栏名)、CHANGELOG、BUG_HISTORY(下节编号)、`docs/testing/marriage-match-p1-20261017.md` 真人清单(选人、新增星盘、扣点与再次打开不扣、删人连带删除、手机宽) | 文档齐 | +| T9 | **记录**:调研记录已由 Claude 写好,执行方只需在 PROGRESS 引用;DESIGN.md、VOICE.md(新文案、删人确认句、侧栏名)、CHANGELOG、BUG_HISTORY(下节编号)、`docs/testing/marriage-match-p1-20261017.md` 真人清单(选人、新增星盘、扣点与再次打开不扣、删人连带删除、手机宽) | 文档齐 | ## 让步顺序