@yjzf/mcp-server-yjzf 0.1.8 → 0.2.0

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 CHANGED
@@ -6,6 +6,8 @@ import * as overviewByCTool from "./tools/overview_by_c.js";
6
6
  import * as countAllStatementTool from "./tools/count_all_statement.js";
7
7
  import * as getCurrentTimeTool from "./tools/get_current_time.js";
8
8
  import * as dateToTimestampTool from "./tools/date_to_timestamp.js";
9
+ import * as investmentContractExportTool from "./tools/investment_contract.js";
10
+ import * as newHouseContractExportTool from "./tools/new_house_contract_export.js";
9
11
  // ---------------------------------------------------------------------------
10
12
  // MCP Server
11
13
  // ---------------------------------------------------------------------------
@@ -18,6 +20,8 @@ server.registerTool(overviewByCTool.name, overviewByCTool.schema, overviewByCToo
18
20
  server.registerTool(countAllStatementTool.name, countAllStatementTool.schema, countAllStatementTool.handler);
19
21
  server.registerTool(getCurrentTimeTool.name, getCurrentTimeTool.schema, getCurrentTimeTool.handler);
20
22
  server.registerTool(dateToTimestampTool.name, dateToTimestampTool.schema, dateToTimestampTool.handler);
23
+ server.registerTool(investmentContractExportTool.name, investmentContractExportTool.schema, investmentContractExportTool.handler);
24
+ server.registerTool(newHouseContractExportTool.name, newHouseContractExportTool.schema, newHouseContractExportTool.handler);
21
25
  // ---------------------------------------------------------------------------
22
26
  // Start
23
27
  // ---------------------------------------------------------------------------
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,KAAK,cAAc,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,eAAe,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,qBAAqB,MAAM,gCAAgC,CAAC;AACxE,OAAO,KAAK,kBAAkB,MAAM,6BAA6B,CAAC;AAClE,OAAO,KAAK,mBAAmB,MAAM,8BAA8B,CAAC;AAEpE,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IAC3B,IAAI,EAAE,iBAAiB;IACvB,OAAO,EAAE,OAAO;CACjB,CAAC,CAAC;AAEH,MAAM,CAAC,YAAY,CACjB,cAAc,CAAC,IAAI,EACnB,cAAc,CAAC,MAAM,EACrB,cAAc,CAAC,OAAO,CACvB,CAAC;AAEF,MAAM,CAAC,YAAY,CACjB,eAAe,CAAC,IAAI,EACpB,eAAe,CAAC,MAAM,EACtB,eAAe,CAAC,OAAO,CACxB,CAAC;AAEF,MAAM,CAAC,YAAY,CACjB,qBAAqB,CAAC,IAAI,EAC1B,qBAAqB,CAAC,MAAM,EAC5B,qBAAqB,CAAC,OAAO,CAC9B,CAAC;AAEF,MAAM,CAAC,YAAY,CACjB,kBAAkB,CAAC,IAAI,EACvB,kBAAkB,CAAC,MAAM,EACzB,kBAAkB,CAAC,OAAO,CAC3B,CAAC;AAEF,MAAM,CAAC,YAAY,CACjB,mBAAmB,CAAC,IAAI,EACxB,mBAAmB,CAAC,MAAM,EAC1B,mBAAmB,CAAC,OAAO,CAC5B,CAAC;AAEF,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAE9E,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,KAAK,cAAc,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,eAAe,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,qBAAqB,MAAM,gCAAgC,CAAC;AACxE,OAAO,KAAK,kBAAkB,MAAM,6BAA6B,CAAC;AAClE,OAAO,KAAK,mBAAmB,MAAM,8BAA8B,CAAC;AACpE,OAAO,KAAK,4BAA4B,MAAM,gCAAgC,CAAC;AAC/E,OAAO,KAAK,0BAA0B,MAAM,sCAAsC,CAAC;AAEnF,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IAC3B,IAAI,EAAE,iBAAiB;IACvB,OAAO,EAAE,OAAO;CACjB,CAAC,CAAC;AAEH,MAAM,CAAC,YAAY,CACjB,cAAc,CAAC,IAAI,EACnB,cAAc,CAAC,MAAM,EACrB,cAAc,CAAC,OAAO,CACvB,CAAC;AAEF,MAAM,CAAC,YAAY,CACjB,eAAe,CAAC,IAAI,EACpB,eAAe,CAAC,MAAM,EACtB,eAAe,CAAC,OAAO,CACxB,CAAC;AAEF,MAAM,CAAC,YAAY,CACjB,qBAAqB,CAAC,IAAI,EAC1B,qBAAqB,CAAC,MAAM,EAC5B,qBAAqB,CAAC,OAAO,CAC9B,CAAC;AAEF,MAAM,CAAC,YAAY,CACjB,kBAAkB,CAAC,IAAI,EACvB,kBAAkB,CAAC,MAAM,EACzB,kBAAkB,CAAC,OAAO,CAC3B,CAAC;AAEF,MAAM,CAAC,YAAY,CACjB,mBAAmB,CAAC,IAAI,EACxB,mBAAmB,CAAC,MAAM,EAC1B,mBAAmB,CAAC,OAAO,CAC5B,CAAC;AAEF,MAAM,CAAC,YAAY,CACjB,4BAA4B,CAAC,IAAI,EACjC,4BAA4B,CAAC,MAAM,EACnC,4BAA4B,CAAC,OAAO,CACrC,CAAC;AAEF,MAAM,CAAC,YAAY,CACjB,0BAA0B,CAAC,IAAI,EAC/B,0BAA0B,CAAC,MAAM,EACjC,0BAA0B,CAAC,OAAO,CACnC,CAAC;AAEF,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAE9E,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -2,9 +2,15 @@ import * as z from "zod/v4";
2
2
  export declare const name = "count_all_statement";
3
3
  export declare const schema: {
4
4
  description: string;
5
- inputSchema: z.ZodObject<{}, z.core.$strip>;
5
+ inputSchema: z.ZodObject<{
6
+ startTime: z.ZodOptional<z.ZodNumber>;
7
+ endTime: z.ZodOptional<z.ZodNumber>;
8
+ }, z.core.$strip>;
6
9
  };
7
- export declare function handler(): Promise<{
10
+ export declare function handler(args: {
11
+ startTime?: number;
12
+ endTime?: number;
13
+ }): Promise<{
8
14
  content: {
9
15
  type: "text";
10
16
  text: string;
@@ -1 +1 @@
1
- {"version":3,"file":"count_all_statement.d.ts","sourceRoot":"","sources":["../../src/tools/count_all_statement.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AA6I5B,eAAO,MAAM,IAAI,wBAAwB,CAAC;AAE1C,eAAO,MAAM,MAAM;;;CAGlB,CAAC;AAEF,wBAAsB,OAAO;;;;;;;;;;;;GAiI5B"}
1
+ {"version":3,"file":"count_all_statement.d.ts","sourceRoot":"","sources":["../../src/tools/count_all_statement.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AA6I5B,eAAO,MAAM,IAAI,wBAAwB,CAAC;AAE1C,eAAO,MAAM,MAAM;;;;;;CAMlB,CAAC;AAcF,wBAAsB,OAAO,CAAC,IAAI,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;;;GAmJ3E"}
@@ -61,11 +61,40 @@ function buildSheetData(list, fixedColumns) {
61
61
  }
62
62
  export const name = "count_all_statement";
63
63
  export const schema = {
64
- description: "获取总部数据指标报表 生成 Excel 文件",
65
- inputSchema: z.object({}),
64
+ description: "获取总部数据指标报表 生成 Excel 文件。不传时间时默认查询当月第一天到昨天,最大时间间隔 12 个月。",
65
+ inputSchema: z.object({
66
+ startTime: z.number().optional().describe("开始时间,毫秒时间戳,可选,不传则默认当月第一天"),
67
+ endTime: z.number().optional().describe("结束时间,毫秒时间戳,可选,不传则默认昨天,结束时间不得超过昨天"),
68
+ }),
66
69
  };
67
- export async function handler() {
70
+ const MAX_INTERVAL_MS = 366 * 24 * 3600 * 1000; // 12 个月(约 366 天)
71
+ function getDefaultTimeRange() {
72
+ const now = new Date();
73
+ const monthStart = new Date(now.getFullYear(), now.getMonth(), 1);
74
+ const yesterday = new Date(now.getFullYear(), now.getMonth(), now.getDate() - 1, 23, 59, 59, 999);
75
+ return {
76
+ startTime: monthStart.getTime(),
77
+ endTime: yesterday.getTime(),
78
+ };
79
+ }
80
+ export async function handler(args) {
68
81
  const apiKey = getApiKey();
82
+ const defaults = getDefaultTimeRange();
83
+ const startTime = args.startTime ?? defaults.startTime;
84
+ const endTime = args.endTime ?? defaults.endTime;
85
+ // 校验时间间隔不超过 12 个月
86
+ if (endTime - startTime > MAX_INTERVAL_MS) {
87
+ return {
88
+ content: [
89
+ {
90
+ type: "text",
91
+ text: `时间间隔超过 12 个月限制,请缩小查询范围`,
92
+ },
93
+ ],
94
+ isError: true,
95
+ };
96
+ }
97
+ debug("date range", { startTime, endTime });
69
98
  // Build request headers
70
99
  const headers = {
71
100
  Accept: "application/json",
@@ -107,7 +136,7 @@ export async function handler() {
107
136
  const cities2 = await cities2Response.json();
108
137
  debug("count_all_step2.json (cities2)", cities2);
109
138
  // Step 2: POST to count_all_statement
110
- const payload = { cities1, cities2 };
139
+ const payload = { cities1, cities2, startTime, endTime };
111
140
  const statementResponse = await fetch("https://mcp.yjzf.com/count_all_statement", {
112
141
  method: "POST",
113
142
  headers,
@@ -1 +1 @@
1
- {"version":3,"file":"count_all_statement.js","sourceRoot":"","sources":["../../src/tools/count_all_statement.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"count_all_statement.js","sourceRoot":"","sources":["../../src/tools/count_all_statement.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import * as z from "zod/v4";
2
+ export declare const name = "investment_contract";
3
+ export declare const schema: {
4
+ description: string;
5
+ inputSchema: z.ZodObject<{}, z.core.$strip>;
6
+ };
7
+ export declare function handler(): Promise<import("../utils/http.js").ToolResult>;
8
+ //# sourceMappingURL=investment_contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"investment_contract.d.ts","sourceRoot":"","sources":["../../src/tools/investment_contract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAqF5B,eAAO,MAAM,IAAI,wBAAwB,CAAC;AAE1C,eAAO,MAAM,MAAM;;;CAGlB,CAAC;AAEF,wBAAsB,OAAO,mDAyE5B"}
@@ -0,0 +1,108 @@
1
+ import * as z from "zod/v4";
2
+ import { buildGatewayHeaders, createErrorResult, createSuccessResult } from "../utils/http.js";
3
+ import { saveWorkbook, formatTimestamp } from "../utils/excel.js";
4
+ import { generateDatedFileName } from "../utils/env.js";
5
+ import { debug } from "../utils/debug.js";
6
+ // ---------------------------------------------------------------------------
7
+ // 枚举映射
8
+ // ---------------------------------------------------------------------------
9
+ const LOCKING_STATE_MAP = {
10
+ 1: "是",
11
+ 0: "否",
12
+ };
13
+ const CONTRACT_STATE_MAP = {
14
+ 1: "审核通过",
15
+ 2: "审核否决",
16
+ 3: "待审核",
17
+ 4: "草稿",
18
+ 5: "已撤回",
19
+ 6: "已回收",
20
+ 8: "已签署",
21
+ };
22
+ const SIGN_METHOD_MAP = {
23
+ 1: "线上",
24
+ 2: "线下",
25
+ };
26
+ const ORDER_STATUS_MAP = {
27
+ 0: "已关闭",
28
+ 1: "跟进中",
29
+ 2: "已完成",
30
+ };
31
+ const COLUMNS = [
32
+ ["城市", "cityName"],
33
+ ["锁定状态", "lockingState", (v) => LOCKING_STATE_MAP[Number(v)] ?? ""],
34
+ ["合同名称", "title"],
35
+ ["合同编号", "econtractNo"],
36
+ ["合同状态", "state", (v) => CONTRACT_STATE_MAP[Number(v)] ?? String(v)],
37
+ ["甲方", "companyA"],
38
+ ["乙方", "companyB"],
39
+ ["签署方式", "isOutside", (v) => SIGN_METHOD_MAP[Number(v)] ?? String(v)],
40
+ ["剩余打印次数", "plusPrintNumber"],
41
+ ["关联订单编号", "linkOrderNo"],
42
+ ["对应订单状态", "orderStatus", (v) => ORDER_STATUS_MAP[Number(v)] ?? String(v)],
43
+ ["添加人", "createdBy"],
44
+ ["添加时间", "createTm", (v) => formatTimestamp(Number(v))],
45
+ ];
46
+ // ---------------------------------------------------------------------------
47
+ // 工具导出
48
+ // ---------------------------------------------------------------------------
49
+ export const name = "investment_contract";
50
+ export const schema = {
51
+ description: "从 ERP 系统查询直营城市招商加盟合同列表数据,生成 Excel 文件",
52
+ inputSchema: z.object({}),
53
+ };
54
+ export async function handler() {
55
+ const headers = buildGatewayHeaders();
56
+ try {
57
+ // Step 1: 获取城市列表
58
+ const citiesResponse = await fetch("https://mcp.yjzf.com/zy_cities.json", {
59
+ method: "GET",
60
+ headers,
61
+ });
62
+ if (!citiesResponse.ok) {
63
+ return createErrorResult(`获取 zy_cities 数据失败: ${citiesResponse.status} ${citiesResponse.statusText}`);
64
+ }
65
+ const cities = await citiesResponse.json();
66
+ debug("zy_cities.json", cities);
67
+ // Step 2: 调用 Gateway 获取合同数据
68
+ // 生产环境: https://mcp.yjzf.com/investment_contract
69
+ // 本地调试:http://localhost:3000/investment_contract
70
+ const response = await fetch("https://mcp.yjzf.com/investment_contract", {
71
+ method: "POST",
72
+ headers,
73
+ body: JSON.stringify({ cities }),
74
+ });
75
+ if (!response.ok) {
76
+ return createErrorResult(`请求 investment_contract 失败: ${response.status} ${response.statusText}`);
77
+ }
78
+ const apiResponse = await response.json();
79
+ debug("investment_contract response", apiResponse);
80
+ if (!apiResponse.succeed) {
81
+ return createErrorResult(`网关返回错误: ${apiResponse.msg}`);
82
+ }
83
+ const { list } = apiResponse.data;
84
+ if (list.length === 0) {
85
+ return createSuccessResult("未查询到任何合同数据");
86
+ }
87
+ // Step 3: 构建 Excel 数据
88
+ const headerRow = COLUMNS.map(([label]) => label);
89
+ const dataRows = list.map((item) => COLUMNS.map(([, field, transform]) => {
90
+ const val = item[field];
91
+ if (transform) {
92
+ return transform(val);
93
+ }
94
+ return val != null ? String(val) : "";
95
+ }));
96
+ const sheetData = [headerRow, ...dataRows];
97
+ // Step 4: 保存 Excel 文件
98
+ const fileName = generateDatedFileName("招商加盟合同列表导出", "xlsx", false);
99
+ const sheets = [{ name: "合同数据", data: sheetData }];
100
+ const filePath = saveWorkbook(sheets, fileName);
101
+ return createSuccessResult(`成功导出招商加盟合同数据!\n共 ${list.length} 条记录\n文件路径: ${filePath}`);
102
+ }
103
+ catch (error) {
104
+ const errorMessage = error instanceof Error ? error.message : String(error);
105
+ return createErrorResult(`执行过程中发生错误: ${errorMessage}`);
106
+ }
107
+ }
108
+ //# sourceMappingURL=investment_contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"investment_contract.js","sourceRoot":"","sources":["../../src/tools/investment_contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import * as z from "zod/v4";
2
+ export declare const name = "new_house_contract_export";
3
+ export declare const schema: {
4
+ description: string;
5
+ inputSchema: z.ZodObject<{
6
+ startTime: z.ZodOptional<z.ZodNumber>;
7
+ endTime: z.ZodOptional<z.ZodNumber>;
8
+ }, z.core.$strip>;
9
+ };
10
+ export declare function handler(args: {
11
+ startTime?: number;
12
+ endTime?: number;
13
+ }): Promise<import("../utils/http.js").ToolResult>;
14
+ //# sourceMappingURL=new_house_contract_export.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"new_house_contract_export.d.ts","sourceRoot":"","sources":["../../src/tools/new_house_contract_export.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AA0H5B,eAAO,MAAM,IAAI,8BAA8B,CAAC;AAEhD,eAAO,MAAM,MAAM;;;;;;CAalB,CAAC;AAEF,wBAAsB,OAAO,CAAC,IAAI,EAAE;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB,kDA4FA"}
@@ -0,0 +1,177 @@
1
+ import * as xlsx from "xlsx";
2
+ import * as z from "zod/v4";
3
+ import { buildGatewayHeaders, createErrorResult, createSuccessResult } from "../utils/http.js";
4
+ import { saveWorkbook } from "../utils/excel.js";
5
+ import { debug } from "../utils/debug.js";
6
+ // ---------------------------------------------------------------------------
7
+ // 常量
8
+ // ---------------------------------------------------------------------------
9
+ const BRAND_ID = "593347894961426496";
10
+ const CITY_CODE = "450100";
11
+ const ORGAN_ID = "625864877560328320";
12
+ const TARGET_SHEET = "合同明细";
13
+ const TARGET_COLUMNS = [
14
+ "合同编号",
15
+ "楼盘等级",
16
+ "基础应付金额",
17
+ "项目经理",
18
+ "项目部层级2",
19
+ "渠道专员",
20
+ "渠道部层级1",
21
+ "渠道部层级2",
22
+ "授权渠道专员",
23
+ "授权渠道部层级1",
24
+ "授权渠道部层级2",
25
+ ];
26
+ // ---------------------------------------------------------------------------
27
+ // 工具函数
28
+ // ---------------------------------------------------------------------------
29
+ /**
30
+ * 生成文件名:认购合同_20260423_1000.xlsx
31
+ */
32
+ function buildFileName(label) {
33
+ const now = new Date();
34
+ const Y = now.getFullYear();
35
+ const M = String(now.getMonth() + 1).padStart(2, "0");
36
+ const D = String(now.getDate()).padStart(2, "0");
37
+ const h = String(now.getHours()).padStart(2, "0");
38
+ const m = String(now.getMinutes()).padStart(2, "0");
39
+ return `${label}_${Y}${M}${D}_${h}${m}.xlsx`;
40
+ }
41
+ /**
42
+ * 获取默认时间范围:当月第一天 00:00:00 ~ 今天 23:59:59.999(本地时间)。
43
+ */
44
+ function getDefaultTimeRange() {
45
+ const now = new Date();
46
+ const monthStart = new Date(now.getFullYear(), now.getMonth(), 1);
47
+ const todayEnd = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 23, 59, 59, 999);
48
+ return {
49
+ startTime: monthStart.getTime(),
50
+ endTime: todayEnd.getTime(),
51
+ };
52
+ }
53
+ // 需要保持数值类型的列
54
+ const NUMERIC_COLUMNS = new Set(["基础应付金额"]);
55
+ /**
56
+ * 解析 base64 编码的 Excel 文件,提取目标 sheet,过滤列并按合同编号去重。
57
+ * 返回二维数组(含表头),如果目标 sheet 不存在则返回 null。
58
+ */
59
+ function filterExcel(base64Data) {
60
+ const buffer = Buffer.from(base64Data, "base64");
61
+ const workbook = xlsx.read(buffer, { type: "buffer" });
62
+ if (!workbook.SheetNames.includes(TARGET_SHEET)) {
63
+ return null;
64
+ }
65
+ const sheet = workbook.Sheets[TARGET_SHEET];
66
+ const jsonData = xlsx.utils.sheet_to_json(sheet, {
67
+ defval: "",
68
+ });
69
+ if (jsonData.length === 0)
70
+ return [TARGET_COLUMNS];
71
+ // 按合同编号去重
72
+ const seen = new Set();
73
+ const uniqueRows = jsonData.filter((row) => {
74
+ const contractNo = String(row["合同编号"] ?? "");
75
+ if (!contractNo || seen.has(contractNo))
76
+ return false;
77
+ seen.add(contractNo);
78
+ return true;
79
+ });
80
+ const headerRow = TARGET_COLUMNS;
81
+ const dataRows = uniqueRows.map((row) => TARGET_COLUMNS.map((col) => {
82
+ const val = row[col];
83
+ if (val == null)
84
+ return "";
85
+ if (NUMERIC_COLUMNS.has(col)) {
86
+ const num = Number(val);
87
+ return isNaN(num) ? String(val) : num;
88
+ }
89
+ return String(val);
90
+ }));
91
+ return [headerRow, ...dataRows];
92
+ }
93
+ // ---------------------------------------------------------------------------
94
+ // 工具导出
95
+ // ---------------------------------------------------------------------------
96
+ export const name = "new_house_contract_export";
97
+ export const schema = {
98
+ description: "从 ERP 系统导出新房合同数据(认购合同和签约合同)。不传时间时默认查询当月第一天到今天。",
99
+ inputSchema: z.object({
100
+ startTime: z
101
+ .number()
102
+ .optional()
103
+ .describe("开始时间,毫秒时间戳,可选,不传则默认当月第一天"),
104
+ endTime: z
105
+ .number()
106
+ .optional()
107
+ .describe("结束时间,毫秒时间戳,可选,不传则默认今天"),
108
+ }),
109
+ };
110
+ export async function handler(args) {
111
+ const headers = buildGatewayHeaders();
112
+ const defaults = getDefaultTimeRange();
113
+ const startTime = args.startTime ?? defaults.startTime;
114
+ const endTime = args.endTime ?? defaults.endTime;
115
+ debug("date range", { startTime, endTime });
116
+ // 校验时间范围
117
+ if (startTime > endTime) {
118
+ return createErrorResult("开始时间不能晚于结束时间");
119
+ }
120
+ try {
121
+ // 分别导出认购合同和签约合同
122
+ const contractTypes = [
123
+ { type: "subscription", label: "认购合同" },
124
+ { type: "signed", label: "签约合同" },
125
+ ];
126
+ const results = [];
127
+ for (const ct of contractTypes) {
128
+ console.error(`[new_house_contract_export] 正在导出${ct.label}...`);
129
+ const response = await fetch("https://mcp.yjzf.com/new_house_contract_export", {
130
+ method: "POST",
131
+ headers,
132
+ body: JSON.stringify({
133
+ city_code: CITY_CODE,
134
+ organ_id: ORGAN_ID,
135
+ brand_id: BRAND_ID,
136
+ startTime,
137
+ endTime,
138
+ contractType: ct.type,
139
+ }),
140
+ });
141
+ if (!response.ok) {
142
+ return createErrorResult(`请求 ${ct.label} 导出失败: ${response.status} ${response.statusText}`);
143
+ }
144
+ const apiResponse = await response.json();
145
+ debug(`${ct.label} response`, {
146
+ succeed: apiResponse.succeed,
147
+ msg: apiResponse.msg,
148
+ });
149
+ if (!apiResponse.succeed) {
150
+ return createErrorResult(`${ct.label} 网关返回错误: ${apiResponse.msg}`);
151
+ }
152
+ if (!apiResponse.data?.base64) {
153
+ return createErrorResult(`${ct.label} 返回数据中缺少 base64 字段`);
154
+ }
155
+ // 解析 Excel 并过滤
156
+ const filteredData = filterExcel(apiResponse.data.base64);
157
+ if (filteredData === null) {
158
+ return createErrorResult(`${ct.label} Excel 中未找到 "${TARGET_SHEET}" 工作表`);
159
+ }
160
+ if (filteredData.length <= 1) {
161
+ results.push(`${ct.label}: 无数据`);
162
+ continue;
163
+ }
164
+ // 保存精简 Excel
165
+ const fileName = buildFileName(ct.label);
166
+ const sheets = [{ name: TARGET_SHEET, data: filteredData }];
167
+ const filePath = saveWorkbook(sheets, fileName);
168
+ results.push(`${ct.label}: ${filteredData.length - 1} 条记录\n文件路径: ${filePath}`);
169
+ }
170
+ return createSuccessResult(`成功导出新房合同数据!\n\n${results.join("\n\n")}`);
171
+ }
172
+ catch (error) {
173
+ const errorMessage = error instanceof Error ? error.message : String(error);
174
+ return createErrorResult(`执行过程中发生错误: ${errorMessage}`);
175
+ }
176
+ }
177
+ //# sourceMappingURL=new_house_contract_export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"new_house_contract_export.js","sourceRoot":"","sources":["../../src/tools/new_house_contract_export.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ export interface SheetDef {
2
+ name: string;
3
+ data: (string | number)[][];
4
+ }
5
+ /**
6
+ * 创建工作簿并保存到 data 目录,返回文件绝对路径。
7
+ * @param sheets 工作表定义列表(名称 + 二维数组数据)
8
+ * @param fileName 文件名(含扩展名,如 "2026-04-21_xxx.xlsx")
9
+ */
10
+ export declare function saveWorkbook(sheets: SheetDef[], fileName: string): string;
11
+ /**
12
+ * 毫秒时间戳转 YYYY-MM-DD hh:mm:ss 格式字符串
13
+ */
14
+ export declare function formatTimestamp(ts: number): string;
15
+ //# sourceMappingURL=excel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"excel.d.ts","sourceRoot":"","sources":["../../src/utils/excel.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EAAE,CAAC;CAC7B;AAMD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAczE;AAMD;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CASlD"}
@@ -0,0 +1,41 @@
1
+ import * as fs from "node:fs";
2
+ import * as path from "node:path";
3
+ import * as xlsx from "xlsx";
4
+ import { getDataDir } from "./env.js";
5
+ // ---------------------------------------------------------------------------
6
+ // Excel 工作簿生成与保存
7
+ // ---------------------------------------------------------------------------
8
+ /**
9
+ * 创建工作簿并保存到 data 目录,返回文件绝对路径。
10
+ * @param sheets 工作表定义列表(名称 + 二维数组数据)
11
+ * @param fileName 文件名(含扩展名,如 "2026-04-21_xxx.xlsx")
12
+ */
13
+ export function saveWorkbook(sheets, fileName) {
14
+ const workbook = xlsx.utils.book_new();
15
+ for (const sheet of sheets) {
16
+ const ws = xlsx.utils.aoa_to_sheet(sheet.data);
17
+ xlsx.utils.book_append_sheet(workbook, ws, sheet.name);
18
+ }
19
+ const dataDir = getDataDir();
20
+ fs.mkdirSync(dataDir, { recursive: true });
21
+ const filePath = path.join(dataDir, fileName);
22
+ xlsx.writeFile(workbook, filePath);
23
+ return filePath;
24
+ }
25
+ // ---------------------------------------------------------------------------
26
+ // 时间格式化
27
+ // ---------------------------------------------------------------------------
28
+ /**
29
+ * 毫秒时间戳转 YYYY-MM-DD hh:mm:ss 格式字符串
30
+ */
31
+ export function formatTimestamp(ts) {
32
+ const date = new Date(ts);
33
+ const Y = date.getFullYear();
34
+ const M = String(date.getMonth() + 1).padStart(2, "0");
35
+ const D = String(date.getDate()).padStart(2, "0");
36
+ const h = String(date.getHours()).padStart(2, "0");
37
+ const m = String(date.getMinutes()).padStart(2, "0");
38
+ const s = String(date.getSeconds()).padStart(2, "0");
39
+ return `${Y}-${M}-${D} ${h}:${m}:${s}`;
40
+ }
41
+ //# sourceMappingURL=excel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"excel.js","sourceRoot":"","sources":["../../src/utils/excel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAWtC,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,MAAkB,EAAE,QAAgB;IAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IAEvC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,QAAQ,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC9C,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAEnC,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAE9E;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,EAAU;IACxC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAC7B,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACvD,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAClD,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACnD,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACrD,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACrD,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACzC,CAAC"}
@@ -0,0 +1,14 @@
1
+ interface ToolContent {
2
+ type: "text";
3
+ text: string;
4
+ }
5
+ export interface ToolResult {
6
+ [x: string]: unknown;
7
+ content: ToolContent[];
8
+ isError?: boolean;
9
+ }
10
+ export declare function buildGatewayHeaders(): Record<string, string>;
11
+ export declare function createErrorResult(message: string): ToolResult;
12
+ export declare function createSuccessResult(message: string): ToolResult;
13
+ export {};
14
+ //# sourceMappingURL=http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/utils/http.ts"],"names":[],"mappings":"AAMA,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,UAAU;IACzB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACrB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAMD,wBAAgB,mBAAmB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAY5D;AAMD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAK7D;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAI/D"}
@@ -0,0 +1,30 @@
1
+ import { getApiKey } from "./env.js";
2
+ // ---------------------------------------------------------------------------
3
+ // Gateway 请求头
4
+ // ---------------------------------------------------------------------------
5
+ export function buildGatewayHeaders() {
6
+ const headers = {
7
+ Accept: "application/json",
8
+ "Content-Type": "application/json",
9
+ };
10
+ const apiKey = getApiKey();
11
+ if (apiKey) {
12
+ headers["Authorization"] = `Bearer ${apiKey}`;
13
+ }
14
+ return headers;
15
+ }
16
+ // ---------------------------------------------------------------------------
17
+ // 标准化返回
18
+ // ---------------------------------------------------------------------------
19
+ export function createErrorResult(message) {
20
+ return {
21
+ content: [{ type: "text", text: message }],
22
+ isError: true,
23
+ };
24
+ }
25
+ export function createSuccessResult(message) {
26
+ return {
27
+ content: [{ type: "text", text: message }],
28
+ };
29
+ }
30
+ //# sourceMappingURL=http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/utils/http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAiBrC,8EAA8E;AAC9E,cAAc;AACd,8EAA8E;AAE9E,MAAM,UAAU,mBAAmB;IACjC,MAAM,OAAO,GAA2B;QACtC,MAAM,EAAE,kBAAkB;QAC1B,cAAc,EAAE,kBAAkB;KACnC,CAAC;IAEF,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,MAAM,EAAE,CAAC;IAChD,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAE9E,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QACnD,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAe;IACjD,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;KACpD,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yjzf/mcp-server-yjzf",
3
- "version": "0.1.8",
3
+ "version": "0.2.0",
4
4
  "description": "MCP Server for YJZF",
5
5
  "type": "module",
6
6
  "bin": {
@@ -16,7 +16,8 @@
16
16
  "prepublishOnly": "npm run build",
17
17
  "inspect": "npx @modelcontextprotocol/inspector node dist/index.js",
18
18
  "test": "node test-mcp.js",
19
- "test:debug": "DEBUG=1 node test-mcp.js"
19
+ "test:debug": "DEBUG=1 node test-mcp.js",
20
+ "test:count": "node test-count-all-statement.js"
20
21
  },
21
22
  "keywords": [
22
23
  "mcp",