📱 Expo RN · Spring Boot · Python AI Agent

筑帐宝
工地记账管理平台

ZhuZhangBao · Construction Site Accounting · v1.0.0

面向 建筑工地、小型施工团队、包工头 的记账管理 App。覆盖 工地工程款(合同/收款/结清/归档)工人薪资(日薪/发薪/预支/在职)杂项收支 三大场景,配套 月度报表 + Excel 导出 + SQL 备份

App 端 Expo (React Native),后端 Spring Boot 3.2 + MyBatis Plus + MySQL + Redis, AI 助手是独立 FastAPI + LangChain Tool Calling 服务,基于通义千问,支持自然语言查询/创建/分析所有数据。

已投入使用 · 内部业务线运行中
Expo SDK 54React NativeSpring Boot 3.2 MyBatis PlusSpring Security + JWTRedis · Redisson FastAPILangChain通义千问
SCROLL

App 界面展示

6 个核心页面真实截图 · 点击下方缩略图切换主视图

首页
首页
工地
工地
工人
工人
首页 / 待办
首页 / 待办 Dashboard
统计
统计
AI 助手
AI 助手
薪资
薪资

点击缩略图切换主视图 · 流式 AI 对话 + Tool Calling

核心特性

8 大核心模块,以「AI 智能助手」为先,从工地工程到薪资发放,闭环管理工地财务。

★ 01 · AI CORE

AI 智能助手

LangGraph Directed Graph Agent

把工地账本「说一句话就记一笔」:自然语言问「李师傅本月做了多少工、欠多少钱」,Agent 自动调工具查工地流水并整理成回复; 说「给李师傅发 5000」,会先给预览等你确认才落库。

底层用 LangGraph 有向图 替代黑盒循环,关键节点(工具校验 / 输出校验 / 写操作人工审批)固定路径, try/retry/fallback 容错,Checkpointer 断点存续,崩溃不丢上下文。

自然语言记账说一句话即录入账本
预览后再落库写操作必须人工确认
图节点固定路径校验与拦截可插拔
崩溃可恢复Checkpointer 断点存续
02

工地工程款管理

Construction Contracts

CRUD + 收款流水 + 协商结清 + 多状态流转 + 归档。每次新增收款自动重算 owed,owed ≤ 0 自动转"已结清"

CRUD流水结清归档
03

工人薪资管理

Worker Payroll

日薪录入 → 自动累加 total/pending wage;发薪 → 必须 ≤ pending wage;预支 + 在职 / 离职 状态管理,支持按工地关联。

日薪发薪预支在职状态
04

杂项收支

Misc Income / Expense

工具采购、餐饮招待、办公费用、废料变卖等非项目直接收支,收入 / 支出两类型,按分类与日期检索

收入支出分类
05

统计报表

Statistical Reports

月度收款趋势年度汇总单工地收益单工人薪资。支持 Excel 导出 + SQL 全量备份

月度趋势年度汇总ExcelSQL 备份
06

首页 / 待办

Home & Todos

年度总览(收入/支出/工地在建数)+ 待收款工地 + 待发薪工人 聚合,开 App 一眼看到要做的事。

年度总览待收款待发薪
07

Redis 缓存架构

Redis Caching

关键读路径(列表/汇总/报表)走 Redis 缓存,失败兜底直查 DB 业务无感。Redisson 看门狗续期可重入锁,进程间共享对话历史。

Redisson兜底降级LRU 24h
08

认证与会话

Auth & Session

Spring Security + JWT(jjwt 0.12.5),24h 有效期,前端 AsyncStorage 持久化,401 自动登出。Token 黑名单 / 幂等 token 也走 Redis。

Spring SecurityJWT自动登出

整体架构

三端协同:App 通过 REST 调后端;AI 助手独立部署,调后端 API 完成操作。

🏗 三端分层架构

Expo RN 移动端 zhuzhangbao · React Native 0.81 · Expo SDK 54 Login Home 21 页面 AsyncStorage SSE Chat AuthContext Python AI Agent zhuzhangbao-agent · FastAPI · LangChain qwen-plus 14 Tools SSE Stream ContextVar Spring Boot 后端 zhuzhangbao-server · :8083 · /api Auth/JWT Dashboard Reports Construction Worker Export MyBatis+ Redisson Knife4j Controller → Service → Mapper Redis 7.x 缓存 + 对话历史 MySQL 8.x 主数据 zhuzhangbao HTTPS · Bearer JWT httpx · 透传用户 JWT /agent/chat (SSE) 数据流:App → Spring Boot → MySQL/Redis(读路径走缓存) AI 助手:App → Agent → 调后端 REST API(带用户 JWT)→ 返回结构化结果 → 流式回复

🔁 一次 AI 对话的完整链路

① App 发起 SSE 连接 /agent/chat/stream ② Agent 接收 ContextVar 注入 用户 JWT Token ③ LLM 推理 qwen-plus + 14 tools prompt ④ Tool Calling httpx 调后端 /api/* 真实数据 ⑤ 结果回传 进入下一轮 LLM System Prompt 防编造 ⑥ 流式回复 SSE 推 token + 写入 Redis 24h System Prompt 强制:任何金额 / 名称 / 状态必须先调工具,禁止编造 多用户隔离:ContextVar + Redis key zzb:agent:chat:{tokenHash}