@yjzf/mcp-server-yjzf 0.2.1 → 0.2.2
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 +2 -0
- package/dist/index.js.map +1 -1
- package/dist/tools/count_all_statement.d.ts +22 -2
- package/dist/tools/count_all_statement.d.ts.map +1 -1
- package/dist/tools/count_all_statement.js +186 -100
- package/dist/tools/count_all_statement.js.map +1 -1
- package/dist/tools/statement_query.d.ts +38 -0
- package/dist/tools/statement_query.d.ts.map +1 -0
- package/dist/tools/statement_query.js +277 -0
- package/dist/tools/statement_query.js.map +1 -0
- package/dist/utils/env.d.ts +2 -2
- package/dist/utils/env.d.ts.map +1 -1
- package/dist/utils/env.js +7 -3
- package/dist/utils/env.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -8,6 +8,7 @@ import * as getCurrentTimeTool from "./tools/get_current_time.js";
|
|
|
8
8
|
import * as dateToTimestampTool from "./tools/date_to_timestamp.js";
|
|
9
9
|
import * as investmentContractExportTool from "./tools/investment_contract.js";
|
|
10
10
|
import * as newHouseContractExportTool from "./tools/new_house_contract_export.js";
|
|
11
|
+
import * as statementQueryTool from "./tools/statement_query.js";
|
|
11
12
|
// ---------------------------------------------------------------------------
|
|
12
13
|
// MCP Server
|
|
13
14
|
// ---------------------------------------------------------------------------
|
|
@@ -22,6 +23,7 @@ server.registerTool(getCurrentTimeTool.name, getCurrentTimeTool.schema, getCurre
|
|
|
22
23
|
server.registerTool(dateToTimestampTool.name, dateToTimestampTool.schema, dateToTimestampTool.handler);
|
|
23
24
|
server.registerTool(investmentContractExportTool.name, investmentContractExportTool.schema, investmentContractExportTool.handler);
|
|
24
25
|
server.registerTool(newHouseContractExportTool.name, newHouseContractExportTool.schema, newHouseContractExportTool.handler);
|
|
26
|
+
server.registerTool(statementQueryTool.name, statementQueryTool.schema, statementQueryTool.handler);
|
|
25
27
|
// ---------------------------------------------------------------------------
|
|
26
28
|
// Start
|
|
27
29
|
// ---------------------------------------------------------------------------
|
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;AACpE,OAAO,KAAK,4BAA4B,MAAM,gCAAgC,CAAC;AAC/E,OAAO,KAAK,0BAA0B,MAAM,sCAAsC,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;AACnF,OAAO,KAAK,kBAAkB,MAAM,4BAA4B,CAAC;AAEjE,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,MAAM,CAAC,YAAY,CACjB,kBAAkB,CAAC,IAAI,EACvB,kBAAkB,CAAC,MAAM,EACzB,kBAAkB,CAAC,OAAO,CAC3B,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"}
|
|
@@ -3,24 +3,44 @@ export declare const name = "count_all_statement";
|
|
|
3
3
|
export declare const schema: {
|
|
4
4
|
description: string;
|
|
5
5
|
inputSchema: z.ZodObject<{
|
|
6
|
+
statisticsScope: z.ZodOptional<z.ZodNumber>;
|
|
7
|
+
branchIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
8
|
+
bizlineIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
9
|
+
storeManagerIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
10
|
+
districtCodes: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
11
|
+
tradingAreaIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
12
|
+
subBranchIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
13
|
+
agentCodeQueries: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
6
14
|
startTime: z.ZodOptional<z.ZodNumber>;
|
|
7
15
|
endTime: z.ZodOptional<z.ZodNumber>;
|
|
16
|
+
status: z.ZodOptional<z.ZodString>;
|
|
17
|
+
isEnabled: z.ZodOptional<z.ZodString>;
|
|
8
18
|
}, z.core.$strip>;
|
|
9
19
|
};
|
|
10
20
|
export declare function handler(args: {
|
|
21
|
+
statisticsScope?: number;
|
|
22
|
+
branchIds?: string[];
|
|
23
|
+
bizlineIds?: string[];
|
|
24
|
+
storeManagerIds?: string[];
|
|
25
|
+
districtCodes?: string[];
|
|
26
|
+
tradingAreaIds?: string[];
|
|
27
|
+
subBranchIds?: string[];
|
|
28
|
+
agentCodeQueries?: string[];
|
|
11
29
|
startTime?: number;
|
|
12
30
|
endTime?: number;
|
|
31
|
+
status?: string;
|
|
32
|
+
isEnabled?: string;
|
|
13
33
|
}): Promise<{
|
|
14
34
|
content: {
|
|
15
35
|
type: "text";
|
|
16
36
|
text: string;
|
|
17
37
|
}[];
|
|
18
|
-
isError
|
|
38
|
+
isError?: undefined;
|
|
19
39
|
} | {
|
|
20
40
|
content: {
|
|
21
41
|
type: "text";
|
|
22
42
|
text: string;
|
|
23
43
|
}[];
|
|
24
|
-
isError
|
|
44
|
+
isError: boolean;
|
|
25
45
|
}>;
|
|
26
46
|
//# sourceMappingURL=count_all_statement.d.ts.map
|
|
@@ -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
|
|
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;;;;;;;;;;;;;;;;CA4ClB,CAAC;AA8DF,wBAAsB,OAAO,CAAC,IAAI,EAAE;IAClC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;;;;;;;;;;;;GAoCA"}
|
|
@@ -61,10 +61,47 @@ function buildSheetData(list, fixedColumns) {
|
|
|
61
61
|
}
|
|
62
62
|
export const name = "count_all_statement";
|
|
63
63
|
export const schema = {
|
|
64
|
-
description:
|
|
64
|
+
description: `获取总部数据指标报表,生成 Excel 文件。支持两种模式:
|
|
65
|
+
1. 旧模式(不传 statisticsScope):固定查询城市公司+营销线层级两个维度,使用默认20项指标
|
|
66
|
+
2. 动态模式(传入 statisticsScope):按指定维度和条件进行单轮查询,支持自定义指标
|
|
67
|
+
|
|
68
|
+
⚠️ 动态模式的所有参数值(branchIds、bizlineIds、storeManagerIds、agentCodeQueries 等)必须先通过 statement_query 工具查询获取真实值,严禁自行编造或猜测 ID/code。
|
|
69
|
+
调用顺序:statement_query(get_query_guide) → statement_query(get_branches) → [维度专属查询] → statement_query(get_statistics_targets) → 本工具。
|
|
70
|
+
用户说某个指标大类名称(如"房源库存指标")时,必须传入该大类下返回的所有父级 code,不可只传一个。
|
|
71
|
+
不传时间参数时默认查询当月第一天到昨天,最大时间间隔 12 个月。不需要自行计算时间戳,不传即可使用默认值。
|
|
72
|
+
|
|
73
|
+
🔁 后续/重复导出规则:当用户要求"把其他城市也导一份"或"换个城市再导一次"时:
|
|
74
|
+
- agentCodeQueries 必须与上一次成功导出使用的完全相同(同样的 code 列表、同样的数量)
|
|
75
|
+
- statisticsScope 必须与上一次相同
|
|
76
|
+
- 仅 branchIds、bizlineIds、storeManagerIds 需要根据新城市重新通过 statement_query 查询
|
|
77
|
+
- 禁止从上下文中随意挑选 code,必须原样复用上次的完整 agentCodeQueries 数组`,
|
|
65
78
|
inputSchema: z.object({
|
|
66
|
-
|
|
67
|
-
|
|
79
|
+
// 动态模式参数
|
|
80
|
+
statisticsScope: z.number().optional()
|
|
81
|
+
.describe("统计维度: 5=城市公司, 7=营销线层级, 51=行政区, 52=商圈, 53=小区, 1=经纪人, 17=子公司。不传则走旧的固定查询逻辑"),
|
|
82
|
+
branchIds: z.array(z.string()).optional()
|
|
83
|
+
.describe("城市公司 ID 列表。必须通过 statement_query({ action: 'get_branches', preset: '直营' }) 获取,从结果中匹配目标城市的 branchId。禁止用 keyword 搜索直营城市,禁止编造"),
|
|
84
|
+
bizlineIds: z.array(z.string()).optional()
|
|
85
|
+
.describe("营销线层级 ID 列表,仅维度=7 时必传。必须通过 statement_query({ action: 'get_hierarchies' }) 获取真实 key 值,禁止编造"),
|
|
86
|
+
storeManagerIds: z.array(z.string()).optional()
|
|
87
|
+
.describe("管理人员 ID 列表,仅维度=7 时使用。必须通过 statement_query({ action: 'get_store_managers' }) 获取。不传或空数组=全选"),
|
|
88
|
+
districtCodes: z.array(z.string()).optional()
|
|
89
|
+
.describe("行政区编码列表,仅维度 51/52/53 时使用。必须通过查询接口获取,禁止编造"),
|
|
90
|
+
tradingAreaIds: z.array(z.string()).optional()
|
|
91
|
+
.describe("商圈 ID 列表,仅维度 52/53 时使用。必须通过查询接口获取,禁止编造"),
|
|
92
|
+
subBranchIds: z.array(z.string()).optional()
|
|
93
|
+
.describe("子公司 ID 列表,仅维度 17 时使用。必须通过查询接口获取,禁止编造"),
|
|
94
|
+
agentCodeQueries: z.array(z.string()).optional()
|
|
95
|
+
.describe(`统计指标 code 列表。必须通过 statement_query({ action: 'get_statistics_targets', statisticsScope, topName }) 获取真实 code,禁止编造。
|
|
96
|
+
- 用户说某个指标大类名称(如"房源库存指标")时,传入该大类下所有父级 code。
|
|
97
|
+
- 用户说某个父级指标(如"上架房源数")且未指定子项时,传父级 code(如 "55"),会导出该父级下所有子项。
|
|
98
|
+
- 用户明确指定子项/口径(如"上架房源数-二手房"、"签单量-买卖")时,必须传对应 childNodes 里的子项 code(如 "301"),不要传父级 code。`),
|
|
99
|
+
// 时间参数
|
|
100
|
+
startTime: z.number().optional().describe("开始时间(毫秒时间戳)。不传则默认当月第一天,无需自行计算"),
|
|
101
|
+
endTime: z.number().optional().describe("结束时间(毫秒时间戳)。不传则默认昨天23:59:59,无需自行计算"),
|
|
102
|
+
// 其他
|
|
103
|
+
status: z.string().optional().describe("状态筛选,仅经纪人维度(1)使用。1=在职,2=离职"),
|
|
104
|
+
isEnabled: z.string().optional().describe("启用状态筛选,仅经纪人维度(1)使用。1=启用,0=禁用"),
|
|
68
105
|
}),
|
|
69
106
|
};
|
|
70
107
|
const MAX_INTERVAL_MS = 366 * 24 * 3600 * 1000; // 12 个月(约 366 天)
|
|
@@ -77,25 +114,35 @@ function getDefaultTimeRange() {
|
|
|
77
114
|
endTime: yesterday.getTime(),
|
|
78
115
|
};
|
|
79
116
|
}
|
|
117
|
+
const SCOPE_FIXED_COLUMNS = {
|
|
118
|
+
5: CITY_FIXED_COLUMNS,
|
|
119
|
+
7: MKT_FIXED_COLUMNS,
|
|
120
|
+
};
|
|
121
|
+
const DEFAULT_FIXED_COLUMNS = [
|
|
122
|
+
["名称", "orgLevelSimpleName"],
|
|
123
|
+
];
|
|
124
|
+
function getDimensionLabel(scope) {
|
|
125
|
+
const labels = {
|
|
126
|
+
5: "城市公司", 7: "营销线层级", 51: "行政区",
|
|
127
|
+
52: "商圈", 53: "小区", 1: "经纪人", 17: "子公司",
|
|
128
|
+
};
|
|
129
|
+
return labels[scope] ?? `维度${scope}`;
|
|
130
|
+
}
|
|
131
|
+
// ---------------------------------------------------------------------------
|
|
132
|
+
// Handler
|
|
133
|
+
// ---------------------------------------------------------------------------
|
|
80
134
|
export async function handler(args) {
|
|
81
135
|
const apiKey = getApiKey();
|
|
82
136
|
const defaults = getDefaultTimeRange();
|
|
83
137
|
const startTime = args.startTime ?? defaults.startTime;
|
|
84
138
|
const endTime = args.endTime ?? defaults.endTime;
|
|
85
|
-
// 校验时间间隔不超过 12 个月
|
|
86
139
|
if (endTime - startTime > MAX_INTERVAL_MS) {
|
|
87
140
|
return {
|
|
88
|
-
content: [
|
|
89
|
-
{
|
|
90
|
-
type: "text",
|
|
91
|
-
text: `时间间隔超过 12 个月限制,请缩小查询范围`,
|
|
92
|
-
},
|
|
93
|
-
],
|
|
141
|
+
content: [{ type: "text", text: `时间间隔超过 12 个月限制,请缩小查询范围` }],
|
|
94
142
|
isError: true,
|
|
95
143
|
};
|
|
96
144
|
}
|
|
97
145
|
debug("date range", { startTime, endTime });
|
|
98
|
-
// Build request headers
|
|
99
146
|
const headers = {
|
|
100
147
|
Accept: "application/json",
|
|
101
148
|
"Content-Type": "application/json",
|
|
@@ -104,103 +151,142 @@ export async function handler(args) {
|
|
|
104
151
|
headers["Authorization"] = `Bearer ${apiKey}`;
|
|
105
152
|
}
|
|
106
153
|
try {
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
fetch("https://mcp.yjzf.com/zy_cities.json", { method: "GET", headers }),
|
|
110
|
-
fetch("https://mcp.yjzf.com/count_all_step2.json", { method: "GET", headers }),
|
|
111
|
-
]);
|
|
112
|
-
if (!cities1Response.ok) {
|
|
113
|
-
return {
|
|
114
|
-
content: [
|
|
115
|
-
{
|
|
116
|
-
type: "text",
|
|
117
|
-
text: `获取 zy_cities 数据失败: ${cities1Response.status} ${cities1Response.statusText}`,
|
|
118
|
-
},
|
|
119
|
-
],
|
|
120
|
-
isError: true,
|
|
121
|
-
};
|
|
122
|
-
}
|
|
123
|
-
if (!cities2Response.ok) {
|
|
124
|
-
return {
|
|
125
|
-
content: [
|
|
126
|
-
{
|
|
127
|
-
type: "text",
|
|
128
|
-
text: `获取 count_all_step2 数据失败: ${cities2Response.status} ${cities2Response.statusText}`,
|
|
129
|
-
},
|
|
130
|
-
],
|
|
131
|
-
isError: true,
|
|
132
|
-
};
|
|
133
|
-
}
|
|
134
|
-
const cities1 = await cities1Response.json();
|
|
135
|
-
debug("zy_cities.json (cities1)", cities1);
|
|
136
|
-
const cities2 = await cities2Response.json();
|
|
137
|
-
debug("count_all_step2.json (cities2)", cities2);
|
|
138
|
-
// Step 2: POST to count_all_statement
|
|
139
|
-
const payload = { cities1, cities2, startTime, endTime };
|
|
140
|
-
const statementResponse = await fetch("https://mcp.yjzf.com/count_all_statement", {
|
|
141
|
-
method: "POST",
|
|
142
|
-
headers,
|
|
143
|
-
body: JSON.stringify(payload),
|
|
144
|
-
});
|
|
145
|
-
if (!statementResponse.ok) {
|
|
146
|
-
return {
|
|
147
|
-
content: [
|
|
148
|
-
{
|
|
149
|
-
type: "text",
|
|
150
|
-
text: `请求 count_all_statement 失败: ${statementResponse.status} ${statementResponse.statusText}`,
|
|
151
|
-
},
|
|
152
|
-
],
|
|
153
|
-
isError: true,
|
|
154
|
-
};
|
|
154
|
+
if (args.statisticsScope != null) {
|
|
155
|
+
return await handleDynamicQuery(args, startTime, endTime, headers);
|
|
155
156
|
}
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
debug("count_all_statement response", apiResponse);
|
|
159
|
-
if (!apiResponse.succeed) {
|
|
160
|
-
return {
|
|
161
|
-
content: [
|
|
162
|
-
{
|
|
163
|
-
type: "text",
|
|
164
|
-
text: `网关返回错误: ${apiResponse.msg}`,
|
|
165
|
-
},
|
|
166
|
-
],
|
|
167
|
-
isError: true,
|
|
168
|
-
};
|
|
157
|
+
else {
|
|
158
|
+
return await handleLegacyQuery(startTime, endTime, headers);
|
|
169
159
|
}
|
|
170
|
-
// Step 4: Build Excel workbook with two sheets
|
|
171
|
-
const workbook = xlsx.utils.book_new();
|
|
172
|
-
const citySheetData = buildSheetData(apiResponse.data.cityData.data.list, CITY_FIXED_COLUMNS);
|
|
173
|
-
const citySheet = xlsx.utils.aoa_to_sheet(citySheetData);
|
|
174
|
-
xlsx.utils.book_append_sheet(workbook, citySheet, "城市公司维度");
|
|
175
|
-
const mktSheetData = buildSheetData(apiResponse.data.marketingData.data.list, MKT_FIXED_COLUMNS);
|
|
176
|
-
const mktSheet = xlsx.utils.aoa_to_sheet(mktSheetData);
|
|
177
|
-
xlsx.utils.book_append_sheet(workbook, mktSheet, "营销线层级维度");
|
|
178
|
-
// Step 5: Save xlsx file
|
|
179
|
-
const fileName = generateDatedFileName("城市指标统计", "xlsx");
|
|
180
|
-
const dataDir = getDataDir();
|
|
181
|
-
fs.mkdirSync(dataDir, { recursive: true });
|
|
182
|
-
const filePath = path.join(dataDir, fileName);
|
|
183
|
-
xlsx.writeFile(workbook, filePath);
|
|
184
|
-
return {
|
|
185
|
-
content: [
|
|
186
|
-
{
|
|
187
|
-
type: "text",
|
|
188
|
-
text: `成功生成城市指标统计报表!\n文件路径: ${filePath}`,
|
|
189
|
-
},
|
|
190
|
-
],
|
|
191
|
-
};
|
|
192
160
|
}
|
|
193
161
|
catch (error) {
|
|
194
162
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
195
163
|
return {
|
|
196
|
-
content: [
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
164
|
+
content: [{ type: "text", text: `执行过程中发生错误: ${errorMessage}` }],
|
|
165
|
+
isError: true,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
// ---------------------------------------------------------------------------
|
|
170
|
+
// 动态模式
|
|
171
|
+
// ---------------------------------------------------------------------------
|
|
172
|
+
async function handleDynamicQuery(args, startTime, endTime, headers) {
|
|
173
|
+
const payload = {
|
|
174
|
+
statisticsScope: args.statisticsScope,
|
|
175
|
+
branchIds: args.branchIds,
|
|
176
|
+
bizlineIds: args.bizlineIds,
|
|
177
|
+
storeManagerIds: args.storeManagerIds,
|
|
178
|
+
districtCodes: args.districtCodes,
|
|
179
|
+
tradingAreaIds: args.tradingAreaIds,
|
|
180
|
+
subBranchIds: args.subBranchIds,
|
|
181
|
+
agentCodeQueries: args.agentCodeQueries,
|
|
182
|
+
startTime,
|
|
183
|
+
endTime,
|
|
184
|
+
status: args.status,
|
|
185
|
+
isEnabled: args.isEnabled,
|
|
186
|
+
};
|
|
187
|
+
debug("dynamic query payload", payload);
|
|
188
|
+
const resp = await fetch("https://mcp.yjzf.com/count_all_statement", {
|
|
189
|
+
method: "POST",
|
|
190
|
+
headers,
|
|
191
|
+
body: JSON.stringify(payload),
|
|
192
|
+
});
|
|
193
|
+
if (!resp.ok) {
|
|
194
|
+
return {
|
|
195
|
+
content: [{ type: "text", text: `请求 count_all_statement 失败: ${resp.status} ${resp.statusText}` }],
|
|
196
|
+
isError: true,
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
const apiResponse = await resp.json();
|
|
200
|
+
debug("dynamic query response", { succeed: apiResponse.succeed, msg: apiResponse.msg });
|
|
201
|
+
if (!apiResponse.succeed) {
|
|
202
|
+
return {
|
|
203
|
+
content: [{ type: "text", text: `网关返回错误: ${apiResponse.msg}` }],
|
|
204
|
+
isError: true,
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
// 生成 Excel
|
|
208
|
+
const workbook = xlsx.utils.book_new();
|
|
209
|
+
const fixedColumns = SCOPE_FIXED_COLUMNS[args.statisticsScope] ?? DEFAULT_FIXED_COLUMNS;
|
|
210
|
+
const sheetData = buildSheetData(apiResponse.data.queryData.data.list, fixedColumns);
|
|
211
|
+
const sheet = xlsx.utils.aoa_to_sheet(sheetData);
|
|
212
|
+
const dimensionLabel = getDimensionLabel(args.statisticsScope);
|
|
213
|
+
xlsx.utils.book_append_sheet(workbook, sheet, dimensionLabel);
|
|
214
|
+
const fileName = generateDatedFileName(`数据指标报表_${dimensionLabel}`, "xlsx");
|
|
215
|
+
const dataDir = getDataDir();
|
|
216
|
+
fs.mkdirSync(dataDir, { recursive: true });
|
|
217
|
+
const filePath = path.join(dataDir, fileName);
|
|
218
|
+
xlsx.writeFile(workbook, filePath);
|
|
219
|
+
const listCount = apiResponse.data.queryData.data.list.length;
|
|
220
|
+
return {
|
|
221
|
+
content: [{
|
|
222
|
+
type: "text",
|
|
223
|
+
text: `成功生成${dimensionLabel}维度指标报表!共 ${listCount} 条数据。\n文件路径: ${filePath}`,
|
|
224
|
+
}],
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
// ---------------------------------------------------------------------------
|
|
228
|
+
// 旧模式
|
|
229
|
+
// ---------------------------------------------------------------------------
|
|
230
|
+
async function handleLegacyQuery(startTime, endTime, headers) {
|
|
231
|
+
// Step 1: Fetch cities1 and cities2 in parallel
|
|
232
|
+
const [cities1Response, cities2Response] = await Promise.all([
|
|
233
|
+
fetch("https://mcp.yjzf.com/zy_cities.json", { method: "GET", headers }),
|
|
234
|
+
fetch("https://mcp.yjzf.com/count_all_step2.json", { method: "GET", headers }),
|
|
235
|
+
]);
|
|
236
|
+
if (!cities1Response.ok) {
|
|
237
|
+
return {
|
|
238
|
+
content: [{ type: "text", text: `获取 zy_cities 数据失败: ${cities1Response.status} ${cities1Response.statusText}` }],
|
|
202
239
|
isError: true,
|
|
203
240
|
};
|
|
204
241
|
}
|
|
242
|
+
if (!cities2Response.ok) {
|
|
243
|
+
return {
|
|
244
|
+
content: [{ type: "text", text: `获取 count_all_step2 数据失败: ${cities2Response.status} ${cities2Response.statusText}` }],
|
|
245
|
+
isError: true,
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
const cities1 = await cities1Response.json();
|
|
249
|
+
debug("zy_cities.json (cities1)", cities1);
|
|
250
|
+
const cities2 = await cities2Response.json();
|
|
251
|
+
debug("count_all_step2.json (cities2)", cities2);
|
|
252
|
+
// Step 2: POST to count_all_statement
|
|
253
|
+
const payload = { cities1, cities2, startTime, endTime };
|
|
254
|
+
const statementResponse = await fetch("https://mcp.yjzf.com/count_all_statement", {
|
|
255
|
+
method: "POST",
|
|
256
|
+
headers,
|
|
257
|
+
body: JSON.stringify(payload),
|
|
258
|
+
});
|
|
259
|
+
if (!statementResponse.ok) {
|
|
260
|
+
return {
|
|
261
|
+
content: [{ type: "text", text: `请求 count_all_statement 失败: ${statementResponse.status} ${statementResponse.statusText}` }],
|
|
262
|
+
isError: true,
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
// Step 3: Parse JSON response and generate Excel
|
|
266
|
+
const apiResponse = await statementResponse.json();
|
|
267
|
+
debug("count_all_statement response", apiResponse);
|
|
268
|
+
if (!apiResponse.succeed) {
|
|
269
|
+
return {
|
|
270
|
+
content: [{ type: "text", text: `网关返回错误: ${apiResponse.msg}` }],
|
|
271
|
+
isError: true,
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
// Step 4: Build Excel workbook with two sheets
|
|
275
|
+
const workbook = xlsx.utils.book_new();
|
|
276
|
+
const citySheetData = buildSheetData(apiResponse.data.cityData.data.list, CITY_FIXED_COLUMNS);
|
|
277
|
+
const citySheet = xlsx.utils.aoa_to_sheet(citySheetData);
|
|
278
|
+
xlsx.utils.book_append_sheet(workbook, citySheet, "城市公司维度");
|
|
279
|
+
const mktSheetData = buildSheetData(apiResponse.data.marketingData.data.list, MKT_FIXED_COLUMNS);
|
|
280
|
+
const mktSheet = xlsx.utils.aoa_to_sheet(mktSheetData);
|
|
281
|
+
xlsx.utils.book_append_sheet(workbook, mktSheet, "营销线层级维度");
|
|
282
|
+
// Step 5: Save xlsx file
|
|
283
|
+
const fileName = generateDatedFileName("城市指标统计", "xlsx");
|
|
284
|
+
const dataDir = getDataDir();
|
|
285
|
+
fs.mkdirSync(dataDir, { recursive: true });
|
|
286
|
+
const filePath = path.join(dataDir, fileName);
|
|
287
|
+
xlsx.writeFile(workbook, filePath);
|
|
288
|
+
return {
|
|
289
|
+
content: [{ type: "text", text: `成功生成城市指标统计报表!\n文件路径: ${filePath}` }],
|
|
290
|
+
};
|
|
205
291
|
}
|
|
206
292
|
//# sourceMappingURL=count_all_statement.js.map
|
|
@@ -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,38 @@
|
|
|
1
|
+
import * as z from "zod/v4";
|
|
2
|
+
type Action = "get_branches" | "get_hierarchies" | "get_store_managers" | "get_statistics_targets" | "get_query_guide";
|
|
3
|
+
interface StatementQueryArgs {
|
|
4
|
+
action: Action;
|
|
5
|
+
statisticsScope?: number;
|
|
6
|
+
topName?: string;
|
|
7
|
+
preset?: string;
|
|
8
|
+
keyword?: string;
|
|
9
|
+
branchIds?: string[];
|
|
10
|
+
bizlineIds?: string[];
|
|
11
|
+
}
|
|
12
|
+
export declare const name = "statement_query";
|
|
13
|
+
export declare const schema: {
|
|
14
|
+
description: string;
|
|
15
|
+
inputSchema: z.ZodObject<{
|
|
16
|
+
action: z.ZodEnum<{
|
|
17
|
+
get_branches: "get_branches";
|
|
18
|
+
get_hierarchies: "get_hierarchies";
|
|
19
|
+
get_store_managers: "get_store_managers";
|
|
20
|
+
get_statistics_targets: "get_statistics_targets";
|
|
21
|
+
get_query_guide: "get_query_guide";
|
|
22
|
+
}>;
|
|
23
|
+
statisticsScope: z.ZodOptional<z.ZodNumber>;
|
|
24
|
+
topName: z.ZodOptional<z.ZodString>;
|
|
25
|
+
preset: z.ZodOptional<z.ZodString>;
|
|
26
|
+
keyword: z.ZodOptional<z.ZodString>;
|
|
27
|
+
branchIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
28
|
+
bizlineIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
29
|
+
}, z.core.$strip>;
|
|
30
|
+
};
|
|
31
|
+
export declare function handler(args: StatementQueryArgs): Promise<{
|
|
32
|
+
content: {
|
|
33
|
+
type: "text";
|
|
34
|
+
text: string;
|
|
35
|
+
}[];
|
|
36
|
+
}>;
|
|
37
|
+
export {};
|
|
38
|
+
//# sourceMappingURL=statement_query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"statement_query.d.ts","sourceRoot":"","sources":["../../src/tools/statement_query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAQ5B,KAAK,MAAM,GACP,cAAc,GACd,iBAAiB,GACjB,oBAAoB,GACpB,wBAAwB,GACxB,iBAAiB,CAAC;AAEtB,UAAU,kBAAkB;IAC1B,MAAM,EAAE,MAAM,CAAC;IAEf,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAsCD,eAAO,MAAM,IAAI,oBAAoB,CAAC;AAEtC,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;CAyClB,CAAC;AAMF,wBAAsB,OAAO,CAAC,IAAI,EAAE,kBAAkB;;;;;GAerD"}
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
import * as z from "zod/v4";
|
|
2
|
+
import { getApiKey } from "../utils/env.js";
|
|
3
|
+
import { debug } from "../utils/debug.js";
|
|
4
|
+
// ---------------------------------------------------------------------------
|
|
5
|
+
// 查询指南(静态数据)
|
|
6
|
+
// ---------------------------------------------------------------------------
|
|
7
|
+
const QUERY_GUIDE = {
|
|
8
|
+
dimensions: {
|
|
9
|
+
"5_城市公司": { required: ["branchIds"], optional: [] },
|
|
10
|
+
"7_营销线层级": { required: ["branchIds", "hierarchy", "storeManagerIds"], optional: [] },
|
|
11
|
+
"51_行政区": { required: ["branchIds"], optional: [] },
|
|
12
|
+
"52_商圈": { required: ["branchIds"], optional: ["districtCodes(仅当 branchIds.length == 1 时可选)"] },
|
|
13
|
+
"53_小区": { required: ["branchIds"], optional: ["districtCodes(仅当 branchIds.length == 1 时可选)", "tradingAreaIds(仅当 branchIds.length == 1 时可选)"] },
|
|
14
|
+
"1_经纪人": { required: ["branchIds"], optional: ["status(1-在职;2-离职)", "isEnabled(1-启用;0-禁用)"] },
|
|
15
|
+
"17_子公司": { required: ["branchIds"], optional: ["subBranchIds(仅当 branchIds.length == 1 时可选)"] },
|
|
16
|
+
},
|
|
17
|
+
callOrder: [
|
|
18
|
+
"1. statement_query({ action: 'get_query_guide' }) → 了解维度与条件的依赖关系",
|
|
19
|
+
"2. statement_query({ action: 'get_branches' }) → 确定城市公司",
|
|
20
|
+
"3. statement_query({ action: 'get_statistics_targets', statisticsScope }) → 先获取大类列表 → 再传 topName 获取具体指标",
|
|
21
|
+
"4. 若维度=7: statement_query({ action: 'get_hierarchies', branchIds }) → 获取营销线层级",
|
|
22
|
+
"5. 若维度=7: statement_query({ action: 'get_store_managers', branchIds, bizlineIds }) → 获取管理人员",
|
|
23
|
+
"6. count_all_statement({ statisticsScope, branchIds, agentCodeQueries, ... }) → 导出报表",
|
|
24
|
+
],
|
|
25
|
+
notes: [
|
|
26
|
+
"不同 statisticsScope 返回的指标字典不同,获取指标时需传入维度数字",
|
|
27
|
+
"不传 statisticsScope 调用 count_all_statement 则走旧的固定查询逻辑",
|
|
28
|
+
"agentCodeQueries 支持父级 code 和子节点 code:用户选父级/大类时传父级 code;用户明确指定子项时传 childNodes 中的子节点 code,Gateway 会补全为父级对象并仅保留选中的子项",
|
|
29
|
+
"时间默认为当月第一天到昨天",
|
|
30
|
+
"营销线层级维度: 不选管理人员=全选",
|
|
31
|
+
"当前已实现维度: 城市公司(5)、营销线层级(7)。其余维度(行政区/商圈/小区/经纪人/子公司)即将支持",
|
|
32
|
+
],
|
|
33
|
+
};
|
|
34
|
+
// ---------------------------------------------------------------------------
|
|
35
|
+
// 工具定义
|
|
36
|
+
// ---------------------------------------------------------------------------
|
|
37
|
+
export const name = "statement_query";
|
|
38
|
+
export const schema = {
|
|
39
|
+
description: `数据指标报表的查询条件助手。在调用 count_all_statement 导出报表前,使用此工具逐步获取可选的查询条件值。
|
|
40
|
+
|
|
41
|
+
⚠️ 直营城市查询规范:查询直营城市时必须使用 get_branches + preset="直营",从返回的22个城市中匹配目标城市。禁止用 keyword 搜索直营城市名称(会匹配到重名/历史分支导致 branchId 错误)。keyword 仅用于非直营城市或探索性搜索,且当返回多条相似结果时必须让用户确认选择。
|
|
42
|
+
|
|
43
|
+
支持的 action:
|
|
44
|
+
- "get_branches" → 获取城市公司列表。直营城市必须用 preset="直营",禁止 keyword 搜索
|
|
45
|
+
- "get_hierarchies" → 获取营销线层级选项(需传 branchIds。仅营销线层级维度(7)时使用)
|
|
46
|
+
- "get_store_managers" → 根据层级获取管理人员列表(需传 branchIds + bizlineIds。仅营销线层级维度(7)时使用)
|
|
47
|
+
- "get_statistics_targets" → 获取统计指标(不传 topName 返回22个大类名称;传 topName 返回该类下完整指标明细。需传 statisticsScope 指定维度)
|
|
48
|
+
- "get_query_guide" → 获取各统计维度所需条件的依赖关系和调用顺序说明
|
|
49
|
+
|
|
50
|
+
典型调用顺序:
|
|
51
|
+
1. get_query_guide → 了解维度与条件的依赖关系
|
|
52
|
+
2. get_branches (preset="直营") → 确定城市公司(从结果中匹配用户提到的城市名)
|
|
53
|
+
3. get_statistics_targets → 先获取大类列表 → 再传 topName 获取具体指标
|
|
54
|
+
4. 若维度=7: get_hierarchies → 获取营销线层级 → get_store_managers → 获取管理人员
|
|
55
|
+
5. 条件收集完毕后调用 count_all_statement 导出`,
|
|
56
|
+
inputSchema: z.object({
|
|
57
|
+
action: z.enum(["get_branches", "get_hierarchies", "get_store_managers", "get_statistics_targets", "get_query_guide"])
|
|
58
|
+
.describe("要执行的查询动作"),
|
|
59
|
+
// get_statistics_targets 参数
|
|
60
|
+
statisticsScope: z.number().optional()
|
|
61
|
+
.describe("统计维度数字,get_statistics_targets 时传入。5=城市公司, 7=营销线层级, 51=行政区, 52=商圈, 53=小区, 1=经纪人, 17=子公司。不同维度返回不同指标字典。默认5"),
|
|
62
|
+
topName: z.string().optional()
|
|
63
|
+
.describe("指标大类名称,get_statistics_targets 时可选。不传返回所有大类名称列表;传入则返回该大类下的完整指标明细"),
|
|
64
|
+
// get_branches 参数
|
|
65
|
+
preset: z.string().optional()
|
|
66
|
+
.describe("预设筛选,get_branches 时使用。传 '直营' 返回22个直营城市。查直营城市(广州/南宁/深圳等)时必须使用此参数,禁止用 keyword"),
|
|
67
|
+
keyword: z.string().optional()
|
|
68
|
+
.describe("关键词搜索,get_branches 时可选。仅用于非直营城市或不确定城市类型时的探索性搜索。返回多条相似结果时必须让用户确认选择,禁止自动选取"),
|
|
69
|
+
// get_hierarchies / get_store_managers 参数
|
|
70
|
+
branchIds: z.array(z.string()).optional()
|
|
71
|
+
.describe("城市公司 ID 列表。get_hierarchies / get_store_managers 时必传"),
|
|
72
|
+
bizlineIds: z.array(z.string()).optional()
|
|
73
|
+
.describe("营销线层级 ID 列表(即 get_hierarchies 返回的 key 值),get_store_managers 时必传"),
|
|
74
|
+
}),
|
|
75
|
+
};
|
|
76
|
+
// ---------------------------------------------------------------------------
|
|
77
|
+
// Handler
|
|
78
|
+
// ---------------------------------------------------------------------------
|
|
79
|
+
export async function handler(args) {
|
|
80
|
+
debug("statement_query args", args);
|
|
81
|
+
switch (args.action) {
|
|
82
|
+
case "get_branches":
|
|
83
|
+
return await fetchBranches(args.preset, args.keyword);
|
|
84
|
+
case "get_hierarchies":
|
|
85
|
+
return await fetchHierarchies(args.branchIds);
|
|
86
|
+
case "get_store_managers":
|
|
87
|
+
return await fetchStoreManagers(args.branchIds, args.bizlineIds);
|
|
88
|
+
case "get_statistics_targets":
|
|
89
|
+
return await fetchStatisticsTargets(args.statisticsScope, args.topName);
|
|
90
|
+
case "get_query_guide":
|
|
91
|
+
return getQueryGuide();
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
// ---------------------------------------------------------------------------
|
|
95
|
+
// Action 实现
|
|
96
|
+
// ---------------------------------------------------------------------------
|
|
97
|
+
function getQueryGuide() {
|
|
98
|
+
return {
|
|
99
|
+
content: [{
|
|
100
|
+
type: "text",
|
|
101
|
+
text: JSON.stringify(QUERY_GUIDE, null, 2),
|
|
102
|
+
}],
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
async function fetchBranches(preset, keyword) {
|
|
106
|
+
const apiKey = getApiKey();
|
|
107
|
+
const headers = {
|
|
108
|
+
Accept: "application/json",
|
|
109
|
+
"Content-Type": "application/json",
|
|
110
|
+
};
|
|
111
|
+
if (apiKey) {
|
|
112
|
+
headers["Authorization"] = `Bearer ${apiKey}`;
|
|
113
|
+
}
|
|
114
|
+
const params = new URLSearchParams();
|
|
115
|
+
if (preset)
|
|
116
|
+
params.set("preset", preset);
|
|
117
|
+
if (keyword)
|
|
118
|
+
params.set("keyword", keyword);
|
|
119
|
+
const url = `https://mcp.yjzf.com/statement/branches${params.toString() ? "?" + params.toString() : ""}`;
|
|
120
|
+
debug("fetchBranches url", url);
|
|
121
|
+
const resp = await fetch(url, { method: "GET", headers });
|
|
122
|
+
if (!resp.ok) {
|
|
123
|
+
return {
|
|
124
|
+
content: [{ type: "text", text: `获取城市列表失败: ${resp.status} ${resp.statusText}` }],
|
|
125
|
+
isError: true,
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
const data = await resp.json();
|
|
129
|
+
debug("fetchBranches response", data);
|
|
130
|
+
if (!data.succeed) {
|
|
131
|
+
return {
|
|
132
|
+
content: [{ type: "text", text: `获取城市列表失败: ${data.msg}` }],
|
|
133
|
+
isError: true,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
return {
|
|
137
|
+
content: [{
|
|
138
|
+
type: "text",
|
|
139
|
+
text: JSON.stringify(data.data),
|
|
140
|
+
}],
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
async function fetchHierarchies(branchIds) {
|
|
144
|
+
if (!branchIds || branchIds.length === 0) {
|
|
145
|
+
return {
|
|
146
|
+
content: [{ type: "text", text: "get_hierarchies 需要提供 branchIds 参数" }],
|
|
147
|
+
isError: true,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
const apiKey = getApiKey();
|
|
151
|
+
const headers = {
|
|
152
|
+
Accept: "application/json",
|
|
153
|
+
"Content-Type": "application/json",
|
|
154
|
+
};
|
|
155
|
+
if (apiKey) {
|
|
156
|
+
headers["Authorization"] = `Bearer ${apiKey}`;
|
|
157
|
+
}
|
|
158
|
+
const body = { branchIds };
|
|
159
|
+
debug("fetchHierarchies body", body);
|
|
160
|
+
const resp = await fetch("http://localhost:3000/statement/hierarchies", {
|
|
161
|
+
method: "POST",
|
|
162
|
+
headers,
|
|
163
|
+
body: JSON.stringify(body),
|
|
164
|
+
});
|
|
165
|
+
if (!resp.ok) {
|
|
166
|
+
return {
|
|
167
|
+
content: [{ type: "text", text: `获取营销线层级失败: ${resp.status} ${resp.statusText}` }],
|
|
168
|
+
isError: true,
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
const data = await resp.json();
|
|
172
|
+
debug("fetchHierarchies response", data);
|
|
173
|
+
if (!data.succeed) {
|
|
174
|
+
return {
|
|
175
|
+
content: [{ type: "text", text: `获取营销线层级失败: ${data.msg}` }],
|
|
176
|
+
isError: true,
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
return {
|
|
180
|
+
content: [{
|
|
181
|
+
type: "text",
|
|
182
|
+
text: JSON.stringify(data.data),
|
|
183
|
+
}],
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
async function fetchStoreManagers(branchIds, bizlineIds) {
|
|
187
|
+
if (!branchIds || branchIds.length === 0) {
|
|
188
|
+
return {
|
|
189
|
+
content: [{ type: "text", text: "get_store_managers 需要提供 branchIds 参数" }],
|
|
190
|
+
isError: true,
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
if (!bizlineIds || bizlineIds.length === 0) {
|
|
194
|
+
return {
|
|
195
|
+
content: [{ type: "text", text: "get_store_managers 需要提供 bizlineIds 参数(即 get_hierarchies 返回的 key 值)" }],
|
|
196
|
+
isError: true,
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
const apiKey = getApiKey();
|
|
200
|
+
const headers = {
|
|
201
|
+
Accept: "application/json",
|
|
202
|
+
"Content-Type": "application/json",
|
|
203
|
+
};
|
|
204
|
+
if (apiKey) {
|
|
205
|
+
headers["Authorization"] = `Bearer ${apiKey}`;
|
|
206
|
+
}
|
|
207
|
+
const body = { branchIds, bizlineIds };
|
|
208
|
+
debug("fetchStoreManagers body", body);
|
|
209
|
+
const resp = await fetch("http://localhost:3000/statement/store_managers", {
|
|
210
|
+
method: "POST",
|
|
211
|
+
headers,
|
|
212
|
+
body: JSON.stringify(body),
|
|
213
|
+
});
|
|
214
|
+
if (!resp.ok) {
|
|
215
|
+
return {
|
|
216
|
+
content: [{ type: "text", text: `获取管理人员列表失败: ${resp.status} ${resp.statusText}` }],
|
|
217
|
+
isError: true,
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
const data = await resp.json();
|
|
221
|
+
debug("fetchStoreManagers response", data);
|
|
222
|
+
if (!data.succeed) {
|
|
223
|
+
return {
|
|
224
|
+
content: [{ type: "text", text: `获取管理人员列表失败: ${data.msg}` }],
|
|
225
|
+
isError: true,
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
return {
|
|
229
|
+
content: [{
|
|
230
|
+
type: "text",
|
|
231
|
+
text: JSON.stringify(data.data),
|
|
232
|
+
}],
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
async function fetchStatisticsTargets(statisticsScope, topName) {
|
|
236
|
+
const apiKey = getApiKey();
|
|
237
|
+
const headers = {
|
|
238
|
+
Accept: "application/json",
|
|
239
|
+
"Content-Type": "application/json",
|
|
240
|
+
};
|
|
241
|
+
if (apiKey) {
|
|
242
|
+
headers["Authorization"] = `Bearer ${apiKey}`;
|
|
243
|
+
}
|
|
244
|
+
const body = {
|
|
245
|
+
statisticsScope: statisticsScope ?? 5,
|
|
246
|
+
};
|
|
247
|
+
if (topName) {
|
|
248
|
+
body.topName = topName;
|
|
249
|
+
}
|
|
250
|
+
debug("fetchStatisticsTargets body", body);
|
|
251
|
+
const resp = await fetch("https://mcp.yjzf.com/statement/statistics_targets", {
|
|
252
|
+
method: "POST",
|
|
253
|
+
headers,
|
|
254
|
+
body: JSON.stringify(body),
|
|
255
|
+
});
|
|
256
|
+
if (!resp.ok) {
|
|
257
|
+
return {
|
|
258
|
+
content: [{ type: "text", text: `获取指标字典失败: ${resp.status} ${resp.statusText}` }],
|
|
259
|
+
isError: true,
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
const data = await resp.json();
|
|
263
|
+
debug("fetchStatisticsTargets response", data);
|
|
264
|
+
if (!data.succeed) {
|
|
265
|
+
return {
|
|
266
|
+
content: [{ type: "text", text: `获取指标字典失败: ${data.msg}` }],
|
|
267
|
+
isError: true,
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
return {
|
|
271
|
+
content: [{
|
|
272
|
+
type: "text",
|
|
273
|
+
text: JSON.stringify(data.data, null, 2),
|
|
274
|
+
}],
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
//# sourceMappingURL=statement_query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"statement_query.js","sourceRoot":"","sources":["../../src/tools/statement_query.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/env.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
export declare function getDataDir(): string;
|
|
2
2
|
export declare function getApiKey(): string | undefined;
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* 生成带日期前缀和时间戳后缀的文件名,确保同一天多次导出不会互相覆盖
|
|
5
5
|
* @param baseName 基础文件名(不含扩展名)
|
|
6
6
|
* @param extension 文件扩展名(不含点号)
|
|
7
7
|
* @param useYesterday 是否使用昨天的日期(默认为 true)
|
|
8
|
-
* @returns 格式为 YYYY-MM-
|
|
8
|
+
* @returns 格式为 YYYY-MM-DD_basename_HHmmss.extension 的文件名
|
|
9
9
|
*/
|
|
10
10
|
export declare function generateDatedFileName(baseName: string, extension: string, useYesterday?: boolean): string;
|
|
11
11
|
//# sourceMappingURL=env.d.ts.map
|
package/dist/utils/env.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/utils/env.ts"],"names":[],"mappings":"AAGA,wBAAgB,UAAU,IAAI,MAAM,CAanC;AAED,wBAAgB,SAAS,IAAI,MAAM,GAAG,SAAS,CAE9C;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,YAAY,GAAE,OAAc,GAC3B,MAAM,
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/utils/env.ts"],"names":[],"mappings":"AAGA,wBAAgB,UAAU,IAAI,MAAM,CAanC;AAED,wBAAgB,SAAS,IAAI,MAAM,GAAG,SAAS,CAE9C;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,YAAY,GAAE,OAAc,GAC3B,MAAM,CAcR"}
|
package/dist/utils/env.js
CHANGED
|
@@ -18,11 +18,11 @@ export function getApiKey() {
|
|
|
18
18
|
return process.env.MCP_YJZF_API_KEY;
|
|
19
19
|
}
|
|
20
20
|
/**
|
|
21
|
-
*
|
|
21
|
+
* 生成带日期前缀和时间戳后缀的文件名,确保同一天多次导出不会互相覆盖
|
|
22
22
|
* @param baseName 基础文件名(不含扩展名)
|
|
23
23
|
* @param extension 文件扩展名(不含点号)
|
|
24
24
|
* @param useYesterday 是否使用昨天的日期(默认为 true)
|
|
25
|
-
* @returns 格式为 YYYY-MM-
|
|
25
|
+
* @returns 格式为 YYYY-MM-DD_basename_HHmmss.extension 的文件名
|
|
26
26
|
*/
|
|
27
27
|
export function generateDatedFileName(baseName, extension, useYesterday = true) {
|
|
28
28
|
const now = new Date();
|
|
@@ -33,6 +33,10 @@ export function generateDatedFileName(baseName, extension, useYesterday = true)
|
|
|
33
33
|
const year = targetDate.getFullYear();
|
|
34
34
|
const month = String(targetDate.getMonth() + 1).padStart(2, "0");
|
|
35
35
|
const day = String(targetDate.getDate()).padStart(2, "0");
|
|
36
|
-
|
|
36
|
+
// 添加当前时间戳后缀避免同一天多次导出文件覆盖
|
|
37
|
+
const hours = String(now.getHours()).padStart(2, "0");
|
|
38
|
+
const minutes = String(now.getMinutes()).padStart(2, "0");
|
|
39
|
+
const seconds = String(now.getSeconds()).padStart(2, "0");
|
|
40
|
+
return `${year}-${month}-${day}_${hours}${minutes}${seconds}_${baseName}.${extension}`;
|
|
37
41
|
}
|
|
38
42
|
//# sourceMappingURL=env.js.map
|
package/dist/utils/env.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/utils/env.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B,MAAM,UAAU,UAAU;IACxB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;IACpC,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;QACpC,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;AACtC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CACnC,QAAgB,EAChB,SAAiB,EACjB,eAAwB,IAAI;IAE5B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACtD,IAAI,YAAY,EAAE,CAAC;QACjB,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IACxC,CAAC;IACD,MAAM,IAAI,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;IACtC,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACjE,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC1D,OAAO,GAAG,IAAI,IAAI,KAAK,IAAI,GAAG,IAAI,QAAQ,IAAI,SAAS,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/utils/env.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B,MAAM,UAAU,UAAU;IACxB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;IACpC,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;QACpC,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;AACtC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CACnC,QAAgB,EAChB,SAAiB,EACjB,eAAwB,IAAI;IAE5B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACtD,IAAI,YAAY,EAAE,CAAC;QACjB,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IACxC,CAAC;IACD,MAAM,IAAI,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;IACtC,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACjE,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC1D,yBAAyB;IACzB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC1D,OAAO,GAAG,IAAI,IAAI,KAAK,IAAI,GAAG,IAAI,KAAK,GAAG,OAAO,GAAG,OAAO,IAAI,QAAQ,IAAI,SAAS,EAAE,CAAC;AACzF,CAAC"}
|