@yjzf/mcp-server-yjzf 0.2.7 → 0.2.9
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/dist/index.js +11 -0
- package/dist/index.js.map +1 -1
- package/dist/tools/contract/new_house_commission_export.d.ts +49 -0
- package/dist/tools/contract/new_house_commission_export.d.ts.map +1 -0
- package/dist/tools/contract/new_house_commission_export.js +249 -0
- package/dist/tools/contract/new_house_commission_export.js.map +1 -0
- package/dist/tools/contract/new_house_developer_repayment_export.d.ts +38 -0
- package/dist/tools/contract/new_house_developer_repayment_export.d.ts.map +1 -0
- package/dist/tools/contract/new_house_developer_repayment_export.js +178 -0
- package/dist/tools/contract/new_house_developer_repayment_export.js.map +1 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -20,6 +20,8 @@ import * as newHouseContractExportTool from "./tools/contract/new_house_contract
|
|
|
20
20
|
import * as statementQueryTool from "./tools/data/statement_query.js";
|
|
21
21
|
import * as branchSelectTool from "./tools/util/branch_select.js";
|
|
22
22
|
import * as leaseSaleContractExportTool from "./tools/contract/lease_sale_contract_export.js";
|
|
23
|
+
import * as newHouseCommissionExportTool from "./tools/contract/new_house_commission_export.js";
|
|
24
|
+
import * as newHouseDeveloperRepaymentExportTool from "./tools/contract/new_house_developer_repayment_export.js";
|
|
23
25
|
// ---------------------------------------------------------------------------
|
|
24
26
|
// MCP Server
|
|
25
27
|
// ---------------------------------------------------------------------------
|
|
@@ -41,10 +43,19 @@ server.registerTool(newHouseContractExportTool.name, newHouseContractExportTool.
|
|
|
41
43
|
server.registerTool(statementQueryTool.name, statementQueryTool.schema, statementQueryTool.handler);
|
|
42
44
|
server.registerTool(branchSelectTool.name, branchSelectTool.schema, branchSelectTool.handler);
|
|
43
45
|
server.registerTool(leaseSaleContractExportTool.name, leaseSaleContractExportTool.schema, leaseSaleContractExportTool.handler);
|
|
46
|
+
server.registerTool(newHouseCommissionExportTool.name, newHouseCommissionExportTool.schema, newHouseCommissionExportTool.handler);
|
|
47
|
+
server.registerTool(newHouseCommissionExportTool.resultName, newHouseCommissionExportTool.resultSchema, newHouseCommissionExportTool.resultHandler);
|
|
48
|
+
server.registerTool(newHouseCommissionExportTool.invitationName, newHouseCommissionExportTool.invitationSchema, newHouseCommissionExportTool.invitationHandler);
|
|
49
|
+
server.registerTool(newHouseDeveloperRepaymentExportTool.name, newHouseDeveloperRepaymentExportTool.schema, newHouseDeveloperRepaymentExportTool.handler);
|
|
50
|
+
server.registerTool(newHouseDeveloperRepaymentExportTool.resultName, newHouseDeveloperRepaymentExportTool.resultSchema, newHouseDeveloperRepaymentExportTool.resultHandler);
|
|
44
51
|
// ---------------------------------------------------------------------------
|
|
45
52
|
// Start
|
|
46
53
|
// ---------------------------------------------------------------------------
|
|
47
54
|
async function main() {
|
|
55
|
+
if (process.argv.includes("--version") || process.argv.includes("-v")) {
|
|
56
|
+
console.log(version);
|
|
57
|
+
process.exit(0);
|
|
58
|
+
}
|
|
48
59
|
const transport = new StdioServerTransport();
|
|
49
60
|
await server.connect(transport);
|
|
50
61
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,uCAAuC;AACvC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAEzE,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAE/C,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,KAAK,cAAc,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,eAAe,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,qBAAqB,MAAM,qCAAqC,CAAC;AAC7E,OAAO,KAAK,kBAAkB,MAAM,kCAAkC,CAAC;AACvE,OAAO,KAAK,mBAAmB,MAAM,mCAAmC,CAAC;AACzE,OAAO,KAAK,4BAA4B,MAAM,yCAAyC,CAAC;AACxF,OAAO,KAAK,0BAA0B,MAAM,+CAA+C,CAAC;AAC5F,OAAO,KAAK,kBAAkB,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,gBAAgB,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,2BAA2B,MAAM,gDAAgD,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import * as z from "zod/v4";
|
|
2
|
+
export declare const name = "new_house_commission_export";
|
|
3
|
+
export declare const schema: {
|
|
4
|
+
description: string;
|
|
5
|
+
inputSchema: z.ZodObject<{
|
|
6
|
+
branchId: z.ZodString;
|
|
7
|
+
brand_id: z.ZodString;
|
|
8
|
+
dateType: z.ZodEnum<{
|
|
9
|
+
createDate: "createDate";
|
|
10
|
+
commissionDate: "commissionDate";
|
|
11
|
+
}>;
|
|
12
|
+
startTime: z.ZodNumber;
|
|
13
|
+
endTime: z.ZodNumber;
|
|
14
|
+
paymentStatusList: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
|
|
15
|
+
reBatchId: z.ZodOptional<z.ZodString>;
|
|
16
|
+
}, z.core.$strip>;
|
|
17
|
+
};
|
|
18
|
+
export declare function handler(args: {
|
|
19
|
+
branchId: string;
|
|
20
|
+
brand_id: string;
|
|
21
|
+
dateType: "createDate" | "commissionDate";
|
|
22
|
+
startTime: number;
|
|
23
|
+
endTime: number;
|
|
24
|
+
paymentStatusList?: number[];
|
|
25
|
+
reBatchId?: string;
|
|
26
|
+
}): Promise<import("../../utils/http.js").ToolResult>;
|
|
27
|
+
export declare const resultName = "new_house_commission_export_result";
|
|
28
|
+
export declare const resultSchema: {
|
|
29
|
+
description: string;
|
|
30
|
+
inputSchema: z.ZodObject<{
|
|
31
|
+
branchId: z.ZodString;
|
|
32
|
+
brand_id: z.ZodString;
|
|
33
|
+
}, z.core.$strip>;
|
|
34
|
+
};
|
|
35
|
+
export declare function resultHandler(args: {
|
|
36
|
+
branchId: string;
|
|
37
|
+
brand_id: string;
|
|
38
|
+
}): Promise<import("../../utils/http.js").ToolResult>;
|
|
39
|
+
export declare const invitationName = "get_user_invitation_info";
|
|
40
|
+
export declare const invitationSchema: {
|
|
41
|
+
description: string;
|
|
42
|
+
inputSchema: z.ZodObject<{
|
|
43
|
+
code: z.ZodOptional<z.ZodString>;
|
|
44
|
+
}, z.core.$strip>;
|
|
45
|
+
};
|
|
46
|
+
export declare function invitationHandler(args: {
|
|
47
|
+
code?: string;
|
|
48
|
+
}): Promise<import("../../utils/http.js").ToolResult>;
|
|
49
|
+
//# sourceMappingURL=new_house_commission_export.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"new_house_commission_export.d.ts","sourceRoot":"","sources":["../../../src/tools/contract/new_house_commission_export.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AA0D5B,eAAO,MAAM,IAAI,gCAAgC,CAAC;AAElD,eAAO,MAAM,MAAM;;;;;;;;;;;;;;CAmBlB,CAAC;AAEF,wBAAsB,OAAO,CAAC,IAAI,EAAE;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,YAAY,GAAG,gBAAgB,CAAC;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,qDAqJA;AAMD,eAAO,MAAM,UAAU,uCAAuC,CAAC;AAE/D,eAAO,MAAM,YAAY;;;;;;CASxB,CAAC;AAEF,wBAAsB,aAAa,CAAC,IAAI,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,qDA8B/E;AAMD,eAAO,MAAM,cAAc,6BAA6B,CAAC;AAEzD,eAAO,MAAM,gBAAgB;;;;;CAM5B,CAAC;AAEF,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,qDA4C9D"}
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
import * as z from "zod/v4";
|
|
2
|
+
import { buildGatewayHeaders, createErrorResult, createSuccessResult } from "../../utils/http.js";
|
|
3
|
+
import { getGatewayBaseUrl, generateDatedFileName } from "../../utils/env.js";
|
|
4
|
+
import { debug } from "../../utils/debug.js";
|
|
5
|
+
import { pollAsyncExport, downloadToDataDir } from "../../utils/async-export.js";
|
|
6
|
+
// ---------------------------------------------------------------------------
|
|
7
|
+
// 常量
|
|
8
|
+
// ---------------------------------------------------------------------------
|
|
9
|
+
const SUBMIT_TIME_TOLERANCE = 10_000; // 10秒容差
|
|
10
|
+
const FALLBACK_TIME_WINDOW = 30 * 60 * 1000; // 30分钟降级窗口
|
|
11
|
+
// ---------------------------------------------------------------------------
|
|
12
|
+
// 工具函数
|
|
13
|
+
// ---------------------------------------------------------------------------
|
|
14
|
+
/**
|
|
15
|
+
* 生成唯一的 bookName,用于在异步导出列表中精确匹配。
|
|
16
|
+
*/
|
|
17
|
+
function generateUniqueBookName(label) {
|
|
18
|
+
const ts = Date.now();
|
|
19
|
+
const rand = Math.random().toString(36).slice(2, 6);
|
|
20
|
+
return `MCP_${label}_${ts}_${rand}`;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* dateType 字符串映射到数值:createDate → 1, commissionDate → 2
|
|
24
|
+
*/
|
|
25
|
+
function mapDateType(dateType) {
|
|
26
|
+
return dateType === "createDate" ? 1 : 2;
|
|
27
|
+
}
|
|
28
|
+
// ---------------------------------------------------------------------------
|
|
29
|
+
// 工具 1: new_house_commission_export
|
|
30
|
+
// ---------------------------------------------------------------------------
|
|
31
|
+
export const name = "new_house_commission_export";
|
|
32
|
+
export const schema = {
|
|
33
|
+
description: "从 ERP 系统导出新房佣金明细数据,生成 Excel 文件。必须先通过 statement_query 的 get_branches 获取 branchId。使用异步轮询方式等待导出完成。",
|
|
34
|
+
inputSchema: z.object({
|
|
35
|
+
branchId: z.string()
|
|
36
|
+
.describe("城市公司ID,通过 statement_query 的 get_branches 获取"),
|
|
37
|
+
brand_id: z.string()
|
|
38
|
+
.describe("品牌ID,用于标识品牌身份"),
|
|
39
|
+
dateType: z.enum(["createDate", "commissionDate"])
|
|
40
|
+
.describe("时间维度:createDate=创建时间, commissionDate=结佣日期"),
|
|
41
|
+
startTime: z.number()
|
|
42
|
+
.describe("开始时间,毫秒时间戳"),
|
|
43
|
+
endTime: z.number()
|
|
44
|
+
.describe("结束时间,毫秒时间戳"),
|
|
45
|
+
paymentStatusList: z.array(z.number()).optional()
|
|
46
|
+
.describe("付款状态筛选列表,可选"),
|
|
47
|
+
reBatchId: z.string().optional()
|
|
48
|
+
.describe("结佣批次ID,可选"),
|
|
49
|
+
}),
|
|
50
|
+
};
|
|
51
|
+
export async function handler(args) {
|
|
52
|
+
debug("new_house_commission_export args", args);
|
|
53
|
+
const { branchId, brand_id, dateType, startTime, endTime, paymentStatusList, reBatchId } = args;
|
|
54
|
+
// 1. 校验时间范围
|
|
55
|
+
if (startTime >= endTime) {
|
|
56
|
+
return createErrorResult("开始时间不能晚于或等于结束时间");
|
|
57
|
+
}
|
|
58
|
+
// 2. dateType 映射到数值
|
|
59
|
+
const dateTypeNum = mapDateType(dateType);
|
|
60
|
+
// 3. 生成唯一 bookName
|
|
61
|
+
const bookName = generateUniqueBookName("佣金明细");
|
|
62
|
+
debug("bookName", bookName);
|
|
63
|
+
const headers = buildGatewayHeaders();
|
|
64
|
+
const gatewayBaseUrl = getGatewayBaseUrl();
|
|
65
|
+
// 4. 构建请求体
|
|
66
|
+
const exportBody = {
|
|
67
|
+
branchId,
|
|
68
|
+
brand_id,
|
|
69
|
+
dateType: dateTypeNum,
|
|
70
|
+
startTime,
|
|
71
|
+
endTime,
|
|
72
|
+
bookName,
|
|
73
|
+
};
|
|
74
|
+
if (paymentStatusList !== undefined && paymentStatusList.length > 0) {
|
|
75
|
+
exportBody.paymentStatusList = paymentStatusList;
|
|
76
|
+
}
|
|
77
|
+
if (reBatchId !== undefined && reBatchId !== "") {
|
|
78
|
+
exportBody.reBatchId = reBatchId;
|
|
79
|
+
}
|
|
80
|
+
debug("new_house_commission_export body", exportBody);
|
|
81
|
+
// 5. 提交导出任务(记录提交时间戳,用于后续匹配)
|
|
82
|
+
const submitTimestamp = Date.now();
|
|
83
|
+
const submitResp = await fetch(`${gatewayBaseUrl}/new_house_commission_export`, {
|
|
84
|
+
method: "POST",
|
|
85
|
+
headers,
|
|
86
|
+
body: JSON.stringify(exportBody),
|
|
87
|
+
});
|
|
88
|
+
if (!submitResp.ok) {
|
|
89
|
+
return createErrorResult(`提交佣金明细导出任务失败: ${submitResp.status} ${submitResp.statusText}`);
|
|
90
|
+
}
|
|
91
|
+
const submitResult = await submitResp.json();
|
|
92
|
+
debug("new_house_commission_export submit result", submitResult);
|
|
93
|
+
// 6. 检查提交结果
|
|
94
|
+
if (!submitResult.succeed) {
|
|
95
|
+
return createErrorResult(`提交佣金明细导出任务失败: ${submitResult.msg}`);
|
|
96
|
+
}
|
|
97
|
+
console.error(`[new_house_commission_export] 任务已提交(bookName=${bookName}),开始轮询...`);
|
|
98
|
+
// 7. 记录提交前的任务列表,用于后续匹配新增任务
|
|
99
|
+
let preSubmitTaskIds = new Set();
|
|
100
|
+
try {
|
|
101
|
+
const preListResp = await fetch(`${gatewayBaseUrl}/new_house_commission_export_result`, { method: "POST", headers, body: JSON.stringify({ branchId, brand_id }) });
|
|
102
|
+
if (preListResp.ok) {
|
|
103
|
+
const preListJson = await preListResp.json();
|
|
104
|
+
if (preListJson.succeed && preListJson.data?.list) {
|
|
105
|
+
preSubmitTaskIds = new Set(preListJson.data.list.map((item) => item.id));
|
|
106
|
+
debug("new_house_commission_export pre-submit task ids", [...preSubmitTaskIds]);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
// 忽略:提交前快照失败不影响主流程
|
|
112
|
+
}
|
|
113
|
+
// 8. 轮询等待完成
|
|
114
|
+
try {
|
|
115
|
+
const downloadUrl = await pollAsyncExport({
|
|
116
|
+
logTag: "new_house_commission_export",
|
|
117
|
+
checkStatus: async () => {
|
|
118
|
+
const statusResp = await fetch(`${gatewayBaseUrl}/new_house_commission_export_result`, {
|
|
119
|
+
method: "POST",
|
|
120
|
+
headers,
|
|
121
|
+
body: JSON.stringify({ branchId, brand_id }),
|
|
122
|
+
});
|
|
123
|
+
if (!statusResp.ok) {
|
|
124
|
+
throw new Error(`查询佣金明细导出状态失败: ${statusResp.status}`);
|
|
125
|
+
}
|
|
126
|
+
const json = await statusResp.json();
|
|
127
|
+
if (!json.succeed) {
|
|
128
|
+
throw new Error(`查询佣金明细导出状态接口返回失败: ${json.msg}`);
|
|
129
|
+
}
|
|
130
|
+
const list = json.data?.list;
|
|
131
|
+
if (!list || list.length === 0) {
|
|
132
|
+
return { state: "pending" };
|
|
133
|
+
}
|
|
134
|
+
// 优先匹配:查找提交后新出现的任务
|
|
135
|
+
const newTask = list.find((item) => !preSubmitTaskIds.has(item.id));
|
|
136
|
+
const targetTask = newTask
|
|
137
|
+
?? list.find((item) => {
|
|
138
|
+
// 降级匹配:通过提交时间戳匹配(±10秒容差)
|
|
139
|
+
const diff = Math.abs(item.startTm - submitTimestamp);
|
|
140
|
+
return diff <= SUBMIT_TIME_TOLERANCE;
|
|
141
|
+
})
|
|
142
|
+
?? list.find((item) => {
|
|
143
|
+
// 最终降级:取最新的一条已完成任务(startTm 最晚且 status=1)
|
|
144
|
+
return item.status === 1 && item.startTm >= submitTimestamp - FALLBACK_TIME_WINDOW;
|
|
145
|
+
});
|
|
146
|
+
if (!targetTask) {
|
|
147
|
+
return { state: "pending" };
|
|
148
|
+
}
|
|
149
|
+
if (targetTask.status === 1) {
|
|
150
|
+
return { state: "success", downloadUrl: targetTask.fileUrl };
|
|
151
|
+
}
|
|
152
|
+
if (targetTask.status === 0) {
|
|
153
|
+
return { state: "failed", reason: `ERP异步导出失败: ${bookName}` };
|
|
154
|
+
}
|
|
155
|
+
return { state: "pending" };
|
|
156
|
+
},
|
|
157
|
+
});
|
|
158
|
+
// 8. 下载文件到本地
|
|
159
|
+
const localFileName = generateDatedFileName("佣金明细", "xlsx", false);
|
|
160
|
+
const filePath = await downloadToDataDir(downloadUrl, localFileName);
|
|
161
|
+
return createSuccessResult(`成功导出新房佣金明细!\n文件路径: ${filePath}`);
|
|
162
|
+
}
|
|
163
|
+
catch (error) {
|
|
164
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
165
|
+
return createErrorResult(`导出过程中发生错误: ${errorMessage}`);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
// ---------------------------------------------------------------------------
|
|
169
|
+
// 工具 2: new_house_commission_export_result
|
|
170
|
+
// ---------------------------------------------------------------------------
|
|
171
|
+
export const resultName = "new_house_commission_export_result";
|
|
172
|
+
export const resultSchema = {
|
|
173
|
+
description: "查询新房佣金明细导出任务的状态列表。用于手动查询或降级场景,直接返回 Gateway 的原始导出状态数据。",
|
|
174
|
+
inputSchema: z.object({
|
|
175
|
+
branchId: z.string()
|
|
176
|
+
.describe("城市公司ID,通过 statement_query 的 get_branches 获取"),
|
|
177
|
+
brand_id: z.string()
|
|
178
|
+
.describe("品牌ID,用于标识品牌身份"),
|
|
179
|
+
}),
|
|
180
|
+
};
|
|
181
|
+
export async function resultHandler(args) {
|
|
182
|
+
debug("new_house_commission_export_result args", args);
|
|
183
|
+
const { branchId, brand_id } = args;
|
|
184
|
+
const headers = buildGatewayHeaders();
|
|
185
|
+
const gatewayBaseUrl = getGatewayBaseUrl();
|
|
186
|
+
const resp = await fetch(`${gatewayBaseUrl}/new_house_commission_export_result`, {
|
|
187
|
+
method: "POST",
|
|
188
|
+
headers,
|
|
189
|
+
body: JSON.stringify({ branchId, brand_id }),
|
|
190
|
+
});
|
|
191
|
+
if (!resp.ok) {
|
|
192
|
+
return createErrorResult(`查询佣金明细导出状态失败: ${resp.status} ${resp.statusText}`);
|
|
193
|
+
}
|
|
194
|
+
const data = await resp.json();
|
|
195
|
+
debug("new_house_commission_export_result response", data);
|
|
196
|
+
if (!data.succeed) {
|
|
197
|
+
return createErrorResult(`查询佣金明细导出状态失败: ${data.msg}`);
|
|
198
|
+
}
|
|
199
|
+
return {
|
|
200
|
+
content: [{
|
|
201
|
+
type: "text",
|
|
202
|
+
text: JSON.stringify(data.data, null, 2),
|
|
203
|
+
}],
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
// ---------------------------------------------------------------------------
|
|
207
|
+
// 工具 3: get_user_invitation_info
|
|
208
|
+
// ---------------------------------------------------------------------------
|
|
209
|
+
export const invitationName = "get_user_invitation_info";
|
|
210
|
+
export const invitationSchema = {
|
|
211
|
+
description: "获取当前用户的品牌与分公司权限列表。在导出新房佣金明细前,可用此工具检查用户有权访问的品牌(brand_id)和分公司(branchId),从返回结果中获取正确的brand_id和branchId用于后续导出。",
|
|
212
|
+
inputSchema: z.object({
|
|
213
|
+
code: z.string().optional().describe("客户端标识,默认值为'pc'"),
|
|
214
|
+
}),
|
|
215
|
+
};
|
|
216
|
+
export async function invitationHandler(args) {
|
|
217
|
+
debug("get_user_invitation_info args", args);
|
|
218
|
+
const { code = "pc" } = args;
|
|
219
|
+
const headers = buildGatewayHeaders();
|
|
220
|
+
const gatewayBaseUrl = getGatewayBaseUrl();
|
|
221
|
+
try {
|
|
222
|
+
const resp = await fetch(`${gatewayBaseUrl}/user_invitation_info`, {
|
|
223
|
+
method: "POST",
|
|
224
|
+
headers,
|
|
225
|
+
body: JSON.stringify({ code }),
|
|
226
|
+
});
|
|
227
|
+
if (!resp.ok) {
|
|
228
|
+
return createErrorResult(`查询用户权限信息失败: ${resp.status} ${resp.statusText}`);
|
|
229
|
+
}
|
|
230
|
+
const data = (await resp.json());
|
|
231
|
+
debug("get_user_invitation_info response", data);
|
|
232
|
+
if (!data.succeed) {
|
|
233
|
+
return createErrorResult(`查询用户权限信息失败: ${data.msg}`);
|
|
234
|
+
}
|
|
235
|
+
return {
|
|
236
|
+
content: [
|
|
237
|
+
{
|
|
238
|
+
type: "text",
|
|
239
|
+
text: JSON.stringify(data.data, null, 2),
|
|
240
|
+
},
|
|
241
|
+
],
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
catch (error) {
|
|
245
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
246
|
+
return createErrorResult(`获取用户权限信息时发生错误: ${errorMessage}`);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
//# sourceMappingURL=new_house_commission_export.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"new_house_commission_export.js","sourceRoot":"","sources":["../../../src/tools/contract/new_house_commission_export.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import * as z from "zod/v4";
|
|
2
|
+
export declare const name = "new_house_developer_repayment_export";
|
|
3
|
+
export declare const schema: {
|
|
4
|
+
description: string;
|
|
5
|
+
inputSchema: z.ZodObject<{
|
|
6
|
+
branchId: z.ZodString;
|
|
7
|
+
brand_id: z.ZodString;
|
|
8
|
+
dateType: z.ZodOptional<z.ZodNumber>;
|
|
9
|
+
statusList: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
|
|
10
|
+
batchStatusList: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
|
|
11
|
+
roleType: z.ZodOptional<z.ZodNumber>;
|
|
12
|
+
signPriceStart: z.ZodOptional<z.ZodNumber>;
|
|
13
|
+
signPriceEnd: z.ZodOptional<z.ZodNumber>;
|
|
14
|
+
}, z.core.$strip>;
|
|
15
|
+
};
|
|
16
|
+
export declare function handler(args: {
|
|
17
|
+
branchId: string;
|
|
18
|
+
brand_id: string;
|
|
19
|
+
dateType?: number;
|
|
20
|
+
statusList?: number[];
|
|
21
|
+
batchStatusList?: number[];
|
|
22
|
+
roleType?: number;
|
|
23
|
+
signPriceStart?: number;
|
|
24
|
+
signPriceEnd?: number;
|
|
25
|
+
}): Promise<import("../../utils/http.js").ToolResult>;
|
|
26
|
+
export declare const resultName = "new_house_developer_repayment_export_result";
|
|
27
|
+
export declare const resultSchema: {
|
|
28
|
+
description: string;
|
|
29
|
+
inputSchema: z.ZodObject<{
|
|
30
|
+
branchId: z.ZodString;
|
|
31
|
+
brand_id: z.ZodString;
|
|
32
|
+
}, z.core.$strip>;
|
|
33
|
+
};
|
|
34
|
+
export declare function resultHandler(args: {
|
|
35
|
+
branchId: string;
|
|
36
|
+
brand_id: string;
|
|
37
|
+
}): Promise<import("../../utils/http.js").ToolResult>;
|
|
38
|
+
//# sourceMappingURL=new_house_developer_repayment_export.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"new_house_developer_repayment_export.d.ts","sourceRoot":"","sources":["../../../src/tools/contract/new_house_developer_repayment_export.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAsC5B,eAAO,MAAM,IAAI,yCAAyC,CAAC;AAE3D,eAAO,MAAM,MAAM;;;;;;;;;;;;CAqBlB,CAAC;AAEF,wBAAsB,OAAO,CAAC,IAAI,EAAE;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB,qDA4IA;AAMD,eAAO,MAAM,UAAU,gDAAgD,CAAC;AAExE,eAAO,MAAM,YAAY;;;;;;CASxB,CAAC;AAEF,wBAAsB,aAAa,CAAC,IAAI,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,qDA8B/E"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import * as z from "zod/v4";
|
|
2
|
+
import { buildGatewayHeaders, createErrorResult, createSuccessResult } from "../../utils/http.js";
|
|
3
|
+
import { getGatewayBaseUrl, generateDatedFileName } from "../../utils/env.js";
|
|
4
|
+
import { debug } from "../../utils/debug.js";
|
|
5
|
+
import { pollAsyncExport, downloadToDataDir } from "../../utils/async-export.js";
|
|
6
|
+
// ---------------------------------------------------------------------------
|
|
7
|
+
// 常量
|
|
8
|
+
// ---------------------------------------------------------------------------
|
|
9
|
+
const SUBMIT_TIME_TOLERANCE = 10_000; // 10秒容差
|
|
10
|
+
const FALLBACK_TIME_WINDOW = 30 * 60 * 1000; // 30分钟降级窗口
|
|
11
|
+
// ---------------------------------------------------------------------------
|
|
12
|
+
// 工具 1: new_house_developer_repayment_export
|
|
13
|
+
// ---------------------------------------------------------------------------
|
|
14
|
+
export const name = "new_house_developer_repayment_export";
|
|
15
|
+
export const schema = {
|
|
16
|
+
description: "导出新房开发商回款明细。支持按城市公司、回款状态、批次状态、签约价格范围筛选。使用异步轮询方式等待导出完成。",
|
|
17
|
+
inputSchema: z.object({
|
|
18
|
+
branchId: z.string()
|
|
19
|
+
.describe("城市公司ID,通过 get_user_invitation_info 获取"),
|
|
20
|
+
brand_id: z.string()
|
|
21
|
+
.describe("品牌ID,通过 get_user_invitation_info 获取"),
|
|
22
|
+
dateType: z.number().optional()
|
|
23
|
+
.describe("时间维度,默认8"),
|
|
24
|
+
statusList: z.array(z.number()).optional()
|
|
25
|
+
.describe("回款状态筛选列表,可选"),
|
|
26
|
+
batchStatusList: z.array(z.number()).optional()
|
|
27
|
+
.describe("批次状态筛选列表,可选"),
|
|
28
|
+
roleType: z.number().optional()
|
|
29
|
+
.describe("角色类型,默认100"),
|
|
30
|
+
signPriceStart: z.number().optional()
|
|
31
|
+
.describe("签约价格下限,可选"),
|
|
32
|
+
signPriceEnd: z.number().optional()
|
|
33
|
+
.describe("签约价格上限,可选"),
|
|
34
|
+
}),
|
|
35
|
+
};
|
|
36
|
+
export async function handler(args) {
|
|
37
|
+
debug("new_house_developer_repayment_export args", args);
|
|
38
|
+
const { branchId, brand_id, dateType, statusList, batchStatusList, roleType, signPriceStart, signPriceEnd, } = args;
|
|
39
|
+
const headers = buildGatewayHeaders();
|
|
40
|
+
const gatewayBaseUrl = getGatewayBaseUrl();
|
|
41
|
+
// 1. 构建请求体
|
|
42
|
+
const exportBody = {
|
|
43
|
+
branchId,
|
|
44
|
+
brand_id,
|
|
45
|
+
dateType: dateType || 8,
|
|
46
|
+
statusList: statusList || [],
|
|
47
|
+
batchStatusList: batchStatusList || [],
|
|
48
|
+
roleType: roleType || 100,
|
|
49
|
+
signPriceStart: signPriceStart || null,
|
|
50
|
+
signPriceEnd: signPriceEnd || null,
|
|
51
|
+
};
|
|
52
|
+
debug("new_house_developer_repayment_export body", exportBody);
|
|
53
|
+
// 2. 提交导出任务(记录提交时间戳,用于后续匹配)
|
|
54
|
+
const submitTimestamp = Date.now();
|
|
55
|
+
const submitResp = await fetch(`${gatewayBaseUrl}/new_house_developer_repayment_export`, {
|
|
56
|
+
method: "POST",
|
|
57
|
+
headers,
|
|
58
|
+
body: JSON.stringify(exportBody),
|
|
59
|
+
});
|
|
60
|
+
if (!submitResp.ok) {
|
|
61
|
+
return createErrorResult(`提交开发商回款明细导出任务失败: ${submitResp.status} ${submitResp.statusText}`);
|
|
62
|
+
}
|
|
63
|
+
const submitResult = await submitResp.json();
|
|
64
|
+
debug("new_house_developer_repayment_export submit result", submitResult);
|
|
65
|
+
// 3. 检查提交结果
|
|
66
|
+
if (!submitResult.succeed) {
|
|
67
|
+
return createErrorResult(`提交开发商回款明细导出任务失败: ${submitResult.msg}`);
|
|
68
|
+
}
|
|
69
|
+
console.error("[new_house_developer_repayment_export] 任务已提交,开始轮询...");
|
|
70
|
+
// 4. 记录提交前的任务列表,用于后续匹配新增任务
|
|
71
|
+
let preSubmitTaskIds = new Set();
|
|
72
|
+
try {
|
|
73
|
+
const preListResp = await fetch(`${gatewayBaseUrl}/new_house_developer_repayment_export_result`, { method: "POST", headers, body: JSON.stringify({ branchId, brand_id }) });
|
|
74
|
+
if (preListResp.ok) {
|
|
75
|
+
const preListJson = await preListResp.json();
|
|
76
|
+
if (preListJson.succeed && preListJson.data?.list) {
|
|
77
|
+
preSubmitTaskIds = new Set(preListJson.data.list.map((item) => item.id));
|
|
78
|
+
debug("new_house_developer_repayment_export pre-submit task ids", [...preSubmitTaskIds]);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
// 忽略:提交前快照失败不影响主流程
|
|
84
|
+
}
|
|
85
|
+
// 5. 轮询等待完成
|
|
86
|
+
try {
|
|
87
|
+
const downloadUrl = await pollAsyncExport({
|
|
88
|
+
logTag: "new_house_developer_repayment_export",
|
|
89
|
+
checkStatus: async () => {
|
|
90
|
+
const statusResp = await fetch(`${gatewayBaseUrl}/new_house_developer_repayment_export_result`, {
|
|
91
|
+
method: "POST",
|
|
92
|
+
headers,
|
|
93
|
+
body: JSON.stringify({ branchId, brand_id }),
|
|
94
|
+
});
|
|
95
|
+
if (!statusResp.ok) {
|
|
96
|
+
throw new Error(`查询开发商回款明细导出状态失败: ${statusResp.status}`);
|
|
97
|
+
}
|
|
98
|
+
const json = await statusResp.json();
|
|
99
|
+
if (!json.succeed) {
|
|
100
|
+
throw new Error(`查询开发商回款明细导出状态接口返回失败: ${json.msg}`);
|
|
101
|
+
}
|
|
102
|
+
const list = json.data?.list;
|
|
103
|
+
if (!list || list.length === 0) {
|
|
104
|
+
return { state: "pending" };
|
|
105
|
+
}
|
|
106
|
+
// 优先匹配:查找提交后新出现的任务
|
|
107
|
+
const newTask = list.find((item) => !preSubmitTaskIds.has(item.id));
|
|
108
|
+
const targetTask = newTask
|
|
109
|
+
?? list.find((item) => {
|
|
110
|
+
// 降级匹配:通过提交时间戳匹配(±10秒容差)
|
|
111
|
+
const diff = Math.abs(item.startTm - submitTimestamp);
|
|
112
|
+
return diff <= SUBMIT_TIME_TOLERANCE;
|
|
113
|
+
})
|
|
114
|
+
?? list.find((item) => {
|
|
115
|
+
// 最终降级:取最新的一条已完成任务(startTm 最晚且 status=1)
|
|
116
|
+
return item.status === 1 && item.startTm >= submitTimestamp - FALLBACK_TIME_WINDOW;
|
|
117
|
+
});
|
|
118
|
+
if (!targetTask) {
|
|
119
|
+
return { state: "pending" };
|
|
120
|
+
}
|
|
121
|
+
if (targetTask.status === 1) {
|
|
122
|
+
return { state: "success", downloadUrl: targetTask.fileUrl };
|
|
123
|
+
}
|
|
124
|
+
if (targetTask.status === 0) {
|
|
125
|
+
return { state: "failed", reason: "ERP异步导出失败" };
|
|
126
|
+
}
|
|
127
|
+
return { state: "pending" };
|
|
128
|
+
},
|
|
129
|
+
});
|
|
130
|
+
// 5. 下载文件到本地
|
|
131
|
+
const localFileName = generateDatedFileName("开发商回款明细", "xlsx", false);
|
|
132
|
+
const filePath = await downloadToDataDir(downloadUrl, localFileName);
|
|
133
|
+
return createSuccessResult(`成功导出新房开发商回款明细!\n文件路径: ${filePath}`);
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
137
|
+
return createErrorResult(`导出过程中发生错误: ${errorMessage}`);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
// ---------------------------------------------------------------------------
|
|
141
|
+
// 工具 2: new_house_developer_repayment_export_result
|
|
142
|
+
// ---------------------------------------------------------------------------
|
|
143
|
+
export const resultName = "new_house_developer_repayment_export_result";
|
|
144
|
+
export const resultSchema = {
|
|
145
|
+
description: "查询开发商回款明细导出任务状态(降级场景使用),直接返回 Gateway 的原始导出状态数据。",
|
|
146
|
+
inputSchema: z.object({
|
|
147
|
+
branchId: z.string()
|
|
148
|
+
.describe("城市公司ID"),
|
|
149
|
+
brand_id: z.string()
|
|
150
|
+
.describe("品牌ID"),
|
|
151
|
+
}),
|
|
152
|
+
};
|
|
153
|
+
export async function resultHandler(args) {
|
|
154
|
+
debug("new_house_developer_repayment_export_result args", args);
|
|
155
|
+
const { branchId, brand_id } = args;
|
|
156
|
+
const headers = buildGatewayHeaders();
|
|
157
|
+
const gatewayBaseUrl = getGatewayBaseUrl();
|
|
158
|
+
const resp = await fetch(`${gatewayBaseUrl}/new_house_developer_repayment_export_result`, {
|
|
159
|
+
method: "POST",
|
|
160
|
+
headers,
|
|
161
|
+
body: JSON.stringify({ branchId, brand_id }),
|
|
162
|
+
});
|
|
163
|
+
if (!resp.ok) {
|
|
164
|
+
return createErrorResult(`查询开发商回款明细导出状态失败: ${resp.status} ${resp.statusText}`);
|
|
165
|
+
}
|
|
166
|
+
const data = await resp.json();
|
|
167
|
+
debug("new_house_developer_repayment_export_result response", data);
|
|
168
|
+
if (!data.succeed) {
|
|
169
|
+
return createErrorResult(`查询开发商回款明细导出状态失败: ${data.msg}`);
|
|
170
|
+
}
|
|
171
|
+
return {
|
|
172
|
+
content: [{
|
|
173
|
+
type: "text",
|
|
174
|
+
text: JSON.stringify(data.data, null, 2),
|
|
175
|
+
}],
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=new_house_developer_repayment_export.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"new_house_developer_repayment_export.js","sourceRoot":"","sources":["../../../src/tools/contract/new_house_developer_repayment_export.ts"],"names":[],"mappings":"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"}
|