dsh-metaphysics 0.62.0 → 0.62.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -2
- package/client.almanac.js +14 -14
- package/client.bazi.js +36 -36
- package/client.chenggu.js +1 -1
- package/client.convert.js +16 -16
- package/client.daliuren.js +22 -22
- package/client.fengshui.js +26 -26
- package/client.hepan.js +1 -1
- package/client.js +1 -1
- package/client.liuyao.js +36 -36
- package/client.mbti.js +22 -22
- package/client.name.js +35 -35
- package/client.numerology.js +42 -42
- package/client.qimen.js +90 -90
- package/client.star.js +24 -24
- package/client.tarot.js +28 -28
- package/client.trend.js +30 -30
- package/client.xiaoliuren.js +7 -7
- package/client.zeri.js +7 -7
- package/client.ziwei.js +1 -1
- package/engine/fengshui.js +6 -2
- package/engine/index.js +6 -0
- package/engine/mbti.js +1 -0
- package/engine/name.js +3 -0
- package/engine/numerology.js +3 -3
- package/engine/qimen.js +9 -1
- package/engine/star.js +3 -3
- package/engine/trend.js +3 -0
- package/package.json +1 -1
- package//345/221/275/347/220/206/346/216/222/347/233/230.html +37 -12
package/client.chenggu.js
CHANGED
|
@@ -94,7 +94,7 @@ ${n.summary}`);const r=Bn(t.detail);if(t.withInterpret&&(n.interpret=ne(n,{quest
|
|
|
94
94
|
规则·${ee.gist}〔${ee.statusLabel}〕${ee.detail} 出处:${ee.source}${ee.note?` 注:${ee.note}`:""}`).join("");r.push(`${q.label}:${te}${q.text}${q.advice?` 建议:${q.advice}`:""}${J}${v}`)}const w=e.sections||[],Q=i?w.filter(q=>String(q.text||"").length>n):[];for(const q of w)i&&String(q.text||"").length>n||r.push(`${q.label}:${q.text}`);Q.length&&r.push(`(另有 ${Q.length} 节长论述未展开:${Q.map(q=>q.label).join("、")}。需要原文与出处时传 detail:"full")`);for(const q of e.tables||[])!Array.isArray(q.rows)||!q.rows.length||(r.push(`【${q.title}】`),r.push([q.columns.join(" | "),...q.rows.map(J=>J.join(" | "))].join(`
|
|
95
95
|
`)));return Array.isArray(e.followups)&&e.followups.length&&r.push("还可以这样追问:"+e.followups.map(q=>`「${q}」`).join(" ")),Array.isArray(e.glossary)&&e.glossary.length&&r.push("名词解释:"+e.glossary.map(q=>`${q.term}=${q.plain}`).join(" ")),Array.isArray(e.limits)&&e.limits.length&&r.push("【本插件不回答什么】"+e.limits.map(q=>`${q.title}——${q.text}`).join(`
|
|
96
96
|
`)),e.disclaimer&&r.push(e.disclaimer),r.join(`
|
|
97
|
-
`)}const Dn=["cross","verifyPast","withInterpret","detail","question","direction","ask","geocode","rectify","events","shadow","trace"];function Yn(e={},t={}){const i=t.system||e.system,n=t.switches||Ee[i]||[];if(!n.length)return{system:i,switches:[],affected:0,total:0};const r={...e};for(const d of Dn)delete r[d];const a=n.map(d=>{const w=d.read(r),Q=d.alt(w);let q=[],J="",te=null,v=null;try{te=bn({...r,[d.key]:w}),v=bn({...r,[d.key]:Q}),q=Je(te,v)}catch(ge){J=ge&&ge.message||String(ge)}const ee=Ye(q.filter(ge=>en(ge.path))).map(ge=>({path:ge.path,label:un(ge.path),from:ze(ge.from),to:ze(ge.to)})),ke=new Map;for(const ge of q){const Te=nn(ge.path)||"其他";ke.set(Te,(ke.get(Te)||0)+1)}const _e=[...ke.entries()].map(([ge,Te])=>({name:ge,count:Te})).sort((ge,Te)=>Te.count-ge.count||ge.name.localeCompare(Te.name,"zh-Hans-CN"));return{key:d.key,title:d.title,short:d.short,current:w,alt:Q,currentLabel:d.label(w),altLabel:d.label(Q),total:q.length,summary:J?"":Xe(q),views:J?[]:We(i,te,v),roots:ee,categories:_e,error:J}});return{system:i,switches:a,affected:a.filter(d=>!d.error&&d.total>0).length,total:a.reduce((d,w)=>d+w.total,0)}}const Zn=["chaibu","chaoshen","zhirun"],Un=[1,3,5],Hn=["same-day","next-day"];function wn(e,t=""){if(e==null||e==="")return;const i=t?`${t}的`:"";let n;if(typeof e=="number")n=e;else if(typeof e=="string"){const r=e.trim();if(!/^[+-]?(\d+(\.\d*)?|\.\d+)$/.test(r))throw ue("E_RANGE",`${i}经度不是十进制数字:收到「${e}」。经度写数字即可,例如北京 116.4`);n=Number(r)}else throw ue("E_RANGE",`${i}经度必须是数字或数字字符串,收到 ${Array.isArray(e)?"array":typeof e}`);if(!Number.isFinite(n))throw ue("E_RANGE",`${i}经度不是有限数值:收到「${e}」。经度写十进制数字即可,例如北京 116.4`);if(n<-180||n>180)throw ue("E_RANGE",`${i}经度要在 −180 到 180 之间(东经为正),收到 ${n}`);return n}function En(e){const t=wn(e.longitude,""),i=e.partner&&typeof e.partner=="object"?wn(e.partner.longitude,"对方"):void 0,n=e.partner2&&typeof e.partner2=="object"?wn(e.partner2.longitude,"第三方"):void 0;if(!(t!==void 0&&e.longitude!==t||i!==void 0&&e.partner.longitude!==i||n!==void 0&&e.partner2.longitude!==n))return e;const a={...e};return t!==void 0&&(a.longitude=t),i!==void 0&&(a.partner={...a.partner,longitude:i}),n!==void 0&&(a.partner2={...a.partner2,longitude:n}),a}function Bn(e){if(e==null||e===""||e==="full")return"full";if(e==="lean")return"lean";throw ue("E_INPUT",`detail 只能是 'full' 或 'lean':收到「${String(e).slice(0,24)}」`)}function He(e){if(e==null||typeof e=="string"&&!e.trim())return;const t=f(e);if(!t)throw ue("E_ASOF",`无法解析 asOf:「${e}」,请用 2026-10-22T16:00 这种格式`);const{year:i,month:n,day:r,hour:a,minute:d}=t;if(!(n>=1&&n<=12)||!(r>=1&&r<=on(i,n)))throw ue("E_ASOF",`asOf 指向的日期不存在:${e}`);if(a!==void 0&&!(a>=0&&a<=23))throw ue("E_ASOF",`asOf 的小时要在 0–23 之间:${e}`);if(d!==void 0&&!(d>=0&&d<=59))throw ue("E_ASOF",`asOf 的分钟要在 0–59 之间:${e}`);return t}function Fn(e={}){const t=e.system;if(e.mode!==void 0&&e.mode!==null&&e.mode!==""){const i={convert:["solar2lunar","lunar2solar"],meihua:["time","number"],xiaoliuren:["time","number"]},n=i[t];if(!n)throw ue("E_INPUT",`mode 只用于 ${Object.keys(i).join(" / ")};${t||"当前体系"} 不收 mode`);if(!n.includes(e.mode))throw ue("E_INPUT",`${t} 的 mode 只能是 ${n.join(" / ")},收到「${String(e.mode).slice(0,24)}」`)}if(e.fortuneYear!==void 0&&e.fortuneYear!==null&&e.fortuneYear!==""){const i=Number(e.fortuneYear);if(!Number.isInteger(i))throw ue("E_INPUT",`fortuneYear 要是整数年份,收到「${e.fortuneYear}」`);e={...e,fortuneYear:i}}if(t==="bazi"){const i=pe(e.datetime),n=He(e.asOf),r=C({...i,gender:Me(e.gender),longitude:typeof e.longitude=="number"?e.longitude:void 0,address:typeof e.address=="string"?e.address:void 0,geo:e.geo&&typeof e.geo=="object"?e.geo:void 0,lateZi:e.lateZi!==!1,trueSolar:e.trueSolar!==!1,dst:e.dst!==!1,nowYear:n?n.year:void 0,hourUnknown:e.hourUnknown===!0});return{...r,...n?{asOf:n}:{},precision:i.precision,summary:fn(r)}}if(t==="ziwei"){if(e.hourUnknown===!0)throw ue("HOUR_UNKNOWN","紫微必须有出生时刻:命宫由生月与生时支定,时支未知则整盘不成立。请补上出生时刻,或改用八字三柱模式只看年/月/日。");e.lateZi!==void 0&&e.lateZishi===void 0&&(e={...e,lateZishi:e.lateZi===!1?"current-day":"next-day"});const i=pe(e.datetime),n=He(e.asOf),r=u({...i,gender:Me(e.gender),leapMonth:e.leapMonth,leapAsNext:e.leapAsNext===!0,...sn(e),longitude:typeof e.longitude=="number"?e.longitude:void 0,address:typeof e.address=="string"?e.address:void 0,geo:e.geo&&typeof e.geo=="object"?e.geo:void 0,trueSolar:e.trueSolar,dst:e.dst!==!1,asOf:n});return{...r,...n?{asOf:n}:{},precision:i.precision,summary:rn(r)}}if(t==="tarot"){const i=e.count===void 0||e.count===null||e.count===""?3:Number(e.count);if(!Un.includes(i))throw ue("E_COUNT",`塔罗张数只能是 1 / 3 / 5,收到「${e.count}」`);if(!he(e.seed))throw ue("E_INPUT",`seed 必须是数字,收到「${e.seed}」`);const n=He(e.asOf),r=$({count:i,question:e.question,at:e.asOf,random:re(e.seed)});return e.seed!==void 0&&e.seed!==null&&e.seed!==""&&(r.seed=Number(e.seed)),{...r,...n?{asOf:n}:{},summary:In(r)}}if(t==="daliuren"){const i=pe(e.datetime),n=e.lateZi!==!1,r=T({...i,lateZi:n});return r.lateZi=n,{...r,precision:i.precision,summary:Tn(r)}}if(t==="qimen"){const i=pe(e.datetime);if(e.juMethod!==void 0&&!Zn.includes(e.juMethod))throw ue("E_INPUT",`juMethod 只能是 chaibu / chaoshen / zhirun,收到「${e.juMethod}」`);const n=e.lateZiHourMode!==void 0?e.lateZiHourMode:e.lateZi===!0?"next-day":e.lateZi===!1?"same-day":void 0;if(n!==void 0&&!Hn.includes(n))throw ue("E_INPUT",`lateZiHourMode 只能是 same-day / next-day,收到「${n}」`);const r=n==="next-day"?"next-day":"same-day",a=l({...i,lateZiHourMode:r,juMethod:e.juMethod});return a.lateZiHourMode=r,{...a,summary:$n(a)}}if(t==="hepan"){if(e.hourUnknown===!0||e.partner&&e.partner.hourUnknown===!0)throw ue("HOUR_UNKNOWN","合盘需要双方都有出生时刻:夫妻宫与大运都依赖时支。请补齐时刻后再看,或用八字三柱模式各自看年/月/日。");const i=e.partner;if(!i||typeof i!="object")throw ue("E_PARTNER","合盘需要 partner:{ datetime, gender, address? },其中 partner.datetime 是对方的公历出生时间");if(!i.datetime)throw ue("E_PARTNER",'缺少 partner.datetime(对方的公历出生时间),例如 partner: {"datetime":"1992-03-03T10:00","gender":"female"}');const n=e.partner2;if(n!=null){if(typeof n!="object"||Array.isArray(n))throw ue("E_PARTNER","partner2 需要 { datetime, gender, address? };不想看三方就整段省略(null 视同未传)");if(!n.datetime)throw ue("E_PARTNER",'缺少 partner2.datetime(第三方的公历出生时间),例如 partner2: {"datetime":"1988-09-09T08:00","gender":"male"}')}const r=e.chart==="ziwei"?"ziwei":"bazi",a=(J,te)=>({...pe(J.datetime),gender:Me(J.gender,te),trueSolar:J.trueSolar,lateZi:J.lateZi,dst:J.dst!==!1,address:typeof J.address=="string"?J.address:void 0,longitude:typeof J.longitude=="number"?J.longitude:void 0,geo:J.geo&&typeof J.geo=="object"?J.geo:void 0}),d=a(e,"你(主方)"),w=a(i,"对方"),Q=(J,te)=>r==="ziwei"?y({a:J,b:te}):h({a:J,b:te}),q=Q(d,w);if(n){const J=a(n,"第三方");q.triple=o([{key:"a-b",a:"你",b:"对方",result:q},{key:"a-c",a:"你",b:"第三方",result:Q(d,J)},{key:"b-c",a:"对方",b:"第三方",result:Q(w,J)}])}return{...q,summary:Re(q)}}if(t==="meihua"){let i;e.mode!=="number"&&pe(e.datetime);try{i=_({mode:e.mode==="number"?"number":"time",datetime:e.datetime,upper:e.upper,lower:e.lower,changing:e.changing,lateZi:e.lateZi})}catch(n){const r=n&&n.message||String(n);throw ue(n&&n.code||"E_INPUT",n&&n.code?r:`梅花起卦参数不完整:${r}`)}return{...i,summary:On(i)}}if(t==="liuyao"){if(!he(e.seed))throw ue("E_INPUT",`seed 必须是数字,收到「${e.seed}」`);let i;if(e.lines===void 0||e.lines===null)i=U(re(e.seed));else{if(!Array.isArray(e.lines))throw ue("E_LINES","lines 必须是数组:自下而上 6 个爻值(6 老阴 / 7 少阳 / 8 少阴 / 9 老阳)");if(e.lines.length!==6)throw ue("E_LINES",`六爻需要正好 6 个爻值(自下而上),收到 ${e.lines.length} 个;留空则由引擎随机摇卦`);i=e.lines.map(Number)}let n,r=null;const a=e.datetime?pe(e.datetime):He(e.asOf);if(a){e.datetime||(r=a);const te=z(R(m(a.year,a.month,a.day)));n={stem:te.stem,branch:te.branch,name:te.name}}let d;try{d=Y({lines:i,question:e.question,dayGanZhi:n})}catch(te){throw ue(te&&te.code||"E_LINES",te&&te.message?te.message:te)}const w=Z(d,{direction:e.direction,gender:e.gender});w.liuqin&&(d.useGod=w);let Q=null;if(a)try{Q=(c({year:a.year,month:a.month,day:a.day,hour:a.hour,minute:a.minute}).monthGanZhi||"")[1]||null}catch{Q=null}const q=D(d,{monthBranch:Q,dayBranch:d.dayGanZhi.branch});q&&(d.hexStrength=q);const J=S(d,{monthBranch:Q,dayBranch:d.dayGanZhi.branch});if(J&&(d.jinTuiPower=J),w.liuqin){const te=E(d,w,{monthBranch:Q,dayBranch:d.dayGanZhi.branch});te&&(d.useGodStrength=te);const v=k(d,w,{monthBranch:Q,dayBranch:d.dayGanZhi.branch});v&&(d.fushenAccess=v);const ee=p(d,w,{monthBranch:Q});ee&&(d.yingqi=ee)}return e.seed!==void 0&&e.seed!==null&&e.seed!==""&&(d.seed=Number(e.seed)),{...d,...r?{asOf:r}:{},summary:Mn(d)}}if(t==="almanac"){const i=pe(e.datetime),n=oe({year:i.year,month:i.month,day:i.day});return{...n,summary:Jn(n)}}if(t==="zeri"){if(!(e.candidates!==void 0&&e.candidates!==null)&&(typeof e.startDate!="string"||!e.startDate.trim()))throw ue("E_INPUT",'择日需要 startDate(公历 YYYY-MM-DD,起算日);可另给 days(1–60,默认 30)与 shengXiao(当事人属相)。只想比几天,改给 candidates: ["2026-12-01","2026-12-08"]');let n;try{n=ce({task:e.task,startDate:e.startDate,days:e.days,shengXiao:e.shengXiao,candidates:e.candidates})}catch(r){throw ue(r&&r.code||"E_INPUT",r&&r.message||String(r))}return{...n,summary:Xn(n)}}if(t==="chenggu"){const i=pe(e.datetime),n=/[T\s]\d{1,2}:\d{1,2}/.test(String(e.datetime)),r=Number.isInteger(e.hour)?e.hour:n?i.hour:null;if(r===null||r<0||r>23)throw ue("E_INPUT","称骨必须给时辰:datetime 带时分(如 1990-08-15T10:00),或额外给 hour(0–23)——缺时辰四柱不齐");const a=se({year:i.year,month:i.month,day:i.day,hour:r,minute:n?i.minute:0,lateZi:e.lateZi});return{...a,summary:Wn(a)}}if(t==="convert"){const i=e.mode==="lunar2solar"?"lunar2solar":"solar2lunar";let n;if(i==="lunar2solar"){if(e.lunarYear==null||e.lunarMonth==null||e.lunarDay==null)throw ue("E_INPUT","农历转公历需要 lunarYear / lunarMonth / lunarDay(闰月另加 isLeapMonth: true)");n=Ie({mode:i,lunarYear:Number(e.lunarYear),lunarMonth:Number(e.lunarMonth),lunarDay:Number(e.lunarDay),isLeapMonth:e.isLeapMonth===!0})}else{const r=pe(e.datetime);n=Ie({mode:i,year:r.year,month:r.month,day:r.day})}return{...n,summary:Vn(n)}}if(t==="xiaoliuren"){const i=e.datetime?pe(e.datetime):null,n=fe({mode:e.mode==="number"?"number":"time",date:typeof e.date=="string"&&e.date.trim()?e.date:i?`${i.year}-${i.month}-${i.day}`:void 0,hour:Number.isInteger(e.hour)?e.hour:i&&/[T\s]\d{1,2}:\d{1,2}/.test(String(e.datetime))?i.hour:void 0,num1:e.num1,num2:e.num2,num3:e.num3,question:e.question,lateZi:e.lateZi});return{...n,summary:Kn(n)}}if(t==="star"){const i=pe(e.datetime),n=je({year:i.year,month:i.month,day:i.day});return{...n,summary:Qn(n)}}if(t==="numerology"){const i=pe(e.datetime),n=ye({year:i.year,month:i.month,day:i.day});return{...n,summary:et(n)}}if(t==="mbti"){if(e.answers===void 0||e.answers===null){const n=me();return{...n,summary:tt(n)}}const i=Oe({answers:e.answers});return{...i,summary:nt(i)}}if(t==="trend"){const i=pe(e.datetime),n=e.asOf?He(e.asOf):void 0,r=an({...i,nowYear:n?n.year:void 0,gender:Me(e.gender),toAge:e.toAge,lateZi:e.lateZi!==!1,trueSolar:e.trueSolar!==!1,dst:e.dst!==!1,longitude:typeof e.longitude=="number"?e.longitude:void 0,address:typeof e.address=="string"?e.address:void 0,geo:e.geo&&typeof e.geo=="object"?e.geo:void 0,hourUnknown:e.hourUnknown===!0});return{...r,...e.hourUnknown===!0?{hourUnknown:!0,hourPrecision:"day"}:{},precision:i.precision,summary:it(r)}}if(t==="fengshui"){const i=e.action==="advise"?"advise":e.action==="xuankong"?"xuankong":"natal";if(i==="xuankong"){const a=Le({action:i,sitting:e.sitting,facing:e.facing,...e.period!==void 0?{period:e.period}:{},...e.fortuneYear!==void 0?{fortuneYear:e.fortuneYear}:{},...typeof e.sittingOffset=="number"?{sittingOffset:e.sittingOffset}:{},...typeof e.sittingDegree=="number"?{sittingDegree:e.sittingDegree}:{},...typeof e.facingOffset=="number"?{facingOffset:e.facingOffset}:{},...typeof e.facingDegree=="number"?{facingDegree:e.facingDegree}:{},...typeof e.fortuneDate=="string"?{fortuneDate:e.fortuneDate}:{},...typeof e.fortuneTime=="string"?{fortuneTime:e.fortuneTime}:{},dst:e.dst!==!1});return{...a,summary:Sn(a)}}if(i==="advise"){const a=Le({action:i,sitting:e.sitting,facing:e.facing,...e.datetime?pe(e.datetime):{},...e.gender==="male"||e.gender==="female"?{gender:e.gender}:{},dst:e.dst!==!1});return{...a,summary:Sn(a)}}const n=pe(e.datetime),r=Le({action:"natal",year:n.year,month:n.month,day:n.day,gender:Me(e.gender),fortuneYear:e.fortuneYear,dst:e.dst!==!1});return{...r,summary:Sn(r)}}if(t==="name"){const i=e.action==="generate"?"generate":"assess",n=e.datetime?pe(e.datetime):Number.isInteger(e.year)&&Number.isInteger(e.month)&&Number.isInteger(e.day)?{year:e.year,month:e.month,day:e.day,...Number.isInteger(e.hour)?{hour:e.hour}:{},...Number.isInteger(e.minute)?{minute:e.minute}:{}}:{},r=Ge({action:i,surname:e.surname,givenName:e.givenName,limit:e.limit,charElements:e.charElements&&typeof e.charElements=="object"?e.charElements:void 0,strokeOverrides:e.strokeOverrides&&typeof e.strokeOverrides=="object"?e.strokeOverrides:void 0,surnameStrokes:e.surnameStrokes&&typeof e.surnameStrokes=="object"?e.surnameStrokes:void 0,...n,...e.gender==="male"||e.gender==="female"?{gender:e.gender}:{},...e.datetime?{lateZi:e.lateZi!==!1,trueSolar:e.trueSolar!==!1,dst:e.dst!==!1,longitude:typeof e.longitude=="number"?e.longitude:void 0,address:typeof e.address=="string"?e.address:void 0,geo:e.geo&&typeof e.geo=="object"?e.geo:void 0}:{}});return{...r,summary:at(r)}}throw t?ue("E_SYSTEM",`未知体系「${t}」,可选:bazi(四柱八字)、ziwei(紫微斗数)、liuyao(六爻)、meihua(梅花易数)、daliuren(大六壬)、qimen(奇门遁甲)、hepan(合盘)、tarot(塔罗)、almanac(黄历)、zeri(择日)、chenggu(称骨)、xiaoliuren(小六壬)、star(星座)、numerology(生命数字)、mbti(十六型人格问卷)、trend(人生 K 线)、fengshui(风水)、name(起名)、convert(公农历互转)。`):ue("E_INPUT","缺少 system,可选:bazi(四柱八字)、ziwei(紫微斗数)、liuyao(六爻)、meihua(梅花易数)、daliuren(大六壬)、qimen(奇门遁甲)、hepan(合盘)、tarot(塔罗)、almanac(黄历)、zeri(择日)、chenggu(称骨)、xiaoliuren(小六壬)、star(星座)、numerology(生命数字)、mbti(十六型人格问卷)、trend(人生 K 线)、fengshui(风水)、name(起名)、convert(公农历互转)。")}function Jn(e){const t=e.ganzhi,i=e.jieQi&&e.jieQi.next?` 下一节:${e.jieQi.next.name} ${e.jieQi.next.date}`:"",n=e.dayGod?`值日:${e.dayGod.name}(${e.dayGod.type}·${e.dayGod.luck})`:"",r=e.xiu?`二十八宿:${e.xiu.name}宿(${e.xiu.luck}·${e.xiu.zheng}·${e.xiu.animal})`:"",a=e.taiShen?`胎神:${e.taiShen}`:"",d=e.positions?`吉神方位:喜神${e.positions.xiShen||"—"} 财神${e.positions.caiShen||"—"} 福神${e.positions.fuShen?e.positions.fuShen.dir:"—"} 阳贵${e.positions.yangGui?e.positions.yangGui.dir:"—"} 阴贵${e.positions.yinGui?e.positions.yinGui.dir:"—"}`:"",w=e.lucky?`吉配生肖:六合${e.lucky.liuhe||"—"} 三合${(e.lucky.sanhe||[]).join("、")||"—"}`:"",Q=e.nayin&&e.nayin.day?`日柱纳音:${e.nayin.day.name}`:"",q=(e.hours||[]).map(J=>`${J.zhi}${J.ganZhi.slice(0,1)}·${J.shen}${J.luck==="吉"?"吉":"凶"}`).join(" ");return[`【黄历】${e.meta.date} ${e.meta.weekday} ${e.lunar.text}`,`干支:${t.year}年 ${t.month}月 ${t.day}日 属${t.shengXiao}`,...e.meta.boundaryNote?[` ${e.meta.boundaryNote}`]:[],`建除:${e.zhiXing}日 冲:${e.chong.text}${e.chong.sha?`(${e.chong.sha})`:""} ${n}`,[r,Q,a].filter(Boolean).join(" "),`宜:${e.yi.join("、")}`,`忌:${e.ji.join("、")}`,d,w,q?`时辰吉凶:${q}`:"",`节气:上一节 ${e.jieQi.prev?`${e.jieQi.prev.name} ${e.jieQi.prev.date}`:"—"}${i}`,e.dailyHexagram?`每日一卦:${e.dailyHexagram.name} ${e.dailyHexagram.meaning||""}`:"",`口径:${e.meta.scope}`].filter(Boolean).join(`
|
|
97
|
+
`)}const Dn=["cross","verifyPast","withInterpret","detail","question","direction","ask","geocode","rectify","events","shadow","trace"];function Yn(e={},t={}){const i=t.system||e.system,n=t.switches||Ee[i]||[];if(!n.length)return{system:i,switches:[],affected:0,total:0};const r={...e};for(const d of Dn)delete r[d];const a=n.map(d=>{const w=d.read(r),Q=d.alt(w);let q=[],J="",te=null,v=null;try{te=bn({...r,[d.key]:w}),v=bn({...r,[d.key]:Q}),q=Je(te,v)}catch(ge){J=ge&&ge.message||String(ge)}const ee=Ye(q.filter(ge=>en(ge.path))).map(ge=>({path:ge.path,label:un(ge.path),from:ze(ge.from),to:ze(ge.to)})),ke=new Map;for(const ge of q){const Te=nn(ge.path)||"其他";ke.set(Te,(ke.get(Te)||0)+1)}const _e=[...ke.entries()].map(([ge,Te])=>({name:ge,count:Te})).sort((ge,Te)=>Te.count-ge.count||ge.name.localeCompare(Te.name,"zh-Hans-CN"));return{key:d.key,title:d.title,short:d.short,current:w,alt:Q,currentLabel:d.label(w),altLabel:d.label(Q),total:q.length,summary:J?"":Xe(q),views:J?[]:We(i,te,v),roots:ee,categories:_e,error:J}});return{system:i,switches:a,affected:a.filter(d=>!d.error&&d.total>0).length,total:a.reduce((d,w)=>d+w.total,0)}}const Zn=["chaibu","chaoshen","zhirun"],Un=[1,3,5],Hn=["same-day","next-day"];function wn(e,t=""){if(e==null||e==="")return;const i=t?`${t}的`:"";let n;if(typeof e=="number")n=e;else if(typeof e=="string"){const r=e.trim();if(!/^[+-]?(\d+(\.\d*)?|\.\d+)$/.test(r))throw ue("E_RANGE",`${i}经度不是十进制数字:收到「${e}」。经度写数字即可,例如北京 116.4`);n=Number(r)}else throw ue("E_RANGE",`${i}经度必须是数字或数字字符串,收到 ${Array.isArray(e)?"array":typeof e}`);if(!Number.isFinite(n))throw ue("E_RANGE",`${i}经度不是有限数值:收到「${e}」。经度写十进制数字即可,例如北京 116.4`);if(n<-180||n>180)throw ue("E_RANGE",`${i}经度要在 −180 到 180 之间(东经为正),收到 ${n}`);return n}function En(e){const t=wn(e.longitude,""),i=e.partner&&typeof e.partner=="object"?wn(e.partner.longitude,"对方"):void 0,n=e.partner2&&typeof e.partner2=="object"?wn(e.partner2.longitude,"第三方"):void 0;if(!(t!==void 0&&e.longitude!==t||i!==void 0&&e.partner.longitude!==i||n!==void 0&&e.partner2.longitude!==n))return e;const a={...e};return t!==void 0&&(a.longitude=t),i!==void 0&&(a.partner={...a.partner,longitude:i}),n!==void 0&&(a.partner2={...a.partner2,longitude:n}),a}function Bn(e){if(e==null||e===""||e==="full")return"full";if(e==="lean")return"lean";throw ue("E_INPUT",`detail 只能是 'full' 或 'lean':收到「${String(e).slice(0,24)}」`)}function He(e){if(e==null||typeof e=="string"&&!e.trim())return;const t=f(e);if(!t)throw ue("E_ASOF",`无法解析 asOf:「${e}」,请用 2026-10-22T16:00 这种格式`);const{year:i,month:n,day:r,hour:a,minute:d}=t;if(!(n>=1&&n<=12)||!(r>=1&&r<=on(i,n)))throw ue("E_ASOF",`asOf 指向的日期不存在:${e}`);if(a!==void 0&&!(a>=0&&a<=23))throw ue("E_ASOF",`asOf 的小时要在 0–23 之间:${e}`);if(d!==void 0&&!(d>=0&&d<=59))throw ue("E_ASOF",`asOf 的分钟要在 0–59 之间:${e}`);return t}function Fn(e={}){const t=e.system;if(e.mode!==void 0&&e.mode!==null&&e.mode!==""){const i={convert:["solar2lunar","lunar2solar"],meihua:["time","number"],xiaoliuren:["time","number"]},n=i[t];if(!n)throw ue("E_INPUT",`mode 只用于 ${Object.keys(i).join(" / ")};${t||"当前体系"} 不收 mode`);if(!n.includes(e.mode))throw ue("E_INPUT",`${t} 的 mode 只能是 ${n.join(" / ")},收到「${String(e.mode).slice(0,24)}」`)}if(e.fortuneYear!==void 0&&e.fortuneYear!==null&&e.fortuneYear!==""){const i=Number(e.fortuneYear);if(!Number.isInteger(i))throw ue("E_INPUT",`fortuneYear 要是整数年份,收到「${e.fortuneYear}」`);e={...e,fortuneYear:i}}if(t==="bazi"){const i=pe(e.datetime),n=He(e.asOf),r=C({...i,gender:Me(e.gender),longitude:typeof e.longitude=="number"?e.longitude:void 0,address:typeof e.address=="string"?e.address:void 0,geo:e.geo&&typeof e.geo=="object"?e.geo:void 0,lateZi:e.lateZi!==!1,trueSolar:e.trueSolar!==!1,dst:e.dst!==!1,nowYear:n?n.year:void 0,hourUnknown:e.hourUnknown===!0});return{...r,...n?{asOf:n}:{},precision:i.precision,summary:fn(r)}}if(t==="ziwei"){if(e.hourUnknown===!0)throw ue("HOUR_UNKNOWN","紫微必须有出生时刻:命宫由生月与生时支定,时支未知则整盘不成立。请补上出生时刻,或改用八字三柱模式只看年/月/日。");e.lateZi!==void 0&&e.lateZishi===void 0&&(e={...e,lateZishi:e.lateZi===!1?"current-day":"next-day"});const i=pe(e.datetime),n=He(e.asOf),r=u({...i,gender:Me(e.gender),leapMonth:e.leapMonth,leapAsNext:e.leapAsNext===!0,...sn(e),longitude:typeof e.longitude=="number"?e.longitude:void 0,address:typeof e.address=="string"?e.address:void 0,geo:e.geo&&typeof e.geo=="object"?e.geo:void 0,trueSolar:e.trueSolar,dst:e.dst!==!1,asOf:n});return{...r,...n?{asOf:n}:{},precision:i.precision,summary:rn(r)}}if(t==="tarot"){const i=e.count===void 0||e.count===null||e.count===""?3:Number(e.count);if(!Un.includes(i))throw ue("E_COUNT",`塔罗张数只能是 1 / 3 / 5,收到「${e.count}」`);if(!he(e.seed))throw ue("E_INPUT",`seed 必须是数字,收到「${e.seed}」`);const n=He(e.asOf),r=$({count:i,question:e.question,at:e.asOf,random:re(e.seed)});return e.seed!==void 0&&e.seed!==null&&e.seed!==""&&(r.seed=Number(e.seed)),{...r,...n?{asOf:n}:{},summary:In(r)}}if(t==="daliuren"){const i=pe(e.datetime),n=e.lateZi!==!1,r=T({...i,lateZi:n});return r.lateZi=n,{...r,precision:i.precision,summary:Tn(r)}}if(t==="qimen"){const i=pe(e.datetime);if(e.juMethod!==void 0&&!Zn.includes(e.juMethod))throw ue("E_INPUT",`juMethod 只能是 chaibu / chaoshen / zhirun,收到「${e.juMethod}」`);const n=e.lateZiHourMode!==void 0?e.lateZiHourMode:e.lateZi===!0?"next-day":e.lateZi===!1?"same-day":void 0;if(n!==void 0&&!Hn.includes(n))throw ue("E_INPUT",`lateZiHourMode 只能是 same-day / next-day,收到「${n}」`);const r=n==="next-day"?"next-day":"same-day",a=l({...i,lateZiHourMode:r,juMethod:e.juMethod});return a.lateZiHourMode=r,{...a,summary:$n(a)}}if(t==="hepan"){if(e.hourUnknown===!0||e.partner&&e.partner.hourUnknown===!0)throw ue("HOUR_UNKNOWN","合盘需要双方都有出生时刻:夫妻宫与大运都依赖时支。请补齐时刻后再看,或用八字三柱模式各自看年/月/日。");const i=e.partner;if(!i||typeof i!="object")throw ue("E_PARTNER","合盘需要 partner:{ datetime, gender, address? },其中 partner.datetime 是对方的公历出生时间");if(!i.datetime)throw ue("E_PARTNER",'缺少 partner.datetime(对方的公历出生时间),例如 partner: {"datetime":"1992-03-03T10:00","gender":"female"}');const n=e.partner2;if(n!=null){if(typeof n!="object"||Array.isArray(n))throw ue("E_PARTNER","partner2 需要 { datetime, gender, address? };不想看三方就整段省略(null 视同未传)");if(!n.datetime)throw ue("E_PARTNER",'缺少 partner2.datetime(第三方的公历出生时间),例如 partner2: {"datetime":"1988-09-09T08:00","gender":"male"}')}const r=e.chart==="ziwei"?"ziwei":"bazi",a=(J,te)=>({...pe(J.datetime),gender:Me(J.gender,te),trueSolar:J.trueSolar,lateZi:J.lateZi,dst:J.dst!==!1,address:typeof J.address=="string"?J.address:void 0,longitude:typeof J.longitude=="number"?J.longitude:void 0,geo:J.geo&&typeof J.geo=="object"?J.geo:void 0}),d=a(e,"你(主方)"),w=a(i,"对方"),Q=(J,te)=>r==="ziwei"?y({a:J,b:te}):h({a:J,b:te}),q=Q(d,w);if(n){const J=a(n,"第三方");q.triple=o([{key:"a-b",a:"你",b:"对方",result:q},{key:"a-c",a:"你",b:"第三方",result:Q(d,J)},{key:"b-c",a:"对方",b:"第三方",result:Q(w,J)}])}return{...q,summary:Re(q)}}if(t==="meihua"){let i;e.mode!=="number"&&pe(e.datetime);try{i=_({mode:e.mode==="number"?"number":"time",datetime:e.datetime,upper:e.upper,lower:e.lower,changing:e.changing,lateZi:e.lateZi})}catch(n){const r=n&&n.message||String(n);throw ue(n&&n.code||"E_INPUT",n&&n.code?r:`梅花起卦参数不完整:${r}`)}return{...i,summary:On(i)}}if(t==="liuyao"){if(!he(e.seed))throw ue("E_INPUT",`seed 必须是数字,收到「${e.seed}」`);let i;if(e.lines===void 0||e.lines===null)i=U(re(e.seed));else{if(!Array.isArray(e.lines))throw ue("E_LINES","lines 必须是数组:自下而上 6 个爻值(6 老阴 / 7 少阳 / 8 少阴 / 9 老阳)");if(e.lines.length!==6)throw ue("E_LINES",`六爻需要正好 6 个爻值(自下而上),收到 ${e.lines.length} 个;留空则由引擎随机摇卦`);i=e.lines.map(Number)}let n,r=null;const a=e.datetime?pe(e.datetime):He(e.asOf);if(a){e.datetime||(r=a);const te=z(R(m(a.year,a.month,a.day)));n={stem:te.stem,branch:te.branch,name:te.name}}let d;try{d=Y({lines:i,question:e.question,dayGanZhi:n})}catch(te){throw ue(te&&te.code||"E_LINES",te&&te.message?te.message:te)}const w=Z(d,{direction:e.direction,gender:e.gender});w.liuqin&&(d.useGod=w);let Q=null;if(a)try{Q=(c({year:a.year,month:a.month,day:a.day,hour:a.hour,minute:a.minute}).monthGanZhi||"")[1]||null}catch{Q=null}const q=D(d,{monthBranch:Q,dayBranch:d.dayGanZhi.branch});q&&(d.hexStrength=q);const J=S(d,{monthBranch:Q,dayBranch:d.dayGanZhi.branch});if(J&&(d.jinTuiPower=J),w.liuqin){const te=E(d,w,{monthBranch:Q,dayBranch:d.dayGanZhi.branch});te&&(d.useGodStrength=te);const v=k(d,w,{monthBranch:Q,dayBranch:d.dayGanZhi.branch});v&&(d.fushenAccess=v);const ee=p(d,w,{monthBranch:Q});ee&&(d.yingqi=ee)}return e.seed!==void 0&&e.seed!==null&&e.seed!==""&&(d.seed=Number(e.seed)),{...d,...r?{asOf:r}:{},summary:Mn(d)}}if(t==="almanac"){const i=pe(e.datetime),n=oe({year:i.year,month:i.month,day:i.day});return{...n,summary:Jn(n)}}if(t==="zeri"){if(!(e.candidates!==void 0&&e.candidates!==null)&&(typeof e.startDate!="string"||!e.startDate.trim()))throw ue("E_INPUT",'择日需要 startDate(公历 YYYY-MM-DD,起算日);可另给 days(1–60,默认 30)与 shengXiao(当事人属相)。只想比几天,改给 candidates: ["2026-12-01","2026-12-08"]');let n;try{n=ce({task:e.task,startDate:e.startDate,days:e.days,shengXiao:e.shengXiao,candidates:e.candidates})}catch(r){throw ue(r&&r.code||"E_INPUT",r&&r.message||String(r))}return{...n,summary:Xn(n)}}if(t==="chenggu"){const i=pe(e.datetime),n=/[T\s]\d{1,2}:\d{1,2}/.test(String(e.datetime)),r=Number.isInteger(e.hour)?e.hour:n?i.hour:null;if(r===null||r<0||r>23)throw ue("E_INPUT","称骨必须给时辰:datetime 带时分(如 1990-08-15T10:00),或额外给 hour(0–23)——缺时辰四柱不齐");const a=se({year:i.year,month:i.month,day:i.day,hour:r,minute:n?i.minute:0,lateZi:e.lateZi});return{...a,summary:Wn(a)}}if(t==="convert"){const i=e.mode==="lunar2solar"?"lunar2solar":"solar2lunar";let n;if(i==="lunar2solar"){if(e.lunarYear==null||e.lunarMonth==null||e.lunarDay==null)throw ue("E_INPUT","农历转公历需要 lunarYear / lunarMonth / lunarDay(闰月另加 isLeapMonth: true)");n=Ie({mode:i,lunarYear:Number(e.lunarYear),lunarMonth:Number(e.lunarMonth),lunarDay:Number(e.lunarDay),isLeapMonth:e.isLeapMonth===!0})}else{const r=pe(e.datetime);n=Ie({mode:i,year:r.year,month:r.month,day:r.day})}return{...n,summary:Vn(n)}}if(t==="xiaoliuren"){const i=e.datetime?pe(e.datetime):null,n=fe({mode:e.mode==="number"?"number":"time",date:typeof e.date=="string"&&e.date.trim()?e.date:i?`${i.year}-${i.month}-${i.day}`:void 0,hour:Number.isInteger(e.hour)?e.hour:i&&/[T\s]\d{1,2}:\d{1,2}/.test(String(e.datetime))?i.hour:void 0,num1:e.num1,num2:e.num2,num3:e.num3,question:e.question,lateZi:e.lateZi});return{...n,summary:Kn(n)}}if(t==="star"){const i=pe(e.datetime),n=je({year:i.year,month:i.month,day:i.day});return{...n,summary:Qn(n)}}if(t==="numerology"){const i=pe(e.datetime),n=ye({year:i.year,month:i.month,day:i.day});return{...n,summary:et(n)}}if(t==="mbti"){if(e.answers===void 0||e.answers===null){const n=me();return{...n,summary:tt(n)}}const i=Oe({answers:e.answers});return{...i,summary:nt(i)}}if(t==="trend"){const i=pe(e.datetime),n=e.asOf?He(e.asOf):void 0,r=an({...i,nowYear:n?n.year:void 0,gender:Me(e.gender),toAge:e.toAge,lateZi:e.lateZi!==!1,trueSolar:e.trueSolar!==!1,dst:e.dst!==!1,longitude:typeof e.longitude=="number"?e.longitude:void 0,address:typeof e.address=="string"?e.address:void 0,geo:e.geo&&typeof e.geo=="object"?e.geo:void 0,hourUnknown:e.hourUnknown===!0});return{...r,...e.hourUnknown===!0?{hourUnknown:!0,hourPrecision:"day"}:{},precision:i.precision,summary:it(r)}}if(t==="fengshui"){if(e.action!=null&&!["natal","advise","xuankong"].includes(e.action))throw ue("E_INPUT",`风水 action 只能是 natal / advise / xuankong,收到「${String(e.action).slice(0,24)}」`);const i=e.action==="advise"?"advise":e.action==="xuankong"?"xuankong":"natal";if(i==="xuankong"){const a=Le({action:i,sitting:e.sitting,facing:e.facing,...e.period!==void 0?{period:e.period}:{},...e.fortuneYear!==void 0?{fortuneYear:e.fortuneYear}:{},...typeof e.sittingOffset=="number"?{sittingOffset:e.sittingOffset}:{},...typeof e.sittingDegree=="number"?{sittingDegree:e.sittingDegree}:{},...typeof e.facingOffset=="number"?{facingOffset:e.facingOffset}:{},...typeof e.facingDegree=="number"?{facingDegree:e.facingDegree}:{},...typeof e.fortuneDate=="string"?{fortuneDate:e.fortuneDate}:{},...typeof e.fortuneTime=="string"?{fortuneTime:e.fortuneTime}:{},dst:e.dst!==!1});return{...a,summary:Sn(a)}}if(i==="advise"){const a=Le({action:i,sitting:e.sitting,facing:e.facing,...e.datetime?pe(e.datetime):{},...e.gender==="male"||e.gender==="female"?{gender:e.gender}:{},dst:e.dst!==!1});return{...a,summary:Sn(a)}}const n=pe(e.datetime),r=Le({action:"natal",year:n.year,month:n.month,day:n.day,gender:Me(e.gender),fortuneYear:e.fortuneYear,dst:e.dst!==!1});return{...r,summary:Sn(r)}}if(t==="name"){if(e.action!=null&&!["assess","generate"].includes(e.action))throw ue("E_INPUT",`起名 action 只能是 assess / generate,收到「${String(e.action).slice(0,24)}」`);const i=e.action==="generate"?"generate":"assess",n=e.datetime?pe(e.datetime):Number.isInteger(e.year)&&Number.isInteger(e.month)&&Number.isInteger(e.day)?{year:e.year,month:e.month,day:e.day,...Number.isInteger(e.hour)?{hour:e.hour}:{},...Number.isInteger(e.minute)?{minute:e.minute}:{}}:{},r=Ge({action:i,surname:e.surname,givenName:e.givenName,limit:e.limit,charElements:e.charElements&&typeof e.charElements=="object"?e.charElements:void 0,strokeOverrides:e.strokeOverrides&&typeof e.strokeOverrides=="object"?e.strokeOverrides:void 0,surnameStrokes:e.surnameStrokes&&typeof e.surnameStrokes=="object"?e.surnameStrokes:void 0,...n,...e.gender==="male"||e.gender==="female"?{gender:e.gender}:{},...e.datetime?{lateZi:e.lateZi!==!1,trueSolar:e.trueSolar!==!1,dst:e.dst!==!1,longitude:typeof e.longitude=="number"?e.longitude:void 0,address:typeof e.address=="string"?e.address:void 0,geo:e.geo&&typeof e.geo=="object"?e.geo:void 0}:{}});return{...r,summary:at(r)}}throw t?ue("E_SYSTEM",`未知体系「${t}」,可选:bazi(四柱八字)、ziwei(紫微斗数)、liuyao(六爻)、meihua(梅花易数)、daliuren(大六壬)、qimen(奇门遁甲)、hepan(合盘)、tarot(塔罗)、almanac(黄历)、zeri(择日)、chenggu(称骨)、xiaoliuren(小六壬)、star(星座)、numerology(生命数字)、mbti(十六型人格问卷)、trend(人生 K 线)、fengshui(风水)、name(起名)、convert(公农历互转)。`):ue("E_INPUT","缺少 system,可选:bazi(四柱八字)、ziwei(紫微斗数)、liuyao(六爻)、meihua(梅花易数)、daliuren(大六壬)、qimen(奇门遁甲)、hepan(合盘)、tarot(塔罗)、almanac(黄历)、zeri(择日)、chenggu(称骨)、xiaoliuren(小六壬)、star(星座)、numerology(生命数字)、mbti(十六型人格问卷)、trend(人生 K 线)、fengshui(风水)、name(起名)、convert(公农历互转)。")}function Jn(e){const t=e.ganzhi,i=e.jieQi&&e.jieQi.next?` 下一节:${e.jieQi.next.name} ${e.jieQi.next.date}`:"",n=e.dayGod?`值日:${e.dayGod.name}(${e.dayGod.type}·${e.dayGod.luck})`:"",r=e.xiu?`二十八宿:${e.xiu.name}宿(${e.xiu.luck}·${e.xiu.zheng}·${e.xiu.animal})`:"",a=e.taiShen?`胎神:${e.taiShen}`:"",d=e.positions?`吉神方位:喜神${e.positions.xiShen||"—"} 财神${e.positions.caiShen||"—"} 福神${e.positions.fuShen?e.positions.fuShen.dir:"—"} 阳贵${e.positions.yangGui?e.positions.yangGui.dir:"—"} 阴贵${e.positions.yinGui?e.positions.yinGui.dir:"—"}`:"",w=e.lucky?`吉配生肖:六合${e.lucky.liuhe||"—"} 三合${(e.lucky.sanhe||[]).join("、")||"—"}`:"",Q=e.nayin&&e.nayin.day?`日柱纳音:${e.nayin.day.name}`:"",q=(e.hours||[]).map(J=>`${J.zhi}${J.ganZhi.slice(0,1)}·${J.shen}${J.luck==="吉"?"吉":"凶"}`).join(" ");return[`【黄历】${e.meta.date} ${e.meta.weekday} ${e.lunar.text}`,`干支:${t.year}年 ${t.month}月 ${t.day}日 属${t.shengXiao}`,...e.meta.boundaryNote?[` ${e.meta.boundaryNote}`]:[],`建除:${e.zhiXing}日 冲:${e.chong.text}${e.chong.sha?`(${e.chong.sha})`:""} ${n}`,[r,Q,a].filter(Boolean).join(" "),`宜:${e.yi.join("、")}`,`忌:${e.ji.join("、")}`,d,w,q?`时辰吉凶:${q}`:"",`节气:上一节 ${e.jieQi.prev?`${e.jieQi.prev.name} ${e.jieQi.prev.date}`:"—"}${i}`,e.dailyHexagram?`每日一卦:${e.dailyHexagram.name} ${e.dailyHexagram.meaning||""}`:"",`口径:${e.meta.scope}`].filter(Boolean).join(`
|
|
98
98
|
`)}function Xn(e){const t=e.compare&&e.compare.mode==="candidates",i=t?`【择日·${e.meta.task}】候选 ${e.meta.days} 天:${e.meta.candidates.join("、")}${e.meta.shengXiao?` 当事人属${e.meta.shengXiao}`:"(未给属相,未做冲煞排除)"}`:`【择日·${e.meta.task}】${e.meta.startDate} 起 ${e.meta.days} 天${e.meta.shengXiao?` 当事人属${e.meta.shengXiao}`:"(未给属相,未做冲煞排除)"}`,n=e.days.slice().sort((a,d)=>d.score-a.score).slice(0,t?12:5).map(a=>{const d=a.grade?`,卷十${a.grade.label}·${a.grade.decision}`:"";return`· ${a.date} ${a.weekday} ${a.verdict}(${a.score}分${d}) 宜${a.yi.slice(0,3).join("/")} ${a.reasons.join(";")||"无特别加减分"}`}),r=t?e.compare.best?`这一组里最优:${e.compare.best.date}(${e.compare.best.score}分,${e.compare.best.verdict})`+(e.compare.best.ties.length>1?`;同分:${e.compare.best.ties.filter(a=>a!==e.compare.best.date).join("、")}`:""):"这一组都因冲属相被排除,没有可用的日子":`推荐日:${e.best.length?e.best.join("、"):"本期无(都不够推荐分)"}`;return[i,r,`推荐日:${e.best.length?e.best.join("、"):"无"}`,`可用日:${e.usable.length?e.usable.join("、"):"无"}`,`回避日:${e.avoid.length?e.avoid.slice(0,6).join("、"):"无"}`,t?"候选日逐日:":"逐日排序:",...n,...t?[`比较口径:${e.compare.note}`]:[],`神煞依据:${e.shenshaRef.text};起法 ${e.shenshaRef.volumes.join("、")}。未实现起法:${e.shenshaRef.unsupported.join("、")}(不计分,逐日 shensha.unsupported 列出)。`,...e.shenshaRef.juan10?[`卷十依据:${e.shenshaRef.juan10.text}(${e.shenshaRef.juan10.corpusLines});${e.shenshaRef.juan10.thresholdsNote}`]:[],`口径:${e.meta.scope}`].join(`
|
|
99
99
|
`)}function Wn(e){const t=e.song||{};return[`【称骨】${e.input.solar} ${e.lunar.text}`,`四项:${e.weights.year.label} ${e.weights.month.label} ${e.weights.day.label} ${e.weights.hour.label}`,`合计:${e.total.label}(${e.verdict.band})`,`歌诀(${e.total.label}):${t.text||"—"}`,`释义:${t.plain||"—"}`,`分档白话:${e.verdict.text}`,"口径:骨重与歌诀为通行本口径(各版本歌诀有异文),释义为白话自撰,属民俗娱乐参考。"].join(`
|
|
100
100
|
`)}function Kn(e){return[`【小六壬·${e.meta.mode}】${e.meta.question?`所问:${e.meta.question}`:""}`,e.meta.originText,`落宫:${e.steps.join(" → ")}`,`断语:${e.result.palace}(${e.result.luck}) ${e.result.text}`].join(`
|