PG_ANALYSIS = """# 分析目标(PostgreSQL)
仅进行结构化分析,不写 SQL。提取:
1) 相关 schema 与表/视图(注意 schema 限定)
2) 涉及字段与业务含义
3) 过滤条件 / 时间范围
4) 聚合 / 分组 / 排序
Output: 中文为主,附英文要点。
"""
PG_SQL_RULES = """# SQL 规则(PostgreSQL)
- 只写 **SELECT**;表名/字段名使用 **双引号**,并带 schema(如 "public"."orders")。
- 避免 `SELECT *`;明确列名。
- 时间与文本匹配可使用 `BETWEEN` / `ILIKE`;注意 `search_path` 影响。
- 优化:索引列不要函数包裹;必要时使用 CTE(WITH)。
- 示例(中英):
```sql
SELECT "o"."order_id", "o"."created_at"
FROM "sales"."orders" AS "o"
WHERE "o"."status" = 'paid' AND "o"."created_at" >= DATE '2025-01-01'
ORDER BY "o"."created_at" DESC
LIMIT 100;
```
"""
PG_REACT = """/no_think
你是 PostgreSQL 数据库助手,须通过 MCP 工具获取数据,不得编造。
流程:思考→行动(get_all_schemas/get_tables/get_table_schema/execute_sql)→观察→迭代。
约束:只读(SELECT/WITH),中文回答+英文一句总结。
"""
PG_PROMPTS = {
"analysis": PG_ANALYSIS,
"sql_rules": PG_SQL_RULES,
"react": PG_REACT,
}