这个世界不能没有"基金估值"。一个保留基金估值功能的自选基金看板。
支持自选基金列表、基金实时估值、基金详情分享、基金持仓查看、历史净值走势图等功能。
- ⚡ 全面异步并发 — 数据采集层并发优化,基金详情 6 源并行、实时估值 5 因子并行
- 📈 ECharts 图表 — 今日估值趋势图、历史净值走势图(支持 1月/3月/6月/1年/全部切换)
- 🏗️ 模块化架构 —
data_sources/按领域拆分(指数/基金/持仓/股票/债券),取代原有的 1922 行单文件 - 💾 持久化缓存 — 内存 + 磁盘双层缓存,进程重启不丢失
- 🌐 Vue 3 SPA 前端 — 骨架屏加载、30 秒自动轮询、分块渲染,页面响应更快
- 🔌 API 兼容 —
/api/v1/*接口完全保留,新增/api/v2/*优化接口
| 层面 | 技术 |
|---|---|
| 后端框架 | FastAPI + Uvicorn |
| 数据采集 | httpx (异步),akshare 1.18 |
| 缓存 | 内存 LRU-TTL + 磁盘 pickle 持久化 |
| 前端 | Vue 3 + Vite + Pinia + Vue Router |
| 图表 | ECharts + vue-echarts |
| 部署 | Docker / Docker Compose |
docker compose up -d# 1. 安装依赖
uv sync
# 2. 构建前端
cd frontend && npm install && npm run build && cd ..
# 3. 启动服务
uv run python main.py启动后访问 http://localhost:8600
通过环境变量配置(或编辑 config.py):
| 变量 | 默认值 | 说明 |
|---|---|---|
host |
0.0.0.0 |
监听地址 |
port |
8600 |
监听端口 |
users |
admin:admin |
用户列表(逗号分隔,每项 用户名:密码) |
max_favour |
10 |
最大自选基金数量 |
base_url |
http://localhost:8600 |
部署域名(用于分享链接) |
已验证可用的接口(共 13 个):
- 东方财富 / 天天基金 — 指数、A股/港股/美股行情、基金净值、持仓、评级、申购信息
- 雪球 / 蛋卷基金 — 基金详情(基金经理、历史业绩排名)
- 中国债券信息网 — 中债新综合指数
- 集思录 — 可转债等权指数
所有数据源均内置降级策略(fallback chain),单源故障不影响整体服务。
| 端点 | 说明 |
|---|---|
GET /api/v1/index |
大盘指数 |
GET /api/v1/fund_info/{code} |
基金基本信息 |
GET /api/v1/evaluate/{code} |
基金实时估值 |
GET /api/v1/realtime |
实时行情因子 |
| 端点 | 说明 |
|---|---|
GET /api/v2/index |
大盘指数(英文 camelCase) |
GET /api/v2/fund/{code}/info |
基金详情 |
GET /api/v2/fund/{code}/eval |
实时估值(含持仓分解) |
GET /api/v2/fund/{code}/hold |
持仓明细 |
GET /api/v2/fund/{code}/nav-history |
历史净值 |
GET /api/v2/market/overview |
市场概览 |
GET /api/v2/admin/verify |
数据源健康检查 |
uv run pytest tests/ -v
