Files
xianjing-ai/engine/app/leads.py
T
Cursor Agentandhaijd b7bd830da7 feat: 用 Ragflow 搭建鲜境方案客服
咨询台接 Ragflow 检索与示例知识库,支持追问、判定、引用和留资。

Co-authored-by: haijd <haijd@163.com>
2026-09-20 01:08:11 +00:00

61 lines
1.5 KiB
Python

from __future__ import annotations
import sqlite3
from datetime import datetime, timezone
from pathlib import Path
from .settings import ROOT
DB_PATH = ROOT / "data" / "leads.sqlite"
def _conn() -> sqlite3.Connection:
DB_PATH.parent.mkdir(parents=True, exist_ok=True)
conn = sqlite3.connect(DB_PATH)
conn.row_factory = sqlite3.Row
conn.execute(
"""
CREATE TABLE IF NOT EXISTS leads (
id INTEGER PRIMARY KEY AUTOINCREMENT,
session_id TEXT,
name TEXT,
phone TEXT,
note TEXT,
slots_json TEXT,
scheme_json TEXT,
created_at TEXT
)
"""
)
return conn
def add_lead(
*,
session_id: str,
name: str,
phone: str,
note: str,
slots_json: str,
scheme_json: str,
) -> int:
now = datetime.now(timezone.utc).isoformat()
with _conn() as conn:
cur = conn.execute(
"""
INSERT INTO leads (session_id, name, phone, note, slots_json, scheme_json, created_at)
VALUES (?, ?, ?, ?, ?, ?, ?)
""",
(session_id, name, phone, note, slots_json, scheme_json, now),
)
return int(cur.lastrowid)
def list_leads(limit: int = 50) -> list[dict]:
with _conn() as conn:
rows = conn.execute(
"SELECT id, session_id, name, phone, note, created_at FROM leads ORDER BY id DESC LIMIT ?",
(limit,),
).fetchall()
return [dict(row) for row in rows]