2026-07-29 10:38:19 +08:00
2026-07-22 17:13:35 +08:00
2026-07-29 10:38:19 +08:00
2026-07-22 10:26:32 +08:00
2026-07-22 14:06:24 +08:00
2026-07-22 10:26:32 +08:00
2026-07-28 20:20:24 +08:00

小财记账 (XiaoCai Accounting)

AI 驱动的内部群聊记账系统,通过自然语言对话自动记录采购信息。

功能特性

  • AI 自然语言记账 — 聊天中输入"打印纸一包30元已付"即可自动创建采购记录
  • 采购清单管理 — 按月汇总,支持编辑、删除、附件管理,状态追踪(待付款→已付款→已收货→已完成)
  • 多群聊支持 — 每个项目独立群聊,支持白名单权限控制
  • 实时推送 — WebSocket 实时同步消息和采购变更
  • 移动端适配 — 响应式设计,支持滑动手势、图片双指缩放拖拽
  • 管理员功能 — 群聊管理、采购导出 CSV、全局汇总

技术栈

技术
后端 Node.js + Express + WebSocket (ws)
数据库 SQLite (better-sqlite3)
AI DeepSeek API
前端 原生 HTML/CSS/JS无框架
部署 Docker + Docker Compose
认证 JWT

项目结构

xiaocai-ai-server/
├── docker-compose.yml          # Docker 编排
├── build.sh                    # 构建脚本
├── server/
│   ├── server.js               # 入口
│   ├── db.js                   # 数据库初始化 + 迁移
│   ├── utils.js                # 时间工具函数
│   ├── handlers.js             # AI 结果处理 + 对话状态
│   ├── package.json
│   ├── Dockerfile
│   ├── ai/
│   │   ├── prompt.js           # Prompt 模板
│   │   ├── validator.js        # JSON Schema 校验
│   │   └── client.js           # DeepSeek API 客户端
│   ├── middleware/
│   │   └── auth.js             # JWT 认证 + 管理员中间件
│   ├── routes/
│   │   ├── auth.js             # 登录 / 用户信息
│   │   ├── rooms.js            # 群聊 CRUD
│   │   ├── messages.js         # 消息 + AI 分析
│   │   └── purchases.js        # 采购 CRUD / 汇总 / 导出
│   ├── ws/
│   │   └── index.js            # WebSocket 连接管理 + 广播
│   └── public/
│       ├── index.html          # 单页应用
│       ├── css/style.css       # 样式
│       └── js/
│           ├── store.js        # 全局状态管理
│           ├── chat.js         # 消息渲染 + 图片处理
│           ├── ws.js           # WebSocket + 聊天列表
│           ├── purchases.js    # 采购清单 + 编辑 + 手势
│           └── auth.js         # 登录 / 初始化
└── docs/
    └── v2.md                   # 重构设计文档

快速开始

环境变量

创建 .env 文件:

# 用户账号username:password 逗号分隔)
USERS=admin:admin123,user1:pass1

# 管理员列表(逗号分隔)
ADMINS=admin

# DeepSeek API Key
DEEPSEEK_API_KEY=sk-xxx

Docker 部署

# 构建并启动
./build.sh

# 或手动
docker compose up -d

服务默认监听 3000 端口。

API 概览

认证

方法 路径 说明
POST /api/login 登录获取 JWT

群聊

方法 路径 说明
GET /api/rooms 群聊列表(按活跃时间排序)
POST /api/rooms 新建群聊
PUT /api/rooms/:id 编辑群聊
DELETE /api/rooms/:id 删除群聊(管理员)

消息

方法 路径 说明
GET /api/rooms/:id/messages 获取消息历史
POST /api/rooms/:id/messages 发送消息(触发 AI 分析)
POST /api/upload 上传图片

采购

方法 路径 说明
GET /api/rooms/:id/purchases 群聊采购清单
GET /api/purchases/:id 采购详情(含历史 + 附件)
PUT /api/purchases/:id 更新采购记录
DELETE /api/purchases/:id 删除采购记录
POST /api/purchases/:id/attachments 添加附件
DELETE /api/purchases/:id/attachments 删除附件
GET /api/summary 全局采购汇总
GET /api/rooms/:id/purchases/export 导出 CSV

采购状态流转

待付款 → 已付款 → 已收货 → 已完成
  • 聊天 AI — 仅负责新建记录,修改操作引导用户去采购清单手动完成
  • 采购清单 — 点击条目进入详情,可编辑所有字段、管理附件、查看操作历史

设计原则

  • AI 不负责更新已有记录,所有修改由用户手动完成
  • 新建记录通过聊天自然语言输入
  • 移动端优先:滑动手势、数字键盘、双指缩放
  • 操作历史自动记录所有变更,可追溯

License

MIT

Description
小财记账app
Readme 316 KiB
Languages
JavaScript 74.2%
HTML 13.7%
CSS 11.9%
Dockerfile 0.1%