Appearance
项目结构
仓库根目录
text
finance-app/
├── build.gradle # Gradle 构建脚本(依赖、打包、前端集成、Spotless)
├── settings.gradle
├── gradlew / gradlew.bat # Gradle Wrapper
├── package.sh # 宿主机打包可执行 jar 的脚本
├── reload.sh # 触发后端容器内增量编译(开发用)
├── README.md # 功能特性与技术栈概览
├── AGENTS.md # 开发约定(AI 助手与开发者参考)
├── docs/ # 补充说明文档
├── run/ # 运行与部署编排
│ ├── docker-compose.yml # 前后端 Docker 编排
│ ├── backend/ # 打入前端的可执行 jar
│ ├── front/ # Nginx 托管的前端产物与配置
│ └── ai-dev/ # AI 测试环境启动脚本
├── src/main/java/ # 后端源码
├── src/main/resources/ # 配置、MyBatis XML、建表脚本
└── frontend/ # Vue 3 前端后端包结构
src/main/java/cn/rosercode/finance/
| 包 | 职责 |
|---|---|
client | 外部服务客户端(DeepSeek) |
common | 通用响应(Result、PageResult)、业务异常与全局异常处理 |
config | 应用配置、动态数据源、Knife4j、MyBatis-Plus、SPA 路由回退 |
controller | REST 接口层 |
converter | MapStruct 对象转换器(VoConverter) |
dto | 请求对象 |
email | IMAP 邮箱账单抓取(监听、拉取、解析、存储) |
entity | 数据库表映射实体 |
enums | 枚举(BillType、AiCallType、StatisticsDimension 等) |
exporter | Excel 导出处理 |
importer | 账单解析器(支付宝/微信/美团/银行)与压缩包解密 |
interceptor | JWT 鉴权、访问日志 |
mapper | 数据访问层(MyBatis-Plus) |
notification | 通知渠道发送器 |
scheduler | 定时任务(通知、日志清理、邮箱账单) |
service / service.impl | 业务层 |
util | 工具类(JwtUtil、UserContext、AppLogUtils 等) |
vo | 响应对象 |
launcher | 桌面 GUI 启动器(仅打入带 GUI 的 jar) |
资源目录
src/main/resources/
text
application.yml # 应用配置(JWT、MyBatis-Plus、springdoc、端口等)
logback-spring.xml # 日志配置(控制台 + 按天滚动文件)
mapper/ # MyBatis XML
sql/
├── init.sql # MySQL 建表脚本
├── schema-sqlite.sql # SQLite 建表脚本(以 ;; 分隔语句)
├── init_categories.sql # 默认分类种子(MySQL)
└── init_tags.sql # 默认标签种子(MySQL)前端结构
frontend/src/
text
api/ # 各模块 REST 接口封装(axios)
components/ # 复用组件(账单预览、导入结果、AI/通知/数据库配置面板等)
composables/ # 组合式函数(关键词历史)
locales/ # 中/英/日三语文案(messages.ts)
router/ # 路由与导航守卫
store/ # Pinia 状态(user / database / registration)
utils/ # 工具(支付方式标签、SSE 封装、渲染辅助)
views/ # 页面组件运行时目录
应用运行目录下会自动创建:
| 目录/文件 | 说明 |
|---|---|
config/database.json | 数据库配置(SQLite / MySQL) |
config/app.json | 应用配置(注册开关、通知链接、日志保留天数) |
data/ | SQLite 数据文件与邮箱账单附件 |
logs/ | 运行日志文件 |