一直想制作一个轮子,ai记账工具,直接甩到chatgpt里生成了一个提示词。
提示词
AI Prompt(可直接复制使用)
角色设定
你是一名资深全栈开发工程师,精通 PHP(ThinkPHP 6)、MySQL、HTML、CSS、JavaScript、Vue、API 开发、移动端适配、支付宝与微信支付接口、AI OCR(Tesseract、阿里云 OCR)及语音识别技术。你需要为我生成一个可运行的全端账单记录工具项目骨架,保证代码可直接运行,并可后续扩展功能。
⸻
项目需求
为中国市场客户开发一个账单记录全端工具,底层基于 Web 技术,前端响应式设计,兼容 PC 和移动端。功能包括:
1. 用户体系
• 注册/登录(邮箱、手机号)
• 登录状态保持
• 基本信息管理
2. 账单录入
• 手动录入(金额、分类、备注、时间)
• AI 拍照识别(OCR 自动识别票据/账单金额、日期、商户)
• 语音输入(自动识别金额、分类)
• 自动分类(餐饮、交通、购物、娱乐等,支持自定义)
3. 账单管理
• 每月详细汇总(金额、分类比例、图表展示)
• 每年详细汇总(金额、分类比例、图表展示)
• 搜索、筛选、排序
• 导出 Excel/PDF
4. 支付功能预留
• 支持支付宝、微信支付(SDK 接口预留)
• 国内客户常用银行卡支付接口预留
5. 历史数据
• 历史账单查询
• 统计图(柱状图、饼图)
6. 联系支持
• 邮件联系官方
• 客服页面(预留)
7. 页面与交互
• 黑白灰为主色调 + 柔和米色/深蓝色点缀
• 大图展示(在统计与数据可视化部分)
• 风格参考 Zara / H&M 简洁现代设计
• 空状态显示“敬请期待”
• icon 风格统一,不使用 emoji
• 交互动效自然流畅(过渡、悬停、加载)
⸻
技术栈
• 后端:ThinkPHP 6 + PHP 8.x
• 数据库:MySQL 8.x
• 前端:HTML5 + CSS3 + JavaScript (Vue 3 / 或原生 ES6) + TailwindCSS 或 Bootstrap 5
• 移动端适配:响应式布局(媒体查询)
• AI 模块:Tesseract OCR / 百度 AI OCR / 腾讯云 OCR;语音识别(科大讯飞或腾讯云语音 API)
• 图表:ECharts / Chart.js
• 部署:Nginx + PHP-FPM,支持宝塔面板一键部署
⸻
开发要求
• 提供完整可运行的项目结构
• 数据库迁移文件(创建用户表、账单表、分类表等)
• 控制器、模型、路由齐全
• 前后端分离或混合模式可选(建议分离,提供 API 接口文档)
• 提供 config.example.php 方便配置数据库和 API Key
• 提供 Dockerfile 与 docker-compose.yml(可选)
• 每个功能模块需有基础单元测试
• 前端模板参考 Zara / H&M UI 视觉
• 确保国内服务器可直接运行,无需翻墙依赖
⸻
输出要求
1. 项目目录结构
2. 数据库迁移 SQL
3. 后端主要文件(控制器、模型、服务类)
4. 前端页面模板(首页、账单列表页、账单详情页、月/年统计页、登录注册页、空状态页)
5. API 接口设计文档(JSON 格式示例)
6. AI 模块示例代码(OCR + 语音识别)
7. 支付接口预留示例
8. 样式文件(黑白灰 + 米色/深蓝点缀)
9. 启动与部署步骤
发送给trae后会生成一个架构文档
产品需求文档
# 账单记录工具产品需求文档
## 1. 产品概述
面向中国市场的全端账单记录工具,基于Web技术构建,提供智能化的个人财务管理解决方案。
产品集成AI OCR识别、语音输入、自动分类等先进技术,帮助用户轻松记录和管理日常消费账单。
目标为个人用户提供简洁高效的财务记录体验,提升个人理财管理效率。
## 2. 核心功能
### 2.1 用户角色
| 角色 | 注册方式 | 核心权限 |
|------|----------|----------|
| 普通用户 | 邮箱或手机号注册 | 可使用基础记账功能、查看个人数据 |
| 高级用户 | 付费升级 | 可使用AI识别、导出数据、高级统计功能 |
### 2.2 功能模块
我们的账单记录工具包含以下主要页面:
1. **首页**:用户仪表板、快速记账入口、最近账单预览
2. **账单录入页**:手动录入表单、AI拍照识别、语音输入功能
3. **账单列表页**:账单展示、搜索筛选、批量操作
4. **账单详情页**:单条账单详细信息、编辑删除功能
5. **统计分析页**:月度年度汇总、图表展示、分类统计
6. **用户中心页**:个人信息管理、设置偏好、账户安全
7. **登录注册页**:用户认证、密码找回
8. **支付页面**:会员升级、付费功能解锁
9. **联系支持页**:客服联系、帮助文档
### 2.3 页面详情
| 页面名称 | 模块名称 | 功能描述 |
|----------|----------|----------|
| 首页 | 用户仪表板 | 显示账单概览、本月支出统计、快速操作入口 |
| 首页 | 快速记账 | 提供快速添加账单的浮动按钮和简化表单 |
| 账单录入页 | 手动录入 | 表单录入金额、分类、备注、时间等基本信息 |
| 账单录入页 | AI拍照识别 | 调用阿里云OCR服务识别票据信息,自动填充表单字段 |
| 账单录入页 | 语音输入 | 阿里云语音识别服务转换为文本,智能解析金额和分类 |
| 账单录入页 | 自动分类 | 基于商户名称和关键词自动匹配消费分类 |
| 账单列表页 | 账单展示 | 分页展示账单列表,支持时间排序和金额排序 |
| 账单列表页 | 搜索筛选 | 按时间范围、分类、金额区间筛选账单 |
| 账单列表页 | 批量操作 | 批量删除、批量修改分类、批量导出 |
| 账单详情页 | 详情展示 | 显示账单完整信息包括图片附件 |
| 账单详情页 | 编辑功能 | 修改账单信息、删除账单、添加备注 |
| 统计分析页 | 月度统计 | 月度收支汇总、分类占比饼图、趋势折线图 |
| 统计分析页 | 年度统计 | 年度收支对比、月度趋势、分类排行 |
| 统计分析页 | 数据导出 | 导出Excel/PDF格式的统计报表 |
| 用户中心页 | 个人信息 | 修改昵称、头像、联系方式等基本信息 |
| 用户中心页 | 账户设置 | 修改密码、绑定手机邮箱、注销账户 |
| 用户中心页 | 偏好设置 | 默认分类、货币单位、提醒设置 |
| 登录注册页 | 用户认证 | 邮箱手机号登录注册、第三方登录预留 |
| 登录注册页 | 密码管理 | 忘记密码、重置密码、验证码验证 |
| 支付页面 | 会员升级 | 支付宝微信支付、银行卡支付接口 |
| 支付页面 | 订单管理 | 支付订单查询、退款申请 |
| 联系支持页 | 客服联系 | 邮件联系表单、在线客服预留 |
| 联系支持页 | 帮助中心 | 常见问题、使用教程、功能介绍 |
## 3. 核心流程
**普通用户流程:**
用户注册登录后,可在首页查看账单概览,通过快速记账或详细录入页面添加账单。支持手动输入或AI识别两种方式。录入的账单在列表页展示,用户可搜索筛选查看。在统计页面查看月度年度汇总数据。
**高级用户流程:**
除普通功能外,高级用户可使用AI拍照识别和语音输入功能,享受更智能的记账体验。同时可导出详细的统计报表,获得更深入的财务分析。
```mermaid
graph TD
A[首页] --> B[账单录入页]
A --> C[账单列表页]
A --> D[统计分析页]
B --> C
C --> E[账单详情页]
E --> B
A --> F[用户中心页]
F --> G[登录注册页]
F --> H[支付页面]
A --> I[联系支持页]
```
## 4. 用户界面设计
### 4.1 设计风格
- **主色调**:黑色(#000000)、白色(#FFFFFF)、深灰(#333333)、浅灰(#F5F5F5)
- **点缀色**:柔和米色(#F5F2E8)、深蓝色(#1E3A8A)
- **按钮样式**:圆角矩形按钮,悬停渐变效果
- **字体**:系统默认字体,标题16-24px,正文14-16px
- **布局风格**:卡片式布局,顶部导航,响应式网格
- **图标风格**:线性图标,统一风格,不使用emoji
### 4.2 页面设计概览
| 页面名称 | 模块名称 | UI元素 |
|----------|----------|--------|
| 首页 | 用户仪表板 | 白色卡片背景,深灰文字,米色数据高亮,圆形进度条 |
| 首页 | 快速记账 | 深蓝色浮动按钮,白色图标,点击展开表单 |
| 账单录入页 | 表单区域 | 白色背景,浅灰边框,深蓝色提交按钮,表单验证提示 |
| 账单录入页 | AI功能区 | 米色背景卡片,拍照按钮居中,语音波形动画 |
| 账单列表页 | 列表项 | 白色卡片,左侧分类色块,右侧金额突出显示 |
| 账单列表页 | 筛选栏 | 浅灰背景,下拉选择器,日期选择器 |
| 统计分析页 | 图表区域 | 白色背景,彩色图表,深蓝主题色,数据标签清晰 |
| 统计分析页 | 汇总卡片 | 渐变背景卡片,白色文字,大数字显示 |
| 用户中心页 | 设置列表 | 分组列表,右箭头指示,分割线清晰 |
### 4.3 响应式设计
产品采用移动端优先的响应式设计,在768px以下显示移动端布局,768px以上显示桌面端布局。移动端优化触摸交互,增大点击区域,简化操作流程。
技术架构文档
# 账单记录工具技术架构文档
## 1. 架构设计
```mermaid
graph TD
A[用户浏览器] --> B[Vue 3 前端应用]
B --> C[ThinkPHP 6 API 服务]
C --> D[MySQL 数据库]
C --> E[Redis 缓存]
C --> F[文件存储]
C --> G[第三方服务]
subgraph "前端层"
B
end
subgraph "后端层"
C
E
F
end
subgraph "数据层"
D
end
subgraph "外部服务"
G
H[阿里云OCR服务]
I[阿里云语音识别]
J[支付宝SDK]
K[微信支付SDK]
end
G --> H
G --> I
G --> J
G --> K
```
## 2. 技术描述
* 前端:Vue 3 + Vite + TailwindCSS + ECharts
* 后端:ThinkPHP 6 + PHP 8.x
* 数据库:MySQL 8.x + Redis 6.x
* AI服务:阿里云OCR服务 + 阿里云语音识别服务
* 支付:支付宝SDK + 微信支付SDK
* 部署:Nginx + PHP-FPM + Docker
## 3. 路由定义
| 路由 | 用途 |
| ------------- | --------------- |
| / | 首页,显示用户仪表板和快速操作 |
| /login | 登录页面,用户身份验证 |
| /register | 注册页面,新用户注册 |
| /bills | 账单列表页,展示和管理账单 |
| /bills/create | 账单录入页,添加新账单 |
| /bills/:id | 账单详情页,查看和编辑单条账单 |
| /statistics | 统计分析页,月度年度数据汇总 |
| /profile | 用户中心,个人信息和设置 |
| /payment | 支付页面,会员升级和付费功能 |
| /support | 联系支持,客服和帮助中心 |
## 4. API定义
### 4.1 核心API
**用户认证相关**
```
POST /api/auth/register
```
请求参数:
| 参数名 | 参数类型 | 是否必填 | 描述 |
| -------- | ------ | ----- | ---- |
| email | string | true | 用户邮箱 |
| phone | string | false | 手机号码 |
| password | string | true | 登录密码 |
| code | string | true | 验证码 |
响应参数:
| 参数名 | 参数类型 | 描述 |
| ------- | ------- | ---- |
| status | boolean | 注册状态 |
| message | string | 响应消息 |
| data | object | 用户信息 |
示例:
```json
{
"email": "user@example.com",
"password": "123456",
"code": "1234"
}
```
**账单管理相关**
```
POST /api/bills
```
请求参数:
| 参数名 | 参数类型 | 是否必填 | 描述 |
| ------------ | ------- | ----- | ---- |
| amount | decimal | true | 账单金额 |
| category\_id | integer | true | 分类ID |
| description | string | false | 账单描述 |
| bill\_date | date | true | 账单日期 |
| image | file | false | 票据图片 |
响应参数:
| 参数名 | 参数类型 | 描述 |
| ------ | ------- | ---- |
| status | boolean | 创建状态 |
| data | object | 账单信息 |
**AI识别相关**
```
POST /api/ai/ocr
```
请求参数:
| 参数名 | 参数类型 | 是否必填 | 描述 |
| ----- | ---- | ---- | ---- |
| image | file | true | 票据图片 |
响应参数:
| 参数名 | 参数类型 | 描述 |
| -------- | ------- | ----- |
| amount | decimal | 识别的金额 |
| merchant | string | 商户名称 |
| date | date | 交易日期 |
| category | string | 推荐分类 |
| confidence | float | 识别置信度 |
**语音识别相关**
```
POST /api/ai/speech
```
请求参数:
| 参数名 | 参数类型 | 是否必填 | 描述 |
| ----- | ---- | ---- | ---- |
| audio | file | true | 语音文件 |
| format | string | false | 音频格式,默认wav |
响应参数:
| 参数名 | 参数类型 | 描述 |
| -------- | ------- | ----- |
| text | string | 识别的文本 |
| amount | decimal | 提取的金额 |
| category | string | 推测的分类 |
| confidence | float | 识别置信度 |
**统计分析相关**
```
GET /api/statistics/monthly
```
请求参数:
| 参数名 | 参数类型 | 是否必填 | 描述 |
| ----- | ------- | ---- | -- |
| year | integer | true | 年份 |
| month | integer | true | 月份 |
响应参数:
| 参数名 | 参数类型 | 描述 |
| --------------- | ------- | ---- |
| total\_amount | decimal | 总支出 |
| category\_stats | array | 分类统计 |
| daily\_stats | array | 每日统计 |
## 5. 服务器架构图
```mermaid
graph TD
A[Nginx 反向代理] --> B[ThinkPHP 6 应用]
B --> C[控制器层]
C --> D[服务层]
D --> E[模型层]
E --> F[数据库层]
B --> G[中间件层]
G --> H[认证中间件]
G --> I[CORS中间件]
G --> J[限流中间件]
D --> K[外部服务层]
K --> L[阿里云OCR服务]
K --> M[阿里云语音识别服务]
K --> N[支付服务]
subgraph "应用服务器"
B
C
D
E
G
H
I
J
K
L
M
N
end
subgraph "数据存储"
F
O[Redis缓存]
P[文件存储]
end
```
## 6. 数据模型
### 6.1 数据模型定义
```mermaid
erDiagram
USERS ||--o{ BILLS : creates
USERS ||--o{ ORDERS : places
CATEGORIES ||--o{ BILLS : categorizes
BILLS ||--o{ BILL_IMAGES : contains
USERS {
int id PK
string email
string phone
string password_hash
string nickname
string avatar
enum user_type
timestamp created_at
timestamp updated_at
}
CATEGORIES {
int id PK
string name
string icon
string color
int user_id FK
boolean is_default
timestamp created_at
}
BILLS {
int id PK
int user_id FK
int category_id FK
decimal amount
string description
date bill_date
enum type
string merchant
timestamp created_at
timestamp updated_at
}
BILL_IMAGES {
int id PK
int bill_id FK
string image_path
string original_name
timestamp created_at
}
ORDERS {
int id PK
int user_id FK
string order_no
decimal amount
enum status
enum payment_method
timestamp created_at
timestamp paid_at
}
```
### 6.2 数据定义语言
**用户表 (users)**
```sql
-- 创建用户表
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
email VARCHAR(255) UNIQUE NOT NULL,
phone VARCHAR(20) UNIQUE,
password_hash VARCHAR(255) NOT NULL,
nickname VARCHAR(100) NOT NULL,
avatar VARCHAR(255),
user_type ENUM('free', 'premium') DEFAULT 'free',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
-- 创建索引
CREATE INDEX idx_users_email ON users(email);
CREATE INDEX idx_users_phone ON users(phone);
```
**分类表 (categories)**
```sql
-- 创建分类表
CREATE TABLE categories (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
icon VARCHAR(50),
color VARCHAR(7) DEFAULT '#1E3A8A',
user_id INT,
is_default BOOLEAN DEFAULT FALSE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);
-- 插入默认分类
INSERT INTO categories (name, icon, color, is_default) VALUES
('餐饮', 'restaurant', '#EF4444', TRUE),
('交通', 'car', '#3B82F6', TRUE),
('购物', 'shopping-bag', '#10B981', TRUE),
('娱乐', 'game-controller', '#8B5CF6', TRUE),
('医疗', 'medical', '#F59E0B', TRUE),
('教育', 'book', '#06B6D4', TRUE),
('其他', 'more', '#6B7280', TRUE);
```
**账单表 (bills)**
```sql
-- 创建账单表
CREATE TABLE bills (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
category_id INT NOT NULL,
amount DECIMAL(10,2) NOT NULL,
description TEXT,
bill_date DATE NOT NULL,
type ENUM('expense', 'income') DEFAULT 'expense',
merchant VARCHAR(255),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
FOREIGN KEY (category_id) REFERENCES categories(id)
);
-- 创建索引
CREATE INDEX idx_bills_user_id ON bills(user_id);
CREATE INDEX idx_bills_date ON bills(bill_date DESC);
CREATE INDEX idx_bills_category ON bills(category_id);
CREATE INDEX idx_bills_amount ON bills(amount DESC);
```
**账单图片表 (bill\_images)**
```sql
-- 创建账单图片表
CREATE TABLE bill_images (
id INT AUTO_INCREMENT PRIMARY KEY,
bill_id INT NOT NULL,
image_path VARCHAR(500) NOT NULL,
original_name VARCHAR(255),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (bill_id) REFERENCES bills(id) ON DELETE CASCADE
);
-- 创建索引
CREATE INDEX idx_bill_images_bill_id ON bill_images(bill_id);
```
**订单表 (orders)**
```sql
-- 创建订单表
CREATE TABLE orders (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
order_no VARCHAR(32) UNIQUE NOT NULL,
amount DECIMAL(10,2) NOT NULL,
status ENUM('pending', 'paid', 'cancelled') DEFAULT 'pending',
payment_method ENUM('alipay', 'wechat', 'bank_card'),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
paid_at TIMESTAMP NULL,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);
-- 创建索引
CREATE INDEX idx_orders_user_id ON orders(user_id);
CREATE INDEX idx_orders_status ON orders(status);
CREATE INDEX idx_orders_created_at ON orders(created_at DESC)
```
确认,开始开发!
错误还是蛮多的,需要慢慢修复的,最基本使用api插入测试数据没有问题,但前端插入数据有问题,这算是一个很基础的一个功能了,用ai要调好几次,其实自己手动改一下一会就好了。
总体评价:ui设计的还凑活,但是调用api 还有后端功能性还是差点意思,我想要的集成ai功能也没有实现,只能说还可以进步。