@yjzf/mcp-server-yjzf 0.2.4 → 0.2.6
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 +20 -9
- package/dist/index.js.map +1 -1
- package/dist/tools/contract/investment_contract.d.ts +8 -0
- package/dist/tools/contract/investment_contract.d.ts.map +1 -0
- package/dist/tools/contract/investment_contract.js +100 -0
- package/dist/tools/contract/investment_contract.js.map +1 -0
- package/dist/tools/contract/lease_sale_contract_export.d.ts +30 -0
- package/dist/tools/contract/lease_sale_contract_export.d.ts.map +1 -0
- package/dist/tools/contract/lease_sale_contract_export.js +171 -0
- package/dist/tools/contract/lease_sale_contract_export.js.map +1 -0
- package/dist/tools/contract/new_house_contract_export.d.ts +14 -0
- package/dist/tools/contract/new_house_contract_export.d.ts.map +1 -0
- package/dist/tools/contract/new_house_contract_export.js +205 -0
- package/dist/tools/contract/new_house_contract_export.js.map +1 -0
- package/dist/tools/data/count_all_statement.d.ts +46 -0
- package/dist/tools/data/count_all_statement.d.ts.map +1 -0
- package/dist/tools/data/count_all_statement.js +322 -0
- package/dist/tools/data/count_all_statement.js.map +1 -0
- package/dist/tools/data/overview_by_c.d.ts +26 -0
- package/dist/tools/data/overview_by_c.d.ts.map +1 -0
- package/dist/tools/data/overview_by_c.js +190 -0
- package/dist/tools/data/overview_by_c.js.map +1 -0
- package/dist/tools/data/statement_query.d.ts +43 -0
- package/dist/tools/data/statement_query.d.ts.map +1 -0
- package/dist/tools/data/statement_query.js +430 -0
- package/dist/tools/data/statement_query.js.map +1 -0
- package/dist/tools/util/branch_select.d.ts +26 -0
- package/dist/tools/util/branch_select.d.ts.map +1 -0
- package/dist/tools/util/branch_select.js +50 -0
- package/dist/tools/util/branch_select.js.map +1 -0
- package/dist/tools/util/date_to_timestamp.d.ts +19 -0
- package/dist/tools/util/date_to_timestamp.d.ts.map +1 -0
- package/dist/tools/util/date_to_timestamp.js +45 -0
- package/dist/tools/util/date_to_timestamp.js.map +1 -0
- package/dist/tools/util/get_current_time.d.ts +13 -0
- package/dist/tools/util/get_current_time.d.ts.map +1 -0
- package/dist/tools/util/get_current_time.js +23 -0
- package/dist/tools/util/get_current_time.js.map +1 -0
- package/dist/tools/util/hello_world.d.ts +20 -0
- package/dist/tools/util/hello_world.d.ts.map +1 -0
- package/dist/tools/util/hello_world.js +47 -0
- package/dist/tools/util/hello_world.js.map +1 -0
- package/dist/utils/async-export.d.ts +37 -0
- package/dist/utils/async-export.d.ts.map +1 -0
- package/dist/utils/async-export.js +73 -0
- package/dist/utils/async-export.js.map +1 -0
- package/dist/utils/cities.d.ts +11 -0
- package/dist/utils/cities.d.ts.map +1 -0
- package/dist/utils/cities.js +22 -0
- package/dist/utils/cities.js.map +1 -0
- package/dist/utils/env.d.ts +0 -1
- package/dist/utils/env.d.ts.map +1 -1
- package/dist/utils/env.js +0 -3
- package/dist/utils/env.js.map +1 -1
- package/dist/utils/http.d.ts.map +1 -1
- package/dist/utils/http.js +5 -5
- package/dist/utils/http.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import * as z from "zod/v4";
|
|
2
|
+
type Action = "get_branches" | "get_hierarchies" | "get_store_managers" | "get_statistics_targets" | "get_query_guide" | "get_districts" | "get_trading_areas" | "get_sub_branches";
|
|
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
|
+
districtCodes?: string[];
|
|
12
|
+
}
|
|
13
|
+
export declare const name = "statement_query";
|
|
14
|
+
export declare const schema: {
|
|
15
|
+
description: string;
|
|
16
|
+
inputSchema: z.ZodObject<{
|
|
17
|
+
action: z.ZodEnum<{
|
|
18
|
+
get_branches: "get_branches";
|
|
19
|
+
get_hierarchies: "get_hierarchies";
|
|
20
|
+
get_store_managers: "get_store_managers";
|
|
21
|
+
get_statistics_targets: "get_statistics_targets";
|
|
22
|
+
get_query_guide: "get_query_guide";
|
|
23
|
+
get_districts: "get_districts";
|
|
24
|
+
get_trading_areas: "get_trading_areas";
|
|
25
|
+
get_sub_branches: "get_sub_branches";
|
|
26
|
+
}>;
|
|
27
|
+
statisticsScope: z.ZodOptional<z.ZodNumber>;
|
|
28
|
+
topName: z.ZodOptional<z.ZodString>;
|
|
29
|
+
preset: z.ZodOptional<z.ZodString>;
|
|
30
|
+
keyword: z.ZodOptional<z.ZodString>;
|
|
31
|
+
branchIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
32
|
+
bizlineIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
33
|
+
districtCodes: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
34
|
+
}, z.core.$strip>;
|
|
35
|
+
};
|
|
36
|
+
export declare function handler(args: StatementQueryArgs): Promise<{
|
|
37
|
+
content: {
|
|
38
|
+
type: "text";
|
|
39
|
+
text: string;
|
|
40
|
+
}[];
|
|
41
|
+
}>;
|
|
42
|
+
export {};
|
|
43
|
+
//# sourceMappingURL=statement_query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"statement_query.d.ts","sourceRoot":"","sources":["../../../src/tools/data/statement_query.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAS5B,KAAK,MAAM,GACP,cAAc,GACd,iBAAiB,GACjB,oBAAoB,GACpB,wBAAwB,GACxB,iBAAiB,GACjB,eAAe,GACf,mBAAmB,GACnB,kBAAkB,CAAC;AAEvB,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;IAEtB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AA2CD,eAAO,MAAM,IAAI,oBAAoB,CAAC;AAEtC,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;CA2DlB,CAAC;AAMF,wBAAsB,OAAO,CAAC,IAAI,EAAE,kBAAkB;;;;;GAuBrD"}
|
|
@@ -0,0 +1,430 @@
|
|
|
1
|
+
import * as z from "zod/v4";
|
|
2
|
+
import { getGatewayBaseUrl } from "../../utils/env.js";
|
|
3
|
+
import { buildGatewayHeaders } from "../../utils/http.js";
|
|
4
|
+
import { debug } from "../../utils/debug.js";
|
|
5
|
+
// ---------------------------------------------------------------------------
|
|
6
|
+
// 查询指南(静态数据)
|
|
7
|
+
// ---------------------------------------------------------------------------
|
|
8
|
+
const QUERY_GUIDE = {
|
|
9
|
+
dimensions: {
|
|
10
|
+
"5_城市公司": { required: ["branchIds"], optional: [] },
|
|
11
|
+
"7_营销线层级": { required: ["branchIds", "hierarchy", "storeManagerIds"], optional: [] },
|
|
12
|
+
"51_行政区": { required: ["branchIds"], optional: [] },
|
|
13
|
+
"52_商圈": { required: ["branchIds"], optional: ["districtCodes(仅当 branchIds.length == 1 时可选)"] },
|
|
14
|
+
"53_小区": { required: ["branchIds"], optional: ["districtCodes(仅当 branchIds.length == 1 时可选)", "tradingAreaIds(仅当 branchIds.length == 1 时可选)"] },
|
|
15
|
+
"1_经纪人": { required: ["branchIds"], optional: ["status(1-在职;2-离职)", "isEnabled(1-启用;0-禁用)"] },
|
|
16
|
+
"17_子公司": { required: ["branchIds"], optional: ["subBranchIds(仅当 branchIds.length == 1 时可选)"] },
|
|
17
|
+
},
|
|
18
|
+
callOrder: [
|
|
19
|
+
"1. statement_query({ action: 'get_query_guide' }) → 了解维度与条件的依赖关系",
|
|
20
|
+
"2. statement_query({ action: 'get_branches' }) → 确定城市公司",
|
|
21
|
+
"3. statement_query({ action: 'get_statistics_targets', statisticsScope }) → 先获取大类列表 → 再传 topName 获取具体指标",
|
|
22
|
+
"4. 若维度=7: statement_query({ action: 'get_hierarchies', branchIds }) → 获取营销线层级",
|
|
23
|
+
"5. 若维度=7: statement_query({ action: 'get_store_managers', branchIds, bizlineIds }) → 获取管理人员",
|
|
24
|
+
"6. 若维度=52/53 且 branchIds.length==1: statement_query({ action: 'get_districts', branchIds }) → 获取行政区列表(可选筛选)",
|
|
25
|
+
"7. 若维度=53 且已获取 districtCodes: statement_query({ action: 'get_trading_areas', branchIds, districtCodes }) → 获取商圈列表(可选筛选)",
|
|
26
|
+
"8. 若维度=17 且 branchIds.length==1: statement_query({ action: 'get_sub_branches', branchIds }) → 获取子公司列表(可选筛选)",
|
|
27
|
+
"9. count_all_statement({ statisticsScope, branchIds, agentCodeQueries, ... }) → 导出报表",
|
|
28
|
+
],
|
|
29
|
+
notes: [
|
|
30
|
+
"不同 statisticsScope 返回的指标字典不同,获取指标时需传入维度数字",
|
|
31
|
+
"不传 statisticsScope 调用 count_all_statement 则走旧的固定查询逻辑",
|
|
32
|
+
"agentCodeQueries 支持父级 code 和子节点 code:用户选父级/大类时传父级 code;用户明确指定子项时传 childNodes 中的子节点 code,Gateway 会补全为父级对象并仅保留选中的子项",
|
|
33
|
+
"时间默认为当月第一天到昨天",
|
|
34
|
+
"营销线层级维度: 不选管理人员=全选",
|
|
35
|
+
"小区(53)维度不需要传时间参数(查截止当前数据)",
|
|
36
|
+
"经纪人(1)维度: status/isEnabled 为静态选项(1=在职/2=离职, 1=启用/0=禁用),无需查询接口获取",
|
|
37
|
+
"当前已实现维度: 城市公司(5)、营销线层级(7)、行政区(51)、商圈(52)、小区(53)、经纪人(1)、子公司(17)",
|
|
38
|
+
],
|
|
39
|
+
};
|
|
40
|
+
// ---------------------------------------------------------------------------
|
|
41
|
+
// 工具定义
|
|
42
|
+
// ---------------------------------------------------------------------------
|
|
43
|
+
export const name = "statement_query";
|
|
44
|
+
export const schema = {
|
|
45
|
+
description: `数据指标报表的查询条件助手。在调用 count_all_statement 导出报表前,使用此工具逐步获取可选的查询条件值。
|
|
46
|
+
|
|
47
|
+
⚠️ get_branches 使用规范:
|
|
48
|
+
- 用户说"所有城市"/"全部城市" → 不传 preset 和 keyword,返回 ERP 全量城市列表
|
|
49
|
+
- 用户指定具体直营城市名(如"广州""南宁")→ 传 preset="直营",从返回的直营城市中匹配
|
|
50
|
+
- keyword 仅用于非直营城市或探索性搜索,返回多条相似结果时必须让用户确认
|
|
51
|
+
|
|
52
|
+
支持的 action:
|
|
53
|
+
- "get_branches" → 获取城市公司列表(不传参=全量,preset="直营"=仅直营城市,keyword=模糊搜索)
|
|
54
|
+
- "get_hierarchies" → 获取营销线层级选项(需传 branchIds。仅营销线层级维度(7)时使用)
|
|
55
|
+
- "get_store_managers" → 根据层级获取管理人员列表(需传 branchIds + bizlineIds。仅营销线层级维度(7)时使用)
|
|
56
|
+
- "get_statistics_targets" → 获取统计指标(不传 topName 返回22个大类名称;传 topName 返回该类下完整指标明细。需传 statisticsScope 指定维度)
|
|
57
|
+
- "get_query_guide" → 获取各统计维度所需条件的依赖关系和调用顺序说明
|
|
58
|
+
- "get_districts" → 获取行政区列表(需传 branchIds 且长度必须为1。仅 scope=52/53 时使用,作为可选筛选条件)
|
|
59
|
+
- "get_trading_areas" → 获取商圈列表(需传 branchIds + districtCodes。仅 scope=53 时使用,作为可选筛选条件)
|
|
60
|
+
- "get_sub_branches" → 获取子公司列表(需传 branchIds 且长度必须为1。仅 scope=17 时使用,作为可选筛选条件)
|
|
61
|
+
|
|
62
|
+
典型调用顺序:
|
|
63
|
+
1. get_query_guide → 了解维度与条件的依赖关系
|
|
64
|
+
2. get_branches → 确定城市公司(全部城市不传参;指定直营城市传 preset="直营")
|
|
65
|
+
3. get_statistics_targets → 先获取大类列表 → 再传 topName 获取具体指标
|
|
66
|
+
4. 若维度=7: get_hierarchies → 获取营销线层级 → get_store_managers → 获取管理人员
|
|
67
|
+
5. 若维度=52/53: get_districts → 获取行政区列表(可选筛选)
|
|
68
|
+
6. 若维度=53: get_trading_areas → 获取商圈列表(可选筛选)
|
|
69
|
+
7. 若维度=17: get_sub_branches → 获取子公司列表(可选筛选)
|
|
70
|
+
8. 条件收集完毕后调用 count_all_statement 导出`,
|
|
71
|
+
inputSchema: z.object({
|
|
72
|
+
action: z.enum([
|
|
73
|
+
"get_branches", "get_hierarchies", "get_store_managers",
|
|
74
|
+
"get_statistics_targets", "get_query_guide",
|
|
75
|
+
"get_districts", // 获取行政区列表
|
|
76
|
+
"get_trading_areas", // 获取商圈列表
|
|
77
|
+
"get_sub_branches", // 获取子公司列表
|
|
78
|
+
]).describe("要执行的查询动作"),
|
|
79
|
+
// get_statistics_targets 参数
|
|
80
|
+
statisticsScope: z.number().optional()
|
|
81
|
+
.describe("统计维度数字,get_statistics_targets 时传入。5=城市公司, 7=营销线层级, 51=行政区, 52=商圈, 53=小区, 1=经纪人, 17=子公司。不同维度返回不同指标字典。默认5"),
|
|
82
|
+
topName: z.string().optional()
|
|
83
|
+
.describe("指标大类名称,get_statistics_targets 时可选。不传返回所有大类名称列表;传入则返回该大类下的完整指标明细"),
|
|
84
|
+
// get_branches 参数
|
|
85
|
+
preset: z.string().optional()
|
|
86
|
+
.describe("预设筛选,get_branches 时可选。传 '直营' 只返回直营城市。不传则返回全量城市。用户说'所有城市'/'全部城市'时不要传此参数"),
|
|
87
|
+
keyword: z.string().optional()
|
|
88
|
+
.describe("关键词搜索,get_branches 时可选。仅用于非直营城市或不确定城市类型时的探索性搜索。返回多条相似结果时必须让用户确认选择,禁止自动选取"),
|
|
89
|
+
// get_hierarchies / get_store_managers / get_districts / get_trading_areas 共用参数
|
|
90
|
+
branchIds: z.array(z.string()).optional()
|
|
91
|
+
.describe("城市公司 ID 列表。get_hierarchies / get_store_managers / get_districts / get_trading_areas 时必传"),
|
|
92
|
+
bizlineIds: z.array(z.string()).optional()
|
|
93
|
+
.describe("营销线层级 ID 列表(即 get_hierarchies 返回的 key 值),get_store_managers 时必传"),
|
|
94
|
+
// Phase 2: get_trading_areas 参数
|
|
95
|
+
districtCodes: z.array(z.string()).optional()
|
|
96
|
+
.describe("行政区编码列表,get_trading_areas 时必传。值来自 get_districts 返回结果的 code 字段"),
|
|
97
|
+
}),
|
|
98
|
+
};
|
|
99
|
+
// ---------------------------------------------------------------------------
|
|
100
|
+
// Handler
|
|
101
|
+
// ---------------------------------------------------------------------------
|
|
102
|
+
export async function handler(args) {
|
|
103
|
+
debug("statement_query args", args);
|
|
104
|
+
switch (args.action) {
|
|
105
|
+
// Phase 1 原有 actions ↓
|
|
106
|
+
case "get_branches":
|
|
107
|
+
return await fetchBranches(args.preset, args.keyword);
|
|
108
|
+
case "get_hierarchies":
|
|
109
|
+
return await fetchHierarchies(args.branchIds);
|
|
110
|
+
case "get_store_managers":
|
|
111
|
+
return await fetchStoreManagers(args.branchIds, args.bizlineIds);
|
|
112
|
+
case "get_statistics_targets":
|
|
113
|
+
return await fetchStatisticsTargets(args.statisticsScope, args.topName);
|
|
114
|
+
case "get_query_guide":
|
|
115
|
+
return getQueryGuide();
|
|
116
|
+
// Phase 2 新增 actions ↓
|
|
117
|
+
case "get_districts":
|
|
118
|
+
return await fetchDistricts(args.branchIds);
|
|
119
|
+
case "get_trading_areas":
|
|
120
|
+
return await fetchTradingAreas(args.branchIds, args.districtCodes);
|
|
121
|
+
case "get_sub_branches":
|
|
122
|
+
return await fetchSubBranches(args.branchIds);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
// ---------------------------------------------------------------------------
|
|
126
|
+
// Phase 1 原有 Action 实现
|
|
127
|
+
// ---------------------------------------------------------------------------
|
|
128
|
+
function getQueryGuide() {
|
|
129
|
+
return {
|
|
130
|
+
content: [{
|
|
131
|
+
type: "text",
|
|
132
|
+
text: JSON.stringify(QUERY_GUIDE, null, 2),
|
|
133
|
+
}],
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
async function fetchBranches(preset, keyword) {
|
|
137
|
+
const headers = buildGatewayHeaders();
|
|
138
|
+
const params = new URLSearchParams();
|
|
139
|
+
if (preset)
|
|
140
|
+
params.set("preset", preset);
|
|
141
|
+
if (keyword)
|
|
142
|
+
params.set("keyword", keyword);
|
|
143
|
+
const url = `${getGatewayBaseUrl()}/statement/branches${params.toString() ? "?" + params.toString() : ""}`;
|
|
144
|
+
debug("fetchBranches url", url);
|
|
145
|
+
const resp = await fetch(url, { method: "GET", headers });
|
|
146
|
+
if (!resp.ok) {
|
|
147
|
+
return {
|
|
148
|
+
content: [{ type: "text", text: `获取城市列表失败: ${resp.status} ${resp.statusText}` }],
|
|
149
|
+
isError: true,
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
const data = await resp.json();
|
|
153
|
+
debug("fetchBranches response", data);
|
|
154
|
+
if (!data.succeed) {
|
|
155
|
+
return {
|
|
156
|
+
content: [{ type: "text", text: `获取城市列表失败: ${data.msg}` }],
|
|
157
|
+
isError: true,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
return {
|
|
161
|
+
content: [{
|
|
162
|
+
type: "text",
|
|
163
|
+
text: JSON.stringify(data.data),
|
|
164
|
+
}],
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
async function fetchHierarchies(branchIds) {
|
|
168
|
+
if (!branchIds || branchIds.length === 0) {
|
|
169
|
+
return {
|
|
170
|
+
content: [{ type: "text", text: "get_hierarchies 需要提供 branchIds 参数" }],
|
|
171
|
+
isError: true,
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
const headers = buildGatewayHeaders();
|
|
175
|
+
const body = { branchIds };
|
|
176
|
+
debug("fetchHierarchies body", body);
|
|
177
|
+
const resp = await fetch(`${getGatewayBaseUrl()}/statement/hierarchies`, {
|
|
178
|
+
method: "POST",
|
|
179
|
+
headers,
|
|
180
|
+
body: JSON.stringify(body),
|
|
181
|
+
});
|
|
182
|
+
if (!resp.ok) {
|
|
183
|
+
return {
|
|
184
|
+
content: [{ type: "text", text: `获取营销线层级失败: ${resp.status} ${resp.statusText}` }],
|
|
185
|
+
isError: true,
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
const data = await resp.json();
|
|
189
|
+
debug("fetchHierarchies response", data);
|
|
190
|
+
if (!data.succeed) {
|
|
191
|
+
return {
|
|
192
|
+
content: [{ type: "text", text: `获取营销线层级失败: ${data.msg}` }],
|
|
193
|
+
isError: true,
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
return {
|
|
197
|
+
content: [{
|
|
198
|
+
type: "text",
|
|
199
|
+
text: JSON.stringify(data.data),
|
|
200
|
+
}],
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
async function fetchStoreManagers(branchIds, bizlineIds) {
|
|
204
|
+
if (!branchIds || branchIds.length === 0) {
|
|
205
|
+
return {
|
|
206
|
+
content: [{ type: "text", text: "get_store_managers 需要提供 branchIds 参数" }],
|
|
207
|
+
isError: true,
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
if (!bizlineIds || bizlineIds.length === 0) {
|
|
211
|
+
return {
|
|
212
|
+
content: [{ type: "text", text: "get_store_managers 需要提供 bizlineIds 参数(即 get_hierarchies 返回的 key 值)" }],
|
|
213
|
+
isError: true,
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
const headers = buildGatewayHeaders();
|
|
217
|
+
const body = { branchIds, bizlineIds };
|
|
218
|
+
debug("fetchStoreManagers body", body);
|
|
219
|
+
const resp = await fetch(`${getGatewayBaseUrl()}/statement/store_managers`, {
|
|
220
|
+
method: "POST",
|
|
221
|
+
headers,
|
|
222
|
+
body: JSON.stringify(body),
|
|
223
|
+
});
|
|
224
|
+
if (!resp.ok) {
|
|
225
|
+
return {
|
|
226
|
+
content: [{ type: "text", text: `获取管理人员列表失败: ${resp.status} ${resp.statusText}` }],
|
|
227
|
+
isError: true,
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
const data = await resp.json();
|
|
231
|
+
debug("fetchStoreManagers response", data);
|
|
232
|
+
if (!data.succeed) {
|
|
233
|
+
return {
|
|
234
|
+
content: [{ type: "text", text: `获取管理人员列表失败: ${data.msg}` }],
|
|
235
|
+
isError: true,
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
return {
|
|
239
|
+
content: [{
|
|
240
|
+
type: "text",
|
|
241
|
+
text: JSON.stringify(data.data),
|
|
242
|
+
}],
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
async function fetchStatisticsTargets(statisticsScope, topName) {
|
|
246
|
+
const headers = buildGatewayHeaders();
|
|
247
|
+
const body = {
|
|
248
|
+
statisticsScope: statisticsScope ?? 5,
|
|
249
|
+
};
|
|
250
|
+
if (topName) {
|
|
251
|
+
body.topName = topName;
|
|
252
|
+
}
|
|
253
|
+
debug("fetchStatisticsTargets body", body);
|
|
254
|
+
const resp = await fetch(`${getGatewayBaseUrl()}/statement/statistics_targets`, {
|
|
255
|
+
method: "POST",
|
|
256
|
+
headers,
|
|
257
|
+
body: JSON.stringify(body),
|
|
258
|
+
});
|
|
259
|
+
if (!resp.ok) {
|
|
260
|
+
return {
|
|
261
|
+
content: [{ type: "text", text: `获取指标字典失败: ${resp.status} ${resp.statusText}` }],
|
|
262
|
+
isError: true,
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
const data = await resp.json();
|
|
266
|
+
debug("fetchStatisticsTargets response", data);
|
|
267
|
+
if (!data.succeed) {
|
|
268
|
+
return {
|
|
269
|
+
content: [{ type: "text", text: `获取指标字典失败: ${data.msg}` }],
|
|
270
|
+
isError: true,
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
return {
|
|
274
|
+
content: [{
|
|
275
|
+
type: "text",
|
|
276
|
+
text: JSON.stringify(data.data, null, 2),
|
|
277
|
+
}],
|
|
278
|
+
};
|
|
279
|
+
}
|
|
280
|
+
// ---------------------------------------------------------------------------
|
|
281
|
+
// Phase 2: 行政区/商圈/小区维度 Action 实现
|
|
282
|
+
// ---------------------------------------------------------------------------
|
|
283
|
+
/**
|
|
284
|
+
* 获取行政区列表(scope=52/53 时的可选筛选条件)
|
|
285
|
+
* 仅支持单个城市公司(branchIds.length === 1)
|
|
286
|
+
*/
|
|
287
|
+
async function fetchDistricts(branchIds) {
|
|
288
|
+
if (!branchIds || branchIds.length === 0) {
|
|
289
|
+
return {
|
|
290
|
+
content: [{ type: "text", text: "get_districts 需要提供 branchIds 参数" }],
|
|
291
|
+
isError: true,
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
if (branchIds.length !== 1) {
|
|
295
|
+
return {
|
|
296
|
+
content: [{ type: "text", text: "get_districts 仅支持单个城市公司(branchIds.length 必须为 1)" }],
|
|
297
|
+
isError: true,
|
|
298
|
+
};
|
|
299
|
+
}
|
|
300
|
+
const headers = buildGatewayHeaders();
|
|
301
|
+
const body = { branchIds };
|
|
302
|
+
debug("fetchDistricts body", body);
|
|
303
|
+
const resp = await fetch(`${getGatewayBaseUrl()}/statement/districts`, {
|
|
304
|
+
method: "POST",
|
|
305
|
+
headers,
|
|
306
|
+
body: JSON.stringify(body),
|
|
307
|
+
});
|
|
308
|
+
if (!resp.ok) {
|
|
309
|
+
return {
|
|
310
|
+
content: [{ type: "text", text: `获取行政区列表失败: ${resp.status} ${resp.statusText}` }],
|
|
311
|
+
isError: true,
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
const data = await resp.json();
|
|
315
|
+
debug("fetchDistricts response", data);
|
|
316
|
+
if (!data.succeed) {
|
|
317
|
+
return {
|
|
318
|
+
content: [{ type: "text", text: `获取行政区列表失败: ${data.msg}` }],
|
|
319
|
+
isError: true,
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
return {
|
|
323
|
+
content: [{
|
|
324
|
+
type: "text",
|
|
325
|
+
text: JSON.stringify(data.data),
|
|
326
|
+
}],
|
|
327
|
+
};
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* 获取商圈列表(scope=53 时的可选筛选条件)
|
|
331
|
+
* 需要先通过 get_districts 获取 districtCodes
|
|
332
|
+
*/
|
|
333
|
+
async function fetchTradingAreas(branchIds, districtCodes) {
|
|
334
|
+
if (!branchIds || branchIds.length === 0) {
|
|
335
|
+
return {
|
|
336
|
+
content: [{ type: "text", text: "get_trading_areas 需要提供 branchIds 参数" }],
|
|
337
|
+
isError: true,
|
|
338
|
+
};
|
|
339
|
+
}
|
|
340
|
+
if (branchIds.length !== 1) {
|
|
341
|
+
return {
|
|
342
|
+
content: [{ type: "text", text: "get_trading_areas 仅支持单个城市公司(branchIds.length 必须为 1)" }],
|
|
343
|
+
isError: true,
|
|
344
|
+
};
|
|
345
|
+
}
|
|
346
|
+
if (!districtCodes || districtCodes.length === 0) {
|
|
347
|
+
return {
|
|
348
|
+
content: [{ type: "text", text: "get_trading_areas 需要提供 districtCodes 参数(先通过 get_districts 获取)" }],
|
|
349
|
+
isError: true,
|
|
350
|
+
};
|
|
351
|
+
}
|
|
352
|
+
const headers = buildGatewayHeaders();
|
|
353
|
+
const body = { branchIds, districtCodes };
|
|
354
|
+
debug("fetchTradingAreas body", body);
|
|
355
|
+
const resp = await fetch(`${getGatewayBaseUrl()}/statement/trading_areas`, {
|
|
356
|
+
method: "POST",
|
|
357
|
+
headers,
|
|
358
|
+
body: JSON.stringify(body),
|
|
359
|
+
});
|
|
360
|
+
if (!resp.ok) {
|
|
361
|
+
return {
|
|
362
|
+
content: [{ type: "text", text: `获取商圈列表失败: ${resp.status} ${resp.statusText}` }],
|
|
363
|
+
isError: true,
|
|
364
|
+
};
|
|
365
|
+
}
|
|
366
|
+
const data = await resp.json();
|
|
367
|
+
debug("fetchTradingAreas response", data);
|
|
368
|
+
if (!data.succeed) {
|
|
369
|
+
return {
|
|
370
|
+
content: [{ type: "text", text: `获取商圈列表失败: ${data.msg}` }],
|
|
371
|
+
isError: true,
|
|
372
|
+
};
|
|
373
|
+
}
|
|
374
|
+
return {
|
|
375
|
+
content: [{
|
|
376
|
+
type: "text",
|
|
377
|
+
text: JSON.stringify(data.data),
|
|
378
|
+
}],
|
|
379
|
+
};
|
|
380
|
+
}
|
|
381
|
+
// ---------------------------------------------------------------------------
|
|
382
|
+
// 子公司维度 Action 实现
|
|
383
|
+
// ---------------------------------------------------------------------------
|
|
384
|
+
/**
|
|
385
|
+
* 获取子公司列表(scope=17 时的可选筛选条件)
|
|
386
|
+
* 仅支持单个城市公司(branchIds.length === 1)
|
|
387
|
+
*/
|
|
388
|
+
async function fetchSubBranches(branchIds) {
|
|
389
|
+
if (!branchIds || branchIds.length === 0) {
|
|
390
|
+
return {
|
|
391
|
+
content: [{ type: "text", text: "get_sub_branches 需要提供 branchIds 参数" }],
|
|
392
|
+
isError: true,
|
|
393
|
+
};
|
|
394
|
+
}
|
|
395
|
+
if (branchIds.length !== 1) {
|
|
396
|
+
return {
|
|
397
|
+
content: [{ type: "text", text: "get_sub_branches 仅支持单个城市公司(branchIds.length 必须为 1)" }],
|
|
398
|
+
isError: true,
|
|
399
|
+
};
|
|
400
|
+
}
|
|
401
|
+
const headers = buildGatewayHeaders();
|
|
402
|
+
const body = { branchIds };
|
|
403
|
+
debug("fetchSubBranches body", body);
|
|
404
|
+
const resp = await fetch(`${getGatewayBaseUrl()}/statement/sub_branches`, {
|
|
405
|
+
method: "POST",
|
|
406
|
+
headers,
|
|
407
|
+
body: JSON.stringify(body),
|
|
408
|
+
});
|
|
409
|
+
if (!resp.ok) {
|
|
410
|
+
return {
|
|
411
|
+
content: [{ type: "text", text: `获取子公司列表失败: ${resp.status} ${resp.statusText}` }],
|
|
412
|
+
isError: true,
|
|
413
|
+
};
|
|
414
|
+
}
|
|
415
|
+
const data = await resp.json();
|
|
416
|
+
debug("fetchSubBranches response", data);
|
|
417
|
+
if (!data.succeed) {
|
|
418
|
+
return {
|
|
419
|
+
content: [{ type: "text", text: `获取子公司列表失败: ${data.msg}` }],
|
|
420
|
+
isError: true,
|
|
421
|
+
};
|
|
422
|
+
}
|
|
423
|
+
return {
|
|
424
|
+
content: [{
|
|
425
|
+
type: "text",
|
|
426
|
+
text: JSON.stringify(data.data),
|
|
427
|
+
}],
|
|
428
|
+
};
|
|
429
|
+
}
|
|
430
|
+
//# sourceMappingURL=statement_query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"statement_query.js","sourceRoot":"","sources":["../../../src/tools/data/statement_query.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import * as z from "zod/v4";
|
|
2
|
+
export declare const name = "branch_select";
|
|
3
|
+
export declare const schema: {
|
|
4
|
+
description: string;
|
|
5
|
+
inputSchema: z.ZodObject<{
|
|
6
|
+
preset: z.ZodOptional<z.ZodString>;
|
|
7
|
+
keyword: z.ZodOptional<z.ZodString>;
|
|
8
|
+
}, z.core.$strip>;
|
|
9
|
+
};
|
|
10
|
+
export declare function handler(args: {
|
|
11
|
+
preset?: string;
|
|
12
|
+
keyword?: string;
|
|
13
|
+
}): Promise<{
|
|
14
|
+
content: {
|
|
15
|
+
type: "text";
|
|
16
|
+
text: string;
|
|
17
|
+
}[];
|
|
18
|
+
isError: boolean;
|
|
19
|
+
} | {
|
|
20
|
+
content: {
|
|
21
|
+
type: "text";
|
|
22
|
+
text: string;
|
|
23
|
+
}[];
|
|
24
|
+
isError?: undefined;
|
|
25
|
+
}>;
|
|
26
|
+
//# sourceMappingURL=branch_select.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"branch_select.d.ts","sourceRoot":"","sources":["../../../src/tools/util/branch_select.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAS5B,eAAO,MAAM,IAAI,kBAAkB,CAAC;AAEpC,eAAO,MAAM,MAAM;;;;;;CASlB,CAAC;AAEF,wBAAsB,OAAO,CAAC,IAAI,EAAE;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;;;;;;;;;;;;GAoCA"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import * as z from "zod/v4";
|
|
2
|
+
import { buildGatewayHeaders } from "../../utils/http.js";
|
|
3
|
+
import { getGatewayBaseUrl } from "../../utils/env.js";
|
|
4
|
+
import { debug } from "../../utils/debug.js";
|
|
5
|
+
// ---------------------------------------------------------------------------
|
|
6
|
+
// 工具导出
|
|
7
|
+
// ---------------------------------------------------------------------------
|
|
8
|
+
export const name = "branch_select";
|
|
9
|
+
export const schema = {
|
|
10
|
+
description: "获取可选的城市公司列表(单选)。需要选择城市公司时调用此工具,返回的 branchId 和 cityCode 作为其他工具(如 contract_data_report_export)的必填参数。支持按关键词搜索和直营城市预设筛选。",
|
|
11
|
+
inputSchema: z.object({
|
|
12
|
+
preset: z.string().optional()
|
|
13
|
+
.describe("预设筛选: '直营'=仅直营城市。不传返回全量城市"),
|
|
14
|
+
keyword: z.string().optional()
|
|
15
|
+
.describe("按城市名称关键词搜索"),
|
|
16
|
+
}),
|
|
17
|
+
};
|
|
18
|
+
export async function handler(args) {
|
|
19
|
+
debug("branch_select args", args);
|
|
20
|
+
const headers = buildGatewayHeaders();
|
|
21
|
+
const params = new URLSearchParams();
|
|
22
|
+
if (args.preset)
|
|
23
|
+
params.set("preset", args.preset);
|
|
24
|
+
if (args.keyword)
|
|
25
|
+
params.set("keyword", args.keyword);
|
|
26
|
+
const url = `${getGatewayBaseUrl()}/statement/branches${params.toString() ? "?" + params.toString() : ""}`;
|
|
27
|
+
debug("branch_select url", url);
|
|
28
|
+
const resp = await fetch(url, { method: "GET", headers });
|
|
29
|
+
if (!resp.ok) {
|
|
30
|
+
return {
|
|
31
|
+
content: [{ type: "text", text: `获取城市公司列表失败: ${resp.status} ${resp.statusText}` }],
|
|
32
|
+
isError: true,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
const data = await resp.json();
|
|
36
|
+
debug("branch_select response", data);
|
|
37
|
+
if (!data.succeed) {
|
|
38
|
+
return {
|
|
39
|
+
content: [{ type: "text", text: `获取城市公司列表失败: ${data.msg}` }],
|
|
40
|
+
isError: true,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
return {
|
|
44
|
+
content: [{
|
|
45
|
+
type: "text",
|
|
46
|
+
text: JSON.stringify(data.data),
|
|
47
|
+
}],
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=branch_select.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"branch_select.js","sourceRoot":"","sources":["../../../src/tools/util/branch_select.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE7C,8EAA8E;AAC9E,OAAO;AACP,8EAA8E;AAE9E,MAAM,CAAC,MAAM,IAAI,GAAG,eAAe,CAAC;AAEpC,MAAM,CAAC,MAAM,MAAM,GAAG;IAClB,WAAW,EACP,sHAAsH;IAC1H,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QAClB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aACxB,QAAQ,CAAC,2BAA2B,CAAC;QAC1C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aACzB,QAAQ,CAAC,YAAY,CAAC;KAC9B,CAAC;CACL,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAG7B;IACG,KAAK,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;IAElC,MAAM,OAAO,GAAG,mBAAmB,EAAE,CAAC;IAEtC,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IACrC,IAAI,IAAI,CAAC,MAAM;QAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACnD,IAAI,IAAI,CAAC,OAAO;QAAE,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAEtD,MAAM,GAAG,GAAG,GAAG,iBAAiB,EAAE,sBAAsB,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC3G,KAAK,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;IAEhC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IAC1D,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QACX,OAAO;YACH,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,eAAe,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;YAC3F,OAAO,EAAE,IAAI;SAChB,CAAC;IACN,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAuD,CAAC;IACpF,KAAK,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC;IAEtC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAChB,OAAO;YACH,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,eAAe,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YACrE,OAAO,EAAE,IAAI;SAChB,CAAC;IACN,CAAC;IAED,OAAO;QACH,OAAO,EAAE,CAAC;gBACN,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;aAClC,CAAC;KACL,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as z from "zod/v4";
|
|
2
|
+
export declare const name = "date_to_timestamp";
|
|
3
|
+
export declare const schema: {
|
|
4
|
+
description: string;
|
|
5
|
+
inputSchema: z.ZodObject<{
|
|
6
|
+
date: z.ZodString;
|
|
7
|
+
endOfDay: z.ZodOptional<z.ZodBoolean>;
|
|
8
|
+
}, z.core.$strip>;
|
|
9
|
+
};
|
|
10
|
+
export declare function handler(args: {
|
|
11
|
+
date: string;
|
|
12
|
+
endOfDay?: boolean;
|
|
13
|
+
}): Promise<{
|
|
14
|
+
content: {
|
|
15
|
+
type: "text";
|
|
16
|
+
text: string;
|
|
17
|
+
}[];
|
|
18
|
+
}>;
|
|
19
|
+
//# sourceMappingURL=date_to_timestamp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date_to_timestamp.d.ts","sourceRoot":"","sources":["../../../src/tools/util/date_to_timestamp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAE5B,eAAO,MAAM,IAAI,sBAAsB,CAAC;AAExC,eAAO,MAAM,MAAM;;;;;;CAUlB,CAAC;AAEF,wBAAsB,OAAO,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE;;;;;GAgCvE"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import * as z from "zod/v4";
|
|
2
|
+
export const name = "date_to_timestamp";
|
|
3
|
+
export const schema = {
|
|
4
|
+
description: "将 yyyymmdd 格式的日期转换为毫秒时间戳(北京时间)。默认返回当天 00:00:00 的时间戳,传 endOfDay=true 返回当天 23:59:59.999 的时间戳。用于 startTime 时不传 endOfDay,用于 endTime 时传 endOfDay=true",
|
|
5
|
+
inputSchema: z.object({
|
|
6
|
+
date: z.string()
|
|
7
|
+
.length(8, "日期必须是 8 位数字格式")
|
|
8
|
+
.regex(/^\d{8}$/, "日期必须是 yyyymmdd 格式,如 20250416")
|
|
9
|
+
.describe("yyyymmdd 格式的日期字符串,例如 20250416"),
|
|
10
|
+
endOfDay: z.boolean().optional()
|
|
11
|
+
.describe("是否返回当天结束时间(23:59:59.999)。用于 endTime 时传 true,用于 startTime 时不传或传 false"),
|
|
12
|
+
}),
|
|
13
|
+
};
|
|
14
|
+
export async function handler(args) {
|
|
15
|
+
const { date, endOfDay } = args;
|
|
16
|
+
// 解析 yyyymmdd 格式
|
|
17
|
+
const year = parseInt(date.substring(0, 4), 10);
|
|
18
|
+
const month = parseInt(date.substring(4, 6), 10) - 1; // 月份从 0 开始
|
|
19
|
+
const day = parseInt(date.substring(6, 8), 10);
|
|
20
|
+
// 创建北京时间(UTC+8)的日期对象
|
|
21
|
+
// 使用 Date.UTC 创建 UTC 时间,然后减去 8 小时偏移量来得到北京时间的起始点
|
|
22
|
+
let beijingTimestamp;
|
|
23
|
+
if (endOfDay) {
|
|
24
|
+
// 当天 23:59:59.999 北京时间
|
|
25
|
+
beijingTimestamp = Date.UTC(year, month, day, -8 + 23, 59, 59, 999);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
// 当天 00:00:00.000 北京时间
|
|
29
|
+
beijingTimestamp = Date.UTC(year, month, day, -8, 0, 0, 0);
|
|
30
|
+
}
|
|
31
|
+
return {
|
|
32
|
+
content: [
|
|
33
|
+
{
|
|
34
|
+
type: "text",
|
|
35
|
+
text: JSON.stringify({
|
|
36
|
+
date: date,
|
|
37
|
+
endOfDay: !!endOfDay,
|
|
38
|
+
timestamp: beijingTimestamp,
|
|
39
|
+
formattedTime: new Date(beijingTimestamp).toISOString(),
|
|
40
|
+
}, null, 2),
|
|
41
|
+
},
|
|
42
|
+
],
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=date_to_timestamp.js.map
|