# AccountMiniprogram **Repository Path**: jeadyx/account-miniprogram ## Basic Information - **Project Name**: AccountMiniprogram - **Description**: 聊天记账的微信小程序 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-09 - **Last Updated**: 2026-05-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 智能账本聊天系统 一个基于微信小程序的智能账本系统,支持通过聊天方式快速记录消费,并提供消费统计功能。 ## 功能特性 - **智能消费识别**:支持 "6元咖啡"、"8.5麦当劳"、"6毛矿泉水"、"10角停车费" 等多种金额格式 - **图片+文字**:支持发送图片和文字,支持图片多选 - **自动统计**:自动统计今日、本周、本月、本年消费 - **聊天追溯**:支持查看历史聊天记录和消费记录 - **实时反馈**:收到消息时显示今日消费、本周消费、本月消费等统计信息 - **美化界面**:现代化聊天界面设计 ## 项目结构 ``` miniprogram/ ├── database/ # 数据库相关 │ └── schema.sql # PostgreSQL 数据库表结构 ├── server/ # 后端服务 │ ├── src/ │ │ ├── index.js # 服务入口 │ │ ├── config/ │ │ │ └── database.js # 数据库配置 │ │ ├── routes/ │ │ │ ├── chat.js # 聊天接口 │ │ │ ├── expense.js # 消费记录接口 │ │ │ └── stats.js # 统计接口 │ │ └── utils/ │ │ └── expenseParser.js # 消费解析工具 │ └── package.json └── miniprogram/ # 微信小程序前端 ├── pages/ │ └── chatBot/ # 聊天页面 ├── app.js └── app.json ``` ## 快速开始 ### 1. 数据库设置 (PostgreSQL) 1. 创建数据库: ```sql CREATE DATABASE accounting_db; ``` 2. 导入表结构: ```bash psql -U postgres -d accounting_db -f database/schema.sql ``` 3. 环境变量配置: ```bash export DB_HOST=localhost export DB_PORT=5432 export DB_NAME=accounting_db export DB_USER=postgres export DB_PASSWORD=your_password ``` ### 2. 后端服务 ```bash cd server npm install npm run dev # 开发环境 # 或 npm start # 生产环境 ``` 服务将运行在 `http://localhost:3000` ### 3. 微信小程序 1. 导入项目到微信开发者工具 2. 修改 `miniprogram/pages/chatBot/chatBot.js` 中的 `API_BASE` 为实际后端地址 3. 编译运行 ## API 接口 ### 聊天接口 #### 发送消息 - `POST /api/chat/send` - Body: `{ openid, content, images[] }` #### 获取聊天历史 - `GET /api/chat/history?openid=xxx&page=1&limit=20` #### 获取消费统计 - `GET /api/chat/stats?openid=xxx` ### 消费记录接口 #### 获取消费列表 - `GET /api/expense/list?openid=xxx&page=1&limit=20` #### 获取详情 - `GET /api/expense/detail/:id?openid=xxx` #### 删除记录 - `DELETE /api/expense/:id` - Body: `{ openid }` ### 统计接口 #### 获取汇总统计 - `GET /api/stats/summary?openid=xxx&type=month` #### 获取趋势 - `GET /api/stats/trend?openid=xxx&days=7` #### 获取分类列表 - `GET /api/stats/categories` ## 金额格式支持 系统支持以下金额格式: | 格式 | 示例 | 转换 | |------|------|------| | 元/块 | 6元、6.5元 | 直接转换 | | 毛 | 6毛、6.5毛 | ×0.1 | | 角 | 6角、6.5角 | ×0.1 | | 分 | 6分、6.5分 | ×0.01 | ## 数据库表说明 ### users 用户表 - id: 主键 - openid: 微信openid - nickname: 昵称 - avatar_url: 头像 - phone: 手机号(预留) - created_at: 创建时间 - status: 状态 ### expenses 消费记录表 - id: 主键 - user_id: 用户ID - amount: 金额 - category: 分类 - description: 描述 - message_id: 关联消息ID - images: 图片数组 - created_at: 创建时间 ### chat_messages 聊天消息表 - id: 主键 - user_id: 用户ID - content: 内容 - message_type: 类型 (text/image/mixed) - images: 图片数组 - is_expense: 是否包含消费 - expense_id: 关联消费记录ID - created_at: 创建时间 ### categories 分类表 - id: 主键 - name: 分类名称 - icon: 图标 - color: 颜色 ## 开发说明 前端支持模拟数据模式,在无法连接后端时可正常运行。模拟模式下会自动解析消费信息并生成统计数据。 如需关闭模拟模式,请修改 `chatBot.js` 中的 `request` 方法,移除 mock 相关逻辑。