mudigondahimanshu/FINPILOT
GitHub: mudigondahimanshu/FINPILOT
一款 AI 驱动的全栈个人财务 Copilot 项目,集成了模拟交易、支出预测、RAG 问答和欺诈检测等综合功能。
Stars: 1 | Forks: 0
# FinPilot — AI 驱动的个人财务 Copilot
## 进度跟踪
**当前阶段:** 第一阶段 — MVP
**最后更新:** 2026-06-17
## 第一阶段:基础与 MVP
### 1.1 项目设置
- [x] 初始化 monorepo 结构
- [x] 设置 Next.js 14 前端(TypeScript、Tailwind、shadcn/ui)
- [x] 设置 FastAPI 后端(Python、async、Pydantic)
- [x] 设置 PostgreSQL + TimescaleDB
- [x] 设置 Redis
- [x] 用于完整本地开发的 Docker Compose
- [x] 环境变量与密钥管理
- [x] GitHub Actions CI/CD 骨架
- [ ] 验证:所有服务通过 `docker compose up` 启动 ⛔ _受阻:此机器未安装 Docker(见 DEVLOG)_
### 1.2 身份验证系统
- [x] 用户注册(邮箱 + 密码,bcrypt 哈希)
- [x] 用户登录 → JWT 访问 token (15分钟) + refresh token (7天)
- [ ] OAuth2 Google 登录 _(下一阶段)_
- [~] 受保护的路由 middleware(前端 + 后端) _(后端守卫已完成;前端 middleware 随后进行)_
- [x] JWT 刷新流程 _(包含 refresh-token 轮换)_
- [x] 登出 + token 失效(Redis 黑名单)
- [x] Postgres 上的行级安全 (RLS) 策略 _(users 表;基于 GUC,FORCE RLS)_
- [ ] 验证:身份验证流程 E2E 测试通过 _(测试已编写并接入 CI,配合 Postgres+Redis;在此处 / Docker 下运行)_
### 1.3 数据库 Schema
- [ ] Users 表
- [ ] Accounts 表(银行账户)
- [ ] Transactions 表
- [ ] Categories 表
- [ ] Budgets 表
- [ ] Portfolios 表
- [ ] Trades 表
- [ ] Audit log 表(审计日志)
- [ ] Alembic 迁移工作正常
- [ ] 验证:Schema 已应用,迁移可逆
### 1.4 交易管理
- [ ] CSV 上传与解析
- [ ] 手动输入交易
- [ ] 带有筛选功能的交易列表 UI(日期、类别、金额)
- [ ] 按类别的支出明细
- [ ] 月度趋势图表
- [ ] 预算警报(超支时发送电子邮件)
- [ ] 订阅检测器(定期扣款识别)
- [ ] 验证:1000 笔交易在 < 1s 内加载
### 1.5 仪表板(第一阶段)
- [ ] 深色/浅色主题切换(默认深色)
- [ ] 储蓄率小部件
- [ ] 每月支出摘要卡片
- [ ] 类别明细(圆环图)
- [ ] 最近交易列表
- [ ] 预算进度条
- [ ] 响应式布局(桌面端 + 移动端)
- [ ] 验证:Lighthouse 得分 > 85
## 第二阶段:算法引擎
### 2.1 市场数据集成
- [ ] 集成 yfinance(免费)获取 NSE/BSE 股票数据
- [ ] 集成 Finnhub API(免费层)获取实时报价
- [ ] 将 OHLC 数据存入 TimescaleDB
- [ ] 带自动补全功能的股票代码搜索(Trie 数据结构)
- [ ] 股票详情页面(价格、图表、基本面)
- [ ] 用于实时价格推送的 WebSocket
- [ ] 使用 Redis pub/sub 向多客户端分发
- [ ] 验证:实时价格更新延迟 < 500ms
### 2.2 模拟交易引擎
- [ ] 虚拟投资组合(默认 ₹1,00,000 本金)
- [ ] 买入/卖出订单表单
- [ ] 订单撮合引擎(优先队列 — 最小/最大堆)
- [ ] 以实时市场价格执行交易
- [ ] 盈亏计算(未实现 + 已实现)
- [ ] 交易历史表
- [ ] 投资组合持仓明细
- [ ] 自选列表管理
- [ ] 验证:订单撮合引擎单元测试通过(已验证 O(log n) 复杂度)
### 2.3 投资组合优化器
- [ ] 马科维茨现代投资组合理论实现
- [ ] 有效前沿计算
- [ ] 夏普比率最大化(二次优化)
- [ ] 根据风险承受能力建议资产配置
- [ ] 当前投资组合的风险评分 (0-100)
- [ ] 再平衡建议
- [ ] 验证:优化器生成有效的配置(权重总和为 1,非负)
### 2.4 DSA 展示
- [ ] 订单簿:最小/最大堆,支持 O(log n) 的插入/删除
- [ ] 股票代码自动补全:支持前缀搜索的 Trie
- [ ] 移动平均线:单调队列(滑动窗口)
- [ ] 用于市场数据的 LRU cache
- [ ] 图:用于欺诈检测的交易邻接表
- [ ] 验证:所有数据结构均已进行基准测试与记录
## 第三阶段:AI 大脑
### 3.1 交易分类器 (ML)
- [ ] 特征工程(金额、商户名称、时间)
- [ ] 用于 15+ 支出类别的 XGBoost 分类器
- [ ] 训练 pipeline(Python 脚本)
- [ ] FastAPI 中的推理 endpoint
- [ ] 交易上传时自动分类
- [ ] UI 中显示置信度得分
- [ ] 手动更正(用户修正 → 反馈给训练数据)
- [ ] 验证:在测试集上准确率 > 90%
### 3.2 预测(深度学习)
- [ ] 用于支出预测的 LSTM 模型(30 天周期)
- [ ] ARIMA 基准(与 LSTM 对比)
- [ ] 股票价格预测(LSTM + Transformer)
- [ ] 预测的置信区间
- [ ] 导出 ONNX 以实现快速推理
- [ ] 预测仪表板小部件(30 天支出预测)
- [ ] 验证:在留出集上的 RMSE < 15%
### 3.3 情感分析
- [ ] 集成 FinBERT (Hugging Face)
- [ ] 新闻标题抓取器(RSS:Economic Times、Mint、Bloomberg)
- [ ] 每只股票的情感得分
- [ ] 交易 UI 中带有情感标签的新闻流
- [ ] 验证:情感标签与 100 个样本的人工评估一致
### 3.4 欺诈检测
- [ ] 交易图构建器(节点 = 用户/商户,边 = 转账)
- [ ] BFS/DFS 连通分量(检测欺诈网络)
- [ ] 环路检测(洗钱模式)
- [ ] 用于行为异常评分的 Isolation Forest
- [ ] 速度检查(T 秒内 N 次交易)
- [ ] 地理位置异常(异常的登录国家/时间)
- [ ] 实时欺诈警报(< 200ms)
- [ ] 验证:在合成攻击数据集上 0 假阴性
### 3.5 RAG Copilot
- [ ] 文档摄取 pipeline(SEBI 法规、财务 PDF)
- [ ] 文本分块 + embedding(text-embedding-3-small 或本地)
- [ ] 将 embedding 存入 pgvector
- [ ] 语义检索(每次查询获取 top-5 相关块)
- [ ] 在金融问答数据集上使用 LoRA 微调 7B Mistral
- [ ] RAG 链(LangChain:检索 → 调节 LLM → 带引用的回答)
- [ ] 带有对话历史的聊天 UI
- [ ] 推理展示(“我这样说是因为……”)
- [ ] 赞/踩反馈记录
- [ ] 验证:在 20 个金融问答测试用例上提供有依据的回答
### 3.6 在线学习系统
- [ ] 记录每一次推荐及用户操作(接受/拒绝)
- [ ] 用于推荐上下文 bandit(探索/利用)
- [ ] 每周重训 pipeline(Celery + cron)
- [ ] 用户级偏好 embedding(Postgres 中的向量)
- [ ] A/B 测试框架(10% 测试组 vs 90% 对照组)
- [ ] 模型版本管理(保存 checkpoint,按日期标记)
- [ ] 验证:推荐接受率逐周提升(模拟环境)
## 第四阶段:安全与生产
### 4.1 安全加固
- [ ] MFA:TOTP(Google Authenticator)
- [ ] 无密码:WebAuthn(生物识别/安全密钥)
- [ ] PII token 化(信用卡 → tok_xxx,SSN → 哈希)
- [ ] 字段级加密(敏感列上使用 pgcrypto)
- [ ] CORS 加固(仅限白名单)
- [ ] 限流:Redis token bucket(每用户 100 请求/分钟)
- [ ] 输入验证:到处使用 Pydantic + Zod schema
- [ ] 预防 SQL 注入:仅使用参数化查询
- [ ] OWASP Top 10 审计
- [ ] 依赖漏洞扫描(pip-audit + npm audit)
- [ ] 验证:OWASP ZAP 扫描通过
### 4.2 基础设施与部署
- [ ] 所有服务(前端、后端、ml、worker)的 Dockerfile
- [ ] Docker Compose(开发 + 生产变体)
- [ ] AWS:后端 + ml 的 ECS 任务定义
- [ ] AWS:用于前端的 S3 + CloudFront
- [ ] AWS:RDS Postgres(多可用区)
- [ ] AWS:ElastiCache Redis
- [ ] AWS:用于所有凭证的 Secrets Manager
- [ ] 以上所有的 Terraform 脚本
- [ ] 验证:全栈在 < 30分钟内从零开始部署到 AWS
### 4.3 监控与可观测性
- [ ] Prometheus 指标(API 延迟、错误率、欺诈检测)
- [ ] Grafana 仪表板(系统健康 + 业务指标)
- [ ] 结构化日志(JSON,ELK 或 CloudWatch)
- [ ] 正常运行时间监控 + 警报(PagerDuty 或 SNS)
- [ ] ML 模型漂移检测(数据分布偏移警报)
- [ ] 验证:模拟停机后 60 秒内触发警报
### 4.4 测试
- [ ] 后端:pytest 单元测试(覆盖率 90%+)
- [ ] 前端:Vitest + React Testing Library
- [ ] 集成测试:API 契约测试
- [ ] E2E 测试:Playwright(完整用户流程)
- [ ] 负载测试:k6(1000 个并发用户)
- [ ] ML 测试:数据验证(Great Expectations)
- [ ] 验证:所有测试套件在 CI 中均为绿色通过
### 4.5 移动应用
- [ ] React Native (Expo) 设置
- [ ] 身份验证界面
- [ ] 仪表板(复用 API,针对移动端优化的 UI)
- [ ] 交易界面
- [ ] 推送通知(欺诈警报、预算警告)
- [ ] 验证:在 iOS 模拟器 + Android 模拟器上运行
## 快速参考
### 技术栈
| 层级 | 技术 |
|-------|------------|
| 前端 | Next.js 14, React 18, TypeScript, Tailwind CSS, shadcn/ui |
| 图表 | Recharts + D3.js |
| 状态 | TanStack Query (React Query) |
| 后端 | FastAPI, Python 3.11, Pydantic v2 |
| 身份验证 | JWT, OAuth2, bcrypt, WebAuthn |
| 任务队列 | Celery + Redis |
| 数据库 | PostgreSQL 15 + TimescaleDB + pgvector |
| 缓存 | Redis |
| ML | PyTorch, XGBoost, Scikit-learn, ONNX |
| LLM | Mistral 7B (LoRA 微调), LangChain |
| NLP | FinBERT (Hugging Face) |
| 市场数据 | yfinance, Finnhub API, Alpha Vantage |
| 部署 | Docker, AWS ECS, Lambda, RDS, CloudFront |
| IaC | Terraform |
| CI/CD | GitHub Actions |
| 监控 | Prometheus, Grafana, ELK stack |
| 测试 | pytest, Vitest, Playwright, k6 |
### API 端点(高层概览)
- `POST /auth/register — 创建账户
- `POST /auth/login` — 获取 JWT token
- `GET /dashboard/summary` — 概览统计
- `GET /transactions` — 分页交易列表
- `POST /transactions/upload` — CSV 上传
- `GET /portfolio` — 当前持仓 + 盈亏
- `POST /trades/order` — 提交模拟交易
- `GET /market/quote/:ticker` — 实时股票报价
- `POST /copilot/chat` — RAG copilot 消息
- `GET /forecast/spending` — 30 天支出预测
- `GET /forecast/risk-score` — 投资组合风险评分
- `WS /ws/prices` — 实时价格 WebSocket
## 入门指南(本地开发)
```
# 1. 复制环境模板并填入 secrets
cp .env.example .env
# 2. 启动全栈(Postgres+TimescaleDB+pgvector, Redis, backend, frontend)
docker compose up --build
# Frontend: http://localhost:3000
# Backend: http://localhost:8000 (文档位于 /docs)
# Postgres: localhost:5432
# Redis: localhost:6379
```
如果不使用 Docker,请分别运行各项服务 — 参见 `frontend/README` 说明以及 `ARCHITECTURE.md` 中的 `backend/` (uvicorn) 指导。
## 重要约束
- **仅限模拟交易**(出于教育目的)。无真实支付处理或实际券商交易。
- 每个交易界面上的**法律免责声明**:_"本内容仅供教育目的。不构成任何投资建议。"_
- 市场数据来自**免费 API**(yfinance、Finnhub 免费层、Alpha Vantage 免费层)。
- **LLM 微调:** 仅限 LoRA (PEFT),最大支持 7B 模型。
- 云端目标:**AWS** 为主,Azure 为辅。尽可能使用免费层。
- **印度优先** (NSE/BSE),架构设计已考虑向全球扩展。
标签:Apex, AV绕过, FastAPI, PostgreSQL, 个人理财, 凭据扫描, 搜索引擎查询, 机器学习, 测试用例, 漏洞利用检测, 请求拦截