# Langflow SQL 教程：用中文查询门店支出，回读SQL与明细再核对合计

本次实际运行：Python标准库参考程序、业务边界检查与HTML渲染。未安装或运行Langflow，未调用模型、创建真实自动化、发送消息、建第三方PR或部署。人工基准和错误样稿均明确标注。

## 文件

input.json：原创输入；node-fields.json：字段教材，不能直接当平台导出文件导入；prompt.md：任务约束；schema.json：规范化观察结构；reference.py：本站手写参考；reference-output.json：实际本地输出；reference.html：参考产物；review-template.json：读者填写目标工具结果。

## 本地运行

```bash
python3 reference.py
python3 verify.py
```

数据库分发说明：ZIP不含expenses.db。解压到自己的本地练习目录后，运行reference.py会生成并保留expenses.db以便连接Langflow；verify.py仅在临时目录生成验证数据库，不改动该本地库。本站SQL证据库保存在非public的研究目录。

用浏览器打开reference.html。不依赖模型或第三方账户。

## 真实平台步骤

1. 检查12条账本和问题边界
打开expenses.csv，金额单位分，既有零金额、取消、待核实，也有北店和跨月记录。目标只包含E01/E02/E03，不能仅按“物料”匹配。

2. 准备真正只读的练习数据库
运行reference.py生成expenses.db并用mode=ro打开，前后SHA不变。目标Langflow环境用只读账号或只读副本；把数据库URL填入SQL Database，不把示例相对路径当所有运行位置都可见。

3. 把SQL Database变为Agent工具
在组件header menu启用Tool Mode，打开Include Columns，将Toolset端口接Agent Tools。Tool Mode时不预写固定SQL让模型假装生成；先核对数据库表结构。

4. 配置模型并提交中文问题
Agent里选可用供应商/模型，或Connect other models连接自己的语言模型组件。提交原问题，保存RUN_SQL_QUERY调用参数与实际错误；无工具记录不能称已查库。

5. 读取SQL和命中行
检查门店、时间下界、11月前上界、类别和已付状态都在条件中。回读3条明细，0金额保留，取消单E04和待核实E09排除；不能只接受一个总数。

6. 独立重算与只读复查
reference.html展示本机SQLite实际结果18000分即180元与3行证据，前后hash相同。对自己的实际SQL另用可信工具重算，确认没有INSERT/UPDATE或其他写入权限。

7. 保留问题、SQL和失败尝试
保存SQL、列名、明细与人工金额核对。模型流畅的解释不是账单证据；把实际调用成本与可能的SQL重试一并记录，本题不访问真实财务库。

## 版本与许可

Langflow1.12.6；最低资源见版本表，练习用小库不需GPU。只读限制由数据库权限/只读副本保证，提示词不是权限控制。模型调用费用另计，错误SQL必须保留原报错。

## 来源

- https://docs.langflow.org/sql-database
- https://docs.langflow.org/get-started-installation

## 验收边界

原创SQLite有2家门店、12笔支出、已付/取消/待核实状态，中文询问“南店10月已付物料支出”。输出实际SQL、命中行、合计及无法回答项；数据库用独立只读账号或只读副本，前后hash/行数一致。问题加入同名物料、0金额和跨月边界作为检验。

目标产品实跑时保存原生输出，不得把本包人工/手写参考改名冒充模型返回。所有人物、订单与规则均为虚构练习数据。

渲染说明：input.html、operation.html、reference.html和figures是随当前原创输入冻结的实际浏览器预览；修改输入后重新运行会更新reference-output.json，静态HTML不会自动重绘。目标软件原生结果请另存。
