upload project source code
This commit is contained in:
350
前端源码/uni-app/api/naming.ts
Normal file
350
前端源码/uni-app/api/naming.ts
Normal file
@@ -0,0 +1,350 @@
|
||||
/*
|
||||
* @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`);
|
||||
},
|
||||
};
|
||||
Reference in New Issue
Block a user