Files
----/前端源码/uni-app/api/naming.ts

351 lines
9.7 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*
* @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<PersonalNamingResponse> {
return http.post('/yifan_naming_reports/personal-naming', params);
},
personalScoring(params: PersonalScoringRequest): Promise<any> {
return http.post('/yifan_naming_reports/personal-scoring', params);
},
personalScoringTrial(params: PersonalScoringRequest): Promise<any> {
return http.post('/yifan_naming_reports/personal-scoring-trial', params);
},
personalRenaming(params: PersonalRenamingRequest): Promise<PersonalNamingResponse> {
return http.post('/yifan_naming_reports/personal-renaming', params);
},
/**
* 公司起名
*/
companyNaming(params: CompanyNamingRequest): Promise<CompanyNamingResponse> {
return http.post('/yifan_naming_reports/company-naming', params);
},
companyRenaming(params: CompanyRenamingRequest): Promise<CompanyRenamingResponse> {
return http.post('/yifan_naming_reports/company-renaming', params);
},
/**
* 公司测名/企业运程
*/
companyAnalysis(params: CompanyAnalysisRequest): Promise<CompanyAnalysisResponse> {
return http.post('/yifan_naming_reports/company-analysis', params);
},
companyScoring(params: CompanyScoringRequest): Promise<any> {
return http.post('/yifan_naming_reports/company-scoring', params);
},
companyScoringTrial(params: CompanyScoringRequest): Promise<any> {
return http.post('/yifan_naming_reports/company-scoring-trial', params);
},
/**
* 测名试用分享回调 - 好友通过分享链接进入小程序后,为分享者增加免费次数
*/
scoringTrialShareCallback(): Promise<any> {
return http.post('/yifan_naming_reports/scoring-trial-share-callback');
},
/**
* 根据方案ID获取详情
* @param solutionId 方案ID
*/
getSolutionDetail(solutionId: number | string): Promise<SolutionDetailResponse> {
return http.get(`/yifan_naming_solutions/full_detail/${solutionId}`);
},
/**
* 根据报告ID获取方案列表
* @param reportId 报告ID
*/
getSolutionsByReportId(reportId: number | string): Promise<any> {
return http.get(`/yifan_naming_reports/${reportId}/solutions`);
},
};