# ai **Repository Path**: yukiyun/ai ## Basic Information - **Project Name**: ai - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-17 - **Last Updated**: 2025-12-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AI智能记账系统 一个功能完整的全栈记账应用,支持AI对话式记账、数据统计分析、Excel导入导出等功能。 ## 技术栈 ### 后端 - Java 17 - Spring Boot 3.1.5 - Spring Security + JWT - Spring Data JPA - H2 Database (可切换为MySQL) - Apache POI (Excel处理) - Maven ### 前端 - Vue 3 - Vite - Vue Router - Pinia (状态管理) - TailwindCSS - Chart.js + vue-chartjs (图表) - Axios - Lucide Icons ## 功能特性 ✅ **用户认证** - 用户注册/登录 - JWT Token认证 - 安全的密码加密 ✅ **AI对话式记账** - 自然语言输入记账信息 - 智能识别收入/支出类型 - 自动分类和金额提取 ✅ **交易管理** - 添加、编辑、删除交易记录 - 按日期范围筛选 - 收入/支出分类管理 ✅ **统计分析** - 收入/支出总览 - 饼图展示分类占比 - 柱状图展示每日趋势 - 自定义时间范围分析 ✅ **Excel导入导出** - 导出交易记录为Excel - 从Excel批量导入数据 - 支持日期范围导出 ## 快速开始 ### 前置要求 - JDK 17+ - Maven 3.6+ - Node.js 16+ - npm 或 yarn ### 后端启动 1. 进入后端目录: ```bash cd ai-accounting/backend ``` 2. 安装依赖并启动: ```bash mvn clean install mvn spring-boot:run ``` 后端将在 `http://localhost:8080` 启动 ### 前端启动 1. 进入前端目录: ```bash cd ai-accounting/frontend ``` 2. 安装依赖: ```bash npm install ``` 3. 启动开发服务器: ```bash npm run dev ``` 前端将在 `http://localhost:5173` 启动 ### 访问应用 打开浏览器访问 `http://localhost:5173` 默认使用H2内存数据库,数据在应用重启后会丢失。 ## 配置说明 ### 后端配置 配置文件位置:`backend/src/main/resources/application.yml` **数据库配置**(切换到MySQL): ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/accounting?useSSL=false&serverTimezone=UTC driver-class-name: com.mysql.cj.jdbc.Driver username: your_username password: your_password jpa: hibernate: ddl-auto: update properties: hibernate: dialect: org.hibernate.dialect.MySQLDialect ``` **JWT配置**: ```yaml jwt: secret: YourSecretKeyForJWTTokenGenerationMustBeLongEnough123456789 expiration: 86400000 # 24小时 ``` **AI API配置**(可选): ```yaml ai: api: url: https://api.openai.com/v1/chat/completions key: your-openai-api-key model: gpt-3.5-turbo ``` 注意:AI功能默认使用本地规则解析,如需使用OpenAI API,请设置环境变量 `AI_API_KEY` ### 前端配置 创建 `.env` 文件(参考 `.env.example`): ``` VITE_API_BASE_URL=http://localhost:8080 ``` ## API文档 ### 认证接口 - `POST /api/auth/register` - 用户注册 - `POST /api/auth/login` - 用户登录 ### 交易接口 - `GET /api/transactions` - 获取所有交易 - `GET /api/transactions/range` - 按日期范围获取交易 - `POST /api/transactions` - 创建交易 - `PUT /api/transactions/{id}` - 更新交易 - `DELETE /api/transactions/{id}` - 删除交易 - `GET /api/transactions/statistics` - 获取统计数据 ### AI接口 - `POST /api/ai/chat` - AI对话记账 ### Excel接口 - `GET /api/excel/export` - 导出Excel - `POST /api/excel/import` - 导入Excel ## Excel文件格式 导入的Excel文件应包含以下列(第一行为标题): | 日期 | 类型 | 金额 | 分类 | 描述 | |------|------|------|------|------| | 2024-01-01 | INCOME | 5000 | 工资 | 月薪 | | 2024-01-02 | EXPENSE | 50 | 餐饮 | 午餐 | - **类型**:必须为 `INCOME`(收入)或 `EXPENSE`(支出) - **日期**:格式为 `yyyy-MM-dd` - **金额**:数字类型 ## 项目结构 ``` ai-accounting/ ├── backend/ # Spring Boot后端 │ ├── src/main/java/ │ │ └── com/accounting/ │ │ ├── config/ # 配置类 │ │ ├── controller/ # REST控制器 │ │ ├── dto/ # 数据传输对象 │ │ ├── entity/ # JPA实体 │ │ ├── repository/ # 数据访问层 │ │ ├── security/ # 安全配置 │ │ └── service/ # 业务逻辑 │ └── pom.xml │ └── frontend/ # Vue 3前端 ├── src/ │ ├── api/ # API调用 │ ├── components/ # Vue组件 │ ├── layouts/ # 布局组件 │ ├── router/ # 路由配置 │ ├── stores/ # Pinia状态管理 │ ├── utils/ # 工具函数 │ └── views/ # 页面组件 └── package.json ``` ## 使用示例 ### AI记账示例 在AI记账页面,您可以使用自然语言输入: - "今天午餐花了50元" - "收到工资5000元" - "买衣服花了300元" - "地铁费用10元" 系统会自动识别并创建相应的交易记录。 ### 手动记账 1. 进入"交易记录"页面 2. 点击"添加记录"按钮 3. 填写交易信息 4. 保存 ### 查看统计 1. 进入"统计分析"页面 2. 选择日期范围 3. 查看饼图和柱状图分析 ## 开发说明 ### 构建生产版本 **后端**: ```bash cd backend mvn clean package java -jar target/ai-accounting-backend-1.0.0.jar ``` **前端**: ```bash cd frontend npm run build ``` 构建产物在 `frontend/dist` 目录 ## 安全建议 1. 生产环境请修改 `jwt.secret` 为强随机字符串 2. 使用HTTPS协议 3. 配置CORS白名单 4. 使用生产级数据库(MySQL/PostgreSQL) 5. 定期备份数据 ## 许可证 MIT License ## 贡献 欢迎提交Issue和Pull Request!