deploy: 2026-07-15 14:09 部署更新

This commit is contained in:
selfrelease
2026-07-15 14:09:53 +08:00
parent af58df2093
commit ca66b03af5
2 changed files with 143 additions and 23 deletions
+35 -8
View File
@@ -712,15 +712,21 @@ def list_conversations(
try:
with conn.cursor() as cur:
sql = """
SELECT cu.id, cu.customer_name, s.name AS salesperson_name,
SELECT DISTINCT cu.id, cu.customer_name, s.name AS salesperson_name,
cu.industry, cu.intent_level, cu.stage,
cu.summary, cu.key_points, cu.objections, cu.next_action,
cu.key_needs, cu.last_analysis,
(SELECT count(*) FROM message m
JOIN conversation conv ON conv.id = m.conversation_id
WHERE conv.contact_id = cu.contact_id) AS msg_count
WHERE conv.contact_id = cu.contact_id) AS msg_count,
string_agg(DISTINCT p.category, ', ') AS deal_categories,
string_agg(m2.normalized_content, ' ') AS all_messages
FROM customer cu
JOIN salesperson s ON s.id = cu.salesperson_id
LEFT JOIN deal d ON d.customer_id = cu.id
LEFT JOIN product p ON p.id = d.product_id
LEFT JOIN conversation conv2 ON conv2.contact_id = cu.contact_id
LEFT JOIN message m2 ON m2.conversation_id = conv2.id
"""
conditions = []
params = []
@@ -732,11 +738,32 @@ def list_conversations(
params.append(stage)
if conditions:
sql += " WHERE " + " AND ".join(conditions)
sql += " ORDER BY cu.salesperson_id, cu.id"
sql += """
GROUP BY cu.id, cu.customer_name, s.name,
cu.industry, cu.intent_level, cu.stage,
cu.summary, cu.key_points, cu.objections, cu.next_action,
cu.key_needs, cu.last_analysis
ORDER BY cu.salesperson_id, cu.id
"""
cur.execute(sql, params)
return [
{
diet_keywords = ["减肥", "减脂", "瘦身", "B420", "纤益", "代餐", "体脂", "产后减肥", "节食"]
child_keywords = ["湿疹", "过敏", "鼻炎", "腹泻", "便秘", "免疫力", "胀气",
"拉肚子", "打喷嚏", "流鼻涕", "感冒", "食物过敏", "牛奶蛋白",
"宝宝", "宝妈", "儿童", "丹麦", "鼠李糖", "LGG", "合生元"]
results = []
for r in cur.fetchall():
deal_cats = r[13]
all_msgs = r[14] or ""
if deal_cats:
product_categories = deal_cats
elif any(kw in all_msgs for kw in diet_keywords):
product_categories = "女性减肥益生菌"
elif any(kw in all_msgs for kw in child_keywords):
product_categories = "儿童益生菌"
else:
product_categories = None
results.append({
"id": r[0], "customer_name": r[1],
"salesperson_name": r[2], "industry": r[3],
"intent_level": r[4], "stage": r[5],
@@ -747,9 +774,9 @@ def list_conversations(
"key_needs": parse_pg_array(r[10]),
"last_analysis": r[11].isoformat() if r[11] else None,
"msg_count": r[12],
}
for r in cur.fetchall()
]
"product_categories": product_categories,
})
return results
finally:
put_conn(conn)