chore: update queryEngine and sql
This commit is contained in:
7469
docs/init_v2.0.sql
Normal file
7469
docs/init_v2.0.sql
Normal file
File diff suppressed because it is too large
Load Diff
11578
docs/niushopv5-database.sql
Normal file
11578
docs/niushopv5-database.sql
Normal file
File diff suppressed because it is too large
Load Diff
@@ -15,7 +15,7 @@
|
|||||||
],
|
],
|
||||||
"body": {
|
"body": {
|
||||||
"mode": "raw",
|
"mode": "raw",
|
||||||
"raw": "{\n \"question\": \"商家 TechStore 昨天的 GMV 是多少?\"\n}"
|
"raw": "{\"question\": \"商家 测试商家 昨天的 GMV 是多少?\"}"
|
||||||
},
|
},
|
||||||
"url": "{{base_url}}/admin/query"
|
"url": "{{base_url}}/admin/query"
|
||||||
}
|
}
|
||||||
@@ -30,7 +30,7 @@
|
|||||||
],
|
],
|
||||||
"body": {
|
"body": {
|
||||||
"mode": "raw",
|
"mode": "raw",
|
||||||
"raw": "{\n \"question\": \"订单 L20251127001 的状态是什么?\"\n}"
|
"raw": "{\"question\": \"订单 2025052215583773001 的状态是什么?\"}"
|
||||||
},
|
},
|
||||||
"url": "{{base_url}}/admin/query"
|
"url": "{{base_url}}/admin/query"
|
||||||
}
|
}
|
||||||
@@ -45,7 +45,7 @@
|
|||||||
],
|
],
|
||||||
"body": {
|
"body": {
|
||||||
"mode": "raw",
|
"mode": "raw",
|
||||||
"raw": "{\n \"question\": \"用户 12345 的信息?\"\n}"
|
"raw": "{\"question\": \"用户 3750 的信息?\"}"
|
||||||
},
|
},
|
||||||
"url": "{{base_url}}/admin/query"
|
"url": "{{base_url}}/admin/query"
|
||||||
}
|
}
|
||||||
@@ -60,7 +60,22 @@
|
|||||||
],
|
],
|
||||||
"body": {
|
"body": {
|
||||||
"mode": "raw",
|
"mode": "raw",
|
||||||
"raw": "{\n \"question\": \"商品 iPhone 16 卖了多少件?\"\n}"
|
"raw": "{\"question\": \"商品 气密性通风口门及不锈锈钢通风圆管 卖了多少件?\"}"
|
||||||
|
},
|
||||||
|
"url": "{{base_url}}/admin/query"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "退款率(按商家)",
|
||||||
|
"request": {
|
||||||
|
"method": "POST",
|
||||||
|
"header": [
|
||||||
|
{ "key": "Authorization", "value": "Bearer sk-admin-xxxxxxxxxxxxxxxx" },
|
||||||
|
{ "key": "Content-Type", "value": "application/json" }
|
||||||
|
],
|
||||||
|
"body": {
|
||||||
|
"mode": "raw",
|
||||||
|
"raw": "{\"question\": \"商家 测试商家 的退款率是多少?\"}"
|
||||||
},
|
},
|
||||||
"url": "{{base_url}}/admin/query"
|
"url": "{{base_url}}/admin/query"
|
||||||
}
|
}
|
||||||
@@ -75,7 +90,67 @@
|
|||||||
],
|
],
|
||||||
"body": {
|
"body": {
|
||||||
"mode": "raw",
|
"mode": "raw",
|
||||||
"raw": "{\n \"question\": \"列出所有未发货订单\"\n}"
|
"raw": "{\"question\": \"列出所有未发货订单\"}"
|
||||||
|
},
|
||||||
|
"url": "{{base_url}}/admin/query"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "正常营业商户",
|
||||||
|
"request": {
|
||||||
|
"method": "POST",
|
||||||
|
"header": [
|
||||||
|
{ "key": "Authorization", "value": "Bearer sk-admin-xxxxxxxxxxxxxxxx" },
|
||||||
|
{ "key": "Content-Type", "value": "application/json" }
|
||||||
|
],
|
||||||
|
"body": {
|
||||||
|
"mode": "raw",
|
||||||
|
"raw": "{\"question\": \"列出所有正常营业的商户\"}"
|
||||||
|
},
|
||||||
|
"url": "{{base_url}}/admin/query"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "商户提现记录",
|
||||||
|
"request": {
|
||||||
|
"method": "POST",
|
||||||
|
"header": [
|
||||||
|
{ "key": "Authorization", "value": "Bearer sk-admin-xxxxxxxxxxxxxxxx" },
|
||||||
|
{ "key": "Content-Type", "value": "application/json" }
|
||||||
|
],
|
||||||
|
"body": {
|
||||||
|
"mode": "raw",
|
||||||
|
"raw": "{\"question\": \"商户 测试商家 的提现记录有哪些?\"}"
|
||||||
|
},
|
||||||
|
"url": "{{base_url}}/admin/query"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "用户充值记录",
|
||||||
|
"request": {
|
||||||
|
"method": "POST",
|
||||||
|
"header": [
|
||||||
|
{ "key": "Authorization", "value": "Bearer sk-admin-xxxxxxxxxxxxxxxx" },
|
||||||
|
{ "key": "Content-Type", "value": "application/json" }
|
||||||
|
],
|
||||||
|
"body": {
|
||||||
|
"mode": "raw",
|
||||||
|
"raw": "{\"question\": \"用户 3750 的充值记录有哪些?\"}"
|
||||||
|
},
|
||||||
|
"url": "{{base_url}}/admin/query"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "邀请奖励",
|
||||||
|
"request": {
|
||||||
|
"method": "POST",
|
||||||
|
"header": [
|
||||||
|
{ "key": "Authorization", "value": "Bearer sk-admin-xxxxxxxxxxxxxxxx" },
|
||||||
|
{ "key": "Content-Type", "value": "application/json" }
|
||||||
|
],
|
||||||
|
"body": {
|
||||||
|
"mode": "raw",
|
||||||
|
"raw": "{\"question\": \"用户 3750 的邀请奖励有哪些?\"}"
|
||||||
},
|
},
|
||||||
"url": "{{base_url}}/admin/query"
|
"url": "{{base_url}}/admin/query"
|
||||||
}
|
}
|
||||||
@@ -90,7 +165,67 @@
|
|||||||
],
|
],
|
||||||
"body": {
|
"body": {
|
||||||
"mode": "raw",
|
"mode": "raw",
|
||||||
"raw": "{\n \"question\": \"最近的系统公告有哪些?\"\n}"
|
"raw": "{\"question\": \"最近的系统公告有哪些?\"}"
|
||||||
|
},
|
||||||
|
"url": "{{base_url}}/admin/query"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "店铺笔记",
|
||||||
|
"request": {
|
||||||
|
"method": "POST",
|
||||||
|
"header": [
|
||||||
|
{ "key": "Authorization", "value": "Bearer sk-admin-xxxxxxxxxxxxxxxx" },
|
||||||
|
{ "key": "Content-Type", "value": "application/json" }
|
||||||
|
],
|
||||||
|
"body": {
|
||||||
|
"mode": "raw",
|
||||||
|
"raw": "{\"question\": \"最近的店铺笔记有哪些?\"}"
|
||||||
|
},
|
||||||
|
"url": "{{base_url}}/admin/query"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "查询商家的uniacid",
|
||||||
|
"request": {
|
||||||
|
"method": "POST",
|
||||||
|
"header": [
|
||||||
|
{ "key": "Authorization", "value": "Bearer sk-admin-xxxxxxxxxxxxxxxx" },
|
||||||
|
{ "key": "Content-Type", "value": "application/json" }
|
||||||
|
],
|
||||||
|
"body": {
|
||||||
|
"mode": "raw",
|
||||||
|
"raw": "{\"question\": \"商家 测试商家 的 uniacid 是多少?\"}"
|
||||||
|
},
|
||||||
|
"url": "{{base_url}}/admin/query"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "通过用户ID获取uniacid",
|
||||||
|
"request": {
|
||||||
|
"method": "POST",
|
||||||
|
"header": [
|
||||||
|
{ "key": "Authorization", "value": "Bearer sk-admin-xxxxxxxxxxxxxxxx" },
|
||||||
|
{ "key": "Content-Type", "value": "application/json" }
|
||||||
|
],
|
||||||
|
"body": {
|
||||||
|
"mode": "raw",
|
||||||
|
"raw": "{\"question\": \"用户 1 的 uniacid 是多少?\"}"
|
||||||
|
},
|
||||||
|
"url": "{{base_url}}/admin/query"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "商家用户数量",
|
||||||
|
"request": {
|
||||||
|
"method": "POST",
|
||||||
|
"header": [
|
||||||
|
{ "key": "Authorization", "value": "Bearer sk-admin-xxxxxxxxxxxxxxxx" },
|
||||||
|
{ "key": "Content-Type", "value": "application/json" }
|
||||||
|
],
|
||||||
|
"body": {
|
||||||
|
"mode": "raw",
|
||||||
|
"raw": "{\"question\": \"当前有多少商家用户?\"}"
|
||||||
},
|
},
|
||||||
"url": "{{base_url}}/admin/query"
|
"url": "{{base_url}}/admin/query"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ export async function executeNaturalLanguageQuery(
|
|||||||
COALESCE(SUM(o.order_money), 0) AS gmv,
|
COALESCE(SUM(o.order_money), 0) AS gmv,
|
||||||
COUNT(o.order_id) AS order_count
|
COUNT(o.order_id) AS order_count
|
||||||
FROM lucky_merch m
|
FROM lucky_merch m
|
||||||
LEFT JOIN lucky_order o ON m.merch_id = o.merch_id
|
LEFT JOIN lucky_order o ON m.site_id = o.site_id
|
||||||
WHERE m.merch_name LIKE ? ${timeFilter}
|
WHERE m.merch_name LIKE ? ${timeFilter}
|
||||||
GROUP BY m.merch_id, m.merch_name
|
GROUP BY m.merch_id, m.merch_name
|
||||||
`;
|
`;
|
||||||
@@ -119,7 +119,7 @@ export async function executeNaturalLanguageQuery(
|
|||||||
2
|
2
|
||||||
) AS refund_rate_percent
|
) AS refund_rate_percent
|
||||||
FROM lucky_merch m
|
FROM lucky_merch m
|
||||||
JOIN lucky_order o ON m.merch_id = o.merch_id
|
JOIN lucky_order o ON m.site_id = o.site_id
|
||||||
WHERE m.merch_name LIKE ?
|
WHERE m.merch_name LIKE ?
|
||||||
GROUP BY m.merch_id, m.merch_name
|
GROUP BY m.merch_id, m.merch_name
|
||||||
`;
|
`;
|
||||||
@@ -193,11 +193,11 @@ export async function executeNaturalLanguageQuery(
|
|||||||
const sql = `
|
const sql = `
|
||||||
SELECT
|
SELECT
|
||||||
order_no,
|
order_no,
|
||||||
price AS amount,
|
money AS amount,
|
||||||
status,
|
status,
|
||||||
create_time,
|
create_time,
|
||||||
pay_time
|
pay_time
|
||||||
FROM lucky_recharge_card_order
|
FROM lucky_member_recharge_order
|
||||||
WHERE member_id = ?
|
WHERE member_id = ?
|
||||||
ORDER BY create_time DESC
|
ORDER BY create_time DESC
|
||||||
`;
|
`;
|
||||||
@@ -263,11 +263,60 @@ export async function executeNaturalLanguageQuery(
|
|||||||
return rows;
|
return rows;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 场景 13: 通过登录用户或者商家名称获得 uniacid
|
||||||
|
if ((q.includes('uniacid') || q.includes('平台id')) && (q.includes('商家') || q.includes('用户'))) {
|
||||||
|
// 处理通过用户ID查询
|
||||||
|
if (q.includes('用户')) {
|
||||||
|
const idMatch = q.match(/用户\s*["']?(\d+)["']?/);
|
||||||
|
const userId = idMatch && idMatch[1] !== undefined ? parseInt(idMatch[1]) : null;
|
||||||
|
if (!userId) throw new Error('请指定用户ID');
|
||||||
|
|
||||||
|
const sql = `
|
||||||
|
SELECT u.uniacid, u.uid, u.username, u.site_id
|
||||||
|
FROM lucky_user u
|
||||||
|
WHERE u.uid = ?
|
||||||
|
LIMIT 1
|
||||||
|
`;
|
||||||
|
const [rows] = await pool.execute(sql, [userId]);
|
||||||
|
return (rows as any[])[0] || null;
|
||||||
|
}
|
||||||
|
// 处理通过商家名称查询
|
||||||
|
else {
|
||||||
|
const nameMatch = q.match(/商家\s*["']?([a-zA-Z0-9\u4e00-\u9fa5]+)["']?/);
|
||||||
|
const merchantName = nameMatch ? nameMatch[1] : null;
|
||||||
|
if (!merchantName) throw new Error('请指定商家名称');
|
||||||
|
|
||||||
|
const sql = `
|
||||||
|
SELECT DISTINCT u.uniacid, m.merch_name, m.site_id
|
||||||
|
FROM lucky_merch m
|
||||||
|
JOIN lucky_user u ON m.site_id = u.site_id
|
||||||
|
WHERE m.merch_name LIKE ?
|
||||||
|
LIMIT 1
|
||||||
|
`;
|
||||||
|
const [rows] = await pool.execute(sql, [`%${escapeLike(merchantName)}%`]);
|
||||||
|
return (rows as any[])[0] || null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 场景 14: 获得当前有多少商家用户
|
||||||
|
if ((q.includes('多少') || q.includes('数量') || q.includes('个数')) && q.includes('商家') && q.includes('用户')) {
|
||||||
|
const sql = `
|
||||||
|
SELECT COUNT(DISTINCT u.uid) AS merchant_user_count
|
||||||
|
FROM lucky_user u
|
||||||
|
JOIN lucky_merch m ON u.site_id = m.site_id
|
||||||
|
WHERE u.status = 1 AND m.status = 1
|
||||||
|
`;
|
||||||
|
const [rows] = await pool.execute(sql);
|
||||||
|
return (rows as any[])[0] || { merchant_user_count: 0 };
|
||||||
|
}
|
||||||
|
|
||||||
// 默认兜底
|
// 默认兜底
|
||||||
throw new Error(`
|
throw new Error(`
|
||||||
无法理解该问题。支持的查询包括:
|
无法理解该问题。支持的查询包括:
|
||||||
- 商家 GMV(如“TechStore 昨天的 GMV”)
|
- 商家 GMV(如“TechStore 昨天的 GMV”)
|
||||||
- 订单状态(如“订单 L20251127001 状态”)
|
- 订单状态(如“订单 L20251127001 状态”)
|
||||||
- 用户/商品/提现/充值/公告等信息
|
- 用户/商品/提现/充值/公告等信息
|
||||||
|
- 通过商家名称查询商家的 uniacid
|
||||||
|
- 获得当前有多少商家用户
|
||||||
`.trim());
|
`.trim());
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user