/** * @file Bazi Fortune Action Evidence * @description 把本命已经裁决的 UsefulGodAnalysis / decisionEvidence * 投影到大运、流年、流月、流日各层级岁运参与干上,形成结构化 action facts。 * * 核心设计边界: * 1. 具体干条件保持具体干语义,不扩大成同五行; * 2. 藏干只标记本气/中气/余气,不能当岁运明透; * 3. 父层事实不可被子层覆盖; * 4. 本命分析不可被回写; * 5. 关系事实只有合冲时,currentActionStatus 不得升级为满足或不满足; * 6. 生成逻辑只使用结构化字段,不解析中文 detail。 */ import type { BaziChartResult } from './baziTypes'; import { type RootTraditionalKind } from './baziRootFacts'; import type { FortuneTriggerEvidenceResult } from './fortuneTriggerEvidence'; export type FortuneActionLevel = 'dayun' | 'year' | 'month' | 'day'; export type FortuneActionLevelChinese = '大运' | '流年' | '流月' | '流日'; export type FortuneActionPlacement = '岁运透干' | '岁运藏干'; export type FortuneActionHiddenCategory = '本气' | '中气' | '余气'; export type FortuneActionConditionStatus = '引用已裁决喜用条件' | '引用有前提的喜用条件' | '引用已裁决所忌条件' | '双向条件引用' | '未引用'; export type FortuneActionCurrentStatus = '满足' | '不满足' | '资料不足'; export type FortuneActionHitSourceType = 'conditionalFavorableStems' | 'conditionalUnfavorableStems' | '基础五行喜忌' | '条件五行喜用' | 'patternBreakerRestrictions' | '制化来源'; export interface FortuneActionLayerInput { id: string; type: FortuneActionLevel; label: string; ganZhi: string; timeRange?: string; key?: string; } export interface FortuneRootEvidenceItem { branch: string; stem: string; hiddenCategory: FortuneActionHiddenCategory; traditionalKind: RootTraditionalKind; isSameStem: boolean; } export interface FortuneRootEvidence { hasClearRoot: boolean; isSelfRooted: boolean; natalRoots: Array; fortuneRoots: Array; } export interface FortuneActionFact { key: string; layerKey: string; level: FortuneActionLevel; parentLayerKey?: string; stem: string; element: string; tenGod: string; placement: FortuneActionPlacement; hiddenCategory?: FortuneActionHiddenCategory; hitSources: FortuneActionHitSourceType[]; conditionStatus: FortuneActionConditionStatus; currentActionStatus: FortuneActionCurrentStatus; rootEvidence?: FortuneRootEvidence; targetObjects: string[]; applicableTimeRange?: string; supportingFactKeys: string[]; opposingFactKeys: string[]; 层级: FortuneActionLevelChinese; 干: string; 五行: string; 十神: string; 藏干位置?: FortuneActionHiddenCategory; 命中来源: FortuneActionHitSourceType[]; 作用对象: string[]; 根气证据?: FortuneRootEvidence; 适用时间范围?: string; 支持事实key: string[]; 反证key: string[]; } export interface FortuneActionEvidenceResult { key: 'bazi:fortune-action:evidence'; status: '已计算' | '资料不足'; facts: FortuneActionFact[]; byLayer: Record; summaryLines: string[]; promptText: string; } export declare function formatFortuneActionFactLine(fact: FortuneActionFact): string; export declare function formatFortuneActionEvidenceForPrompt(evidence: FortuneActionEvidenceResult | undefined): string[]; export declare function analyzeFortuneActionEvidence(params: { result: BaziChartResult; layers: FortuneActionLayerInput[]; triggerEvidence?: FortuneTriggerEvidenceResult; }): FortuneActionEvidenceResult;