数据是怎么一步步进数据库的
我只在聊天里用大白话报当天数据,比如"8点半出门,安师傅两单一个35一个28,11点到家"。从这句话到数据稳稳躺在 SQLite 里,中间经过了几步。这篇把这条录入链拆开讲。
整条链路
我发飞书消息 → Hermes Agent 解析 → add_orders.py 写入 SQLite → 写一条审计记录
第一步:自由文本
我不需要填表格、不需要按格式,只要说清日期、出门到家时间、每单的平台和金额。这是刻意设计的——数据是干活的副产品,不能变成额外负担。
第二步:Agent 解析
Hermes 把口语拆成结构化字段:
- 班次:出勤日、出门时间、到家时间
- 订单:平台、流水、到账、接单和完成时间、备注
平台名我随便怎么叫都行("安师傅""微代驾"),系统会统一映射成标准代码。
第三步:写入方式(APPEND 模式)
录入脚本 add_orders.py 采用追加模式,2026-09-11 起改为即时入库:
- 当晚第一单报上来就立刻建班次、写订单,不用等收工。
- 班次已存在时,更新出门/到家时间并继续追加订单。
- 按"出勤日 + 开始时间 + 平台 + 流水"去重,重复提交不会写两遍。
- 会做时间重叠校验,防止一单被录成两单。
为什么从"收工批量写"改成"即时入库"
原来要等收工才一次性写库,结果出问题:当晚在另一个会话里报的出门、买卡信息,新会话完全没记忆,会把免佣单错算成普通单。改成报一单进一单后,任何会话打开数据库都能看到当晚的真实状态,不再靠对话记忆。
第四步:审计留痕
每次写入都往 audit_log 记一条(动作=APPEND),记下改了什么。这样数据出问题能回溯,也能区分某笔到账是我报的实测值,还是系统用公式兜底估算的。
到账金额的兜底
如果我没明确报某单到账,系统会按平台规则做一个估算(auto_arrive),并打上标记,提醒这笔需要我以后核实。口径始终是:以我报的实测到账为准,估算只是临时占位。
录进来之后,统计、报告、看板全部自动从数据库读取,我不用再做任何操作。