/* * @Author: caoziyuan ziyuan.cao@zhuying.com * @Date: 2026-01-14 09:43:15 * @LastEditors: caoziyuan ziyuan.cao@zhuying.com * @LastEditTime: 2026-01-14 11:10:33 * @FilePath: \uni-app\api\naming.ts * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE */ /** * 起名相关 API */ import { http } from '../utils/request'; /** * 起名/改名/测名返回的「方案 JSON」建议在根级包含五行生克与属相模块,字段约定见: * `utils/backend-wuxing-zodiac-spec.ts`(bazi_name_fit、wuxing_bagua、zodiac_sign)。 * 生成提示词可用:`buildBackendWuxingZodiacPromptZh()`。 */ export interface PersonalNamingRequest { last_name: string; gender: string; birth_date: string; birth_place: string; style_label: string; father_name?: string; father_birth_date?: string; mother_name?: string; mother_birth_date?: string; family_book?: string; } export interface PersonalNamingResponse { report_id: number; status?: number; solutions?: Array<{ id: number; name: string; pinyin?: string; tags?: string[]; name_meaning?: string; poetry_source?: string; total_score?: number; wuxing?: string; zodiac?: string; constellation?: string; }>; [key: string]: any; } export interface PersonalRenamingRequest { last_name: string; gender: string; birth_date: string; birth_place: string; style_label: string; father_name?: string; father_birth_date?: string; mother_name?: string; mother_birth_date?: string; family_book?: string; original_name: string; reason: string; } /** * 个人测名。建议后端同时接收:精确出生时辰、出生地/时区(若有),以便排出八字、喜用与生肖年柱; * 详见 `utils/backend-wuxing-zodiac-spec.ts` 中 RECOMMENDED_PERSONAL_REQUEST_FIELDS。 */ export interface PersonalScoringRequest { surname: string; given_name: string; gender: string; birthday: string; } // 公司起名核心成员 export interface CompanyCoreMember { name: string; birthday: string; // 格式: 'YYYY-MM-DD HH:mm:ss' } // 公司起名请求参数 export interface CompanyNamingRequest { industry: string; // 行业,如 "科技" address: string; // 地址,如 "临沂" core_members: CompanyCoreMember[]; // 核心成员列表 report_id?: number; } export interface CompanyRenamingRequest { industry: string; address: string; core_members: CompanyCoreMember[]; vision: string; preference: string; original_name: string; reason: string; } export interface CompanyRenamingResponse { report_id: number; status?: number; solutions?: Array<{ id: number; name: string; pinyin?: string; tags?: string[]; name_meaning?: string; poetry_source?: string; total_score?: number; star_rating?: number; is_recommended?: number; }>; [key: string]: any; } // 公司起名响应 - request.ts 会解包,实际返回的是 data 部分 export interface CompanyNamingResponse { report_id: number; status: number; solutions?: Array<{ id: number; name: string; pinyin: string; wuxing: string; tags: string[]; name_meaning: string; poetry_source: string; total_score: number; star_rating: number; is_recommended: number; }>; } // 方案详情响应 - request.ts 会解包,实际返回的是 data 部分 export interface SolutionDetailResponse { id: number; report_id: number; name: string; pinyin: string; total_score: number; star_rating: number; wuxing: string; shuxiang: string | null; tags: string[]; name_meaning: string; poetry_source: string; is_recommended: number; is_favorited: boolean; sections: Array<{ id: number; section_type: string; title: string; summary_data: any; sort_order: number; details: Array<{ id: number; detail_type: string; title: string; content: any; sort_order: number; }>; }>; [key: string]: any; } // 公司测名/企业运程(company_analysis)请求参数 export interface CompanyAnalysisRequest { company_name: string; industry: string; address: string; target_audience: string; members: Array<{ name: string; birth_date: string }>; // 格式: 'YYYY-MM-DD HH:mm:ss' } export interface CompanyScoringRequest { company_name: string; industry: string; address: string; target_audience: string; members: Array<{ name: string; birthday: string }>; } export type CompanyAnalysisDetailNode = | { type: 'text'; text: string } | { type: 'list'; items: string[] } | { type: 'kv'; items: Array<{ label: string; value: string }> }; export interface CompanyAnalysisDetails { title: string; nodes: CompanyAnalysisDetailNode[]; } // 公司测名/企业运程(company_analysis)响应 - request.ts 会解包,实际返回的是 data 部分 export interface CompanyAnalysisResponse { header: { name: string; tagLeft: string; tagRight: string; score: number; quote: string; details?: CompanyAnalysisDetails; }; characterAnalysis: { characters: Array<{ char: string; stroke: number; element: string; meaning: string }>; analysis: string; details?: CompanyAnalysisDetails; }; businessPattern: { radar: { labels: string[]; values: number[] }; summary: Array<{ label: string; value: string }>; details?: CompanyAnalysisDetails; }; gua: { bg: string; name: string; badge: string; desc: string; tags: string[]; insight: string; details?: CompanyAnalysisDetails; }; team: { members: Array<{ role: string; score: number; desc: string; match: string }>; note: string; details?: CompanyAnalysisDetails; }; years: { items: Array<{ year: string; luck: string; text: string }>; details?: CompanyAnalysisDetails; }; wealthTrend: { bars: number[]; note: string; details?: CompanyAnalysisDetails; }; direction: { note: string; goodDot?: { x: number; y: number }; details?: CompanyAnalysisDetails; }; layout: { items: Array<{ strong: string; textBefore: string; highlights?: string[]; textAfter: string; }>; details?: CompanyAnalysisDetails; }; execution: { text: string; details?: CompanyAnalysisDetails; }; } export interface NewCompanyRenamingRequest { industry: string; address: string; core_members: CompanyCoreMember[]; vision: string; preference: string; original_name: string; reason: string; additional_info: string; } export interface NewCompanyRenamingResponse { report_id: number; status?: number; solutions?: Array<{ id: number; name: string; pinyin?: string; tags?: string[]; name_meaning?: string; poetry_source?: string; total_score?: number; star_rating?: number; is_recommended?: number; }>; [key: string]: any; } export const namingApi = { personalNaming(params: PersonalNamingRequest): Promise { return http.post('/yifan_naming_reports/personal-naming', params); }, personalScoring(params: PersonalScoringRequest): Promise { return http.post('/yifan_naming_reports/personal-scoring', params); }, personalScoringTrial(params: PersonalScoringRequest): Promise { return http.post('/yifan_naming_reports/personal-scoring-trial', params); }, personalRenaming(params: PersonalRenamingRequest): Promise { return http.post('/yifan_naming_reports/personal-renaming', params); }, /** * 公司起名 */ companyNaming(params: CompanyNamingRequest): Promise { return http.post('/yifan_naming_reports/company-naming', params); }, companyRenaming(params: CompanyRenamingRequest): Promise { return http.post('/yifan_naming_reports/company-renaming', params); }, /** * 公司测名/企业运程 */ companyAnalysis(params: CompanyAnalysisRequest): Promise { return http.post('/yifan_naming_reports/company-analysis', params); }, companyScoring(params: CompanyScoringRequest): Promise { return http.post('/yifan_naming_reports/company-scoring', params); }, companyScoringTrial(params: CompanyScoringRequest): Promise { return http.post('/yifan_naming_reports/company-scoring-trial', params); }, /** * 测名试用分享回调 - 好友通过分享链接进入小程序后,为分享者增加免费次数 */ scoringTrialShareCallback(): Promise { return http.post('/yifan_naming_reports/scoring-trial-share-callback'); }, /** * 根据方案ID获取详情 * @param solutionId 方案ID */ getSolutionDetail(solutionId: number | string): Promise { return http.get(`/yifan_naming_solutions/full_detail/${solutionId}`); }, /** * 根据报告ID获取方案列表 * @param reportId 报告ID */ getSolutionsByReportId(reportId: number | string): Promise { return http.get(`/yifan_naming_reports/${reportId}/solutions`); }, };