平台总览
本平台是一个金融级 A 股投资分析系统,覆盖资金流向分析、AI 智能选股、投资顾问对话、全球市场热点监控、游资数据 BI 等核心场景。 系统基于 Next.js 16 全栈框架构建,采用 PostgreSQL (Supabase) 作为主数据库,集成 Tushare Pro / 通达信 / 东方财富 / 新浪财经 / 腾讯财经 / 财联社 / DeepSeek 等 8 个外部数据源和 AI 服务。
系统上下文视图(C4 Level 1)
┌─────────────────────────────────────────────────┐
│ A股投资分析平台 │
│ │
┌──────────┐ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ ┌──────────────┐
│ 投资者 │─────▶│ │ 资金流向 │ │ AI选股 │ │ 投资顾问 │ │◀────│ Tushare Pro │
│ (用户) │ │ └──────────┘ └──────────┘ └──────────┘ │ ├──────────────┤
└──────────┘ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │◀────│ 通达信mootdx│
│ │ 全球热点 │ │ 游资狙击 │ │ 持仓盈亏 │ │ ├──────────────┤
│ └──────────┘ └──────────┘ └──────────┘ │◀────│ 东方财富 │
│ │ │ │ │ ├──────────────┤
│ ▼ ▼ ▼ │◀────│ 新浪/腾讯 │
│ ┌──────────────────────────────────────┐ │ ├──────────────┤
│ │ PostgreSQL (Supabase) 36 张表 │ │◀────│ 财联社 │
│ └──────────────────────────────────────┘ │ ├──────────────┤
└─────────────────────────────────────────────────┘◀────│ DeepSeek AI │
└──────────────┘架构视图
分层架构(C4 Level 2 - Container)
9 个一级页面,7 个 Zustand store 管理全局状态,Radix UI 组件库,深色/浅色主题切换
技术栈:React 19 + Tailwind CSS 4 + KLineCharts + Recharts + ECharts
统一 RESTful 风格,SSE 流式响应(投顾对话),JWT 认证中间件 (requireUser),服务端数据代理(CORS 绕过)
技术栈:Next.js App Router API Routes (40+ 路由)
选股引擎(条件/公式/Python 三模式),Function Calling 插件路由(Tushare/通达信/iFinD),资金流分析算法
技术栈:TypeScript + Python 混合
PostgreSQL 36 张表,数据权限隔离(user_id 过滤),迁移版本管理(migration_log)
技术栈:Drizzle ORM + pg + Supabase JS
8 个外部数据源,服务端代理统一转发,GBK 编码解码,缓存与重试机制
技术栈:Tushare / mootdx / 东方财富 / 新浪 / 腾讯 / 财联社
流式 SSE 对话,11 个 Tushare 金融工具,6 个通达信工具,产业链/技术面/基本面多维度分析
技术栈:DeepSeek v4-flash + OpenAI SDK + Function Calling
核心数据流
用户浏览器
│
├─ HTTPS ──▶ Next.js API Routes (端口 5000)
│ │
│ ├─ requireUser 中间件 ──▶ JWT 验证 ──▶ users 表
│ │
│ ├─ 数据查询 ──▶ PostgreSQL (Supabase)
│ │ └─ user_id 过滤(数据隔离)
│ │
│ ├─ 行情代理 ──▶ 东方财富 / 新浪 / 腾讯 (服务端转发)
│ │
│ ├─ AI 对话 ──▶ DeepSeek API (SSE 流式)
│ │ └─ Function Calling ──▶ Tushare / mootdx
│ │
│ └─ Python 脚本 ──▶ 子进程执行 (screener.py)
│ └─ tushare SDK 直连
│
└─ WebSocket ──▶ (暂无,全部 HTTP/SSE)功能模块
个股资金流向核心模块,整合 K 线图、主副图联动、自选股管理
功能特性
- KLineCharts K 线图(主图+副图)
- 自选股列表(折叠/拖拽/全屏联动)
- 资金流分析(超大单/大单/中单/小单)
- AI 分析助手(DeepSeek 流式对话)
- 系统指标 / 用户指标面板
- 笔记 / 待办 / 交易记录
API 路由
/api/favorites/api/favorites/with-performance/api/db/flow-analysis/api/stock/flow/api/stock/daily/api/stock/daily-basic/api/ai/chat-sessions/api/ai/stock-analyze数据表
favoritesdaily_datadaily_quotesflow_dataflow_analysisai_chat_sessionsuser_notesuser_todosuser_tradesuser_panel_logschart_settings数据模型
认证与用户
基础数据
行情数据
用户功能
AI 功能
投资顾问
系统
接口设计
接口规范
GET 查询 / POST 创建 / PATCH 更新 / DELETE 删除,统一 JSON 响应
投资顾问对话使用 Server-Sent Events,支持 data: JSON 分块传输
x-session header 传递 JWT token,requireUser 中间件统一校验
所有用户数据按 user_id 过滤,未登录 GET 返回空/NULL 数据
API 分类总览
| 分类 | 路由前缀 | 数量 | 说明 |
|---|---|---|---|
| 认证 | /api/auth/* | 3 | 登录/注册/注销/会话 |
| 自选股 | /api/favorites/* | 2 | 自选股 CRUD + 含涨跌幅联查 |
| 行情数据 | /api/stock/* | 14 | 日K/资金流/财务/板块/指数/全球指数/热股榜 |
| 通达信 | /api/mootdx/* | 14 | 实时行情/分时/逐笔/资金流/财务/港股通 |
| AI 选股 | /api/ai-stock/* | 11 | 选股/策略/回测/订单/持仓/对话 |
| 投资顾问 | /api/investment-advisor/* | 4 | SSE对话/会话CRUD/消息/自动化 |
| AI 分析 | /api/ai/* | 4 | 股票分析/公式辅助/Python辅助 |
| 用户数据 | /api/notes, /api/todos, /api/trades... | 12 | 笔记/待办/交易/配置/偏好/方案 |
| 系统 | /api/app-config, /api/supabase-config... | 5 | 全局配置/查询日志/面板日志 |
安全与权限
认证体系
x-session header 传递数据权限隔离
| 表 | 隔离字段 | 未登录行为 | 外键策略 |
|---|---|---|---|
favorites | user_id | GET 返回空数组 | ON DELETE CASCADE |
user_screener_records | user_id | GET 返回 user_id IS NULL | ON DELETE SET NULL |
advisor_conversations | user_id | 写操作 401 | ON DELETE CASCADE |
user_automation_tasks | user_id | 写操作 401 | ON DELETE CASCADE |
ai_strategies | user_id | GET 返回系统策略 | ON DELETE CASCADE |
user_notes / todos / trades | user_id | GET 返回空 | ON DELETE CASCADE |
依赖拓扑
前端技术栈
Next.js16.1.1全栈框架(App Router + Turbopack)React19.2.3UI 基础库TypeScript5.x类型安全Tailwind CSS4.x原子化样式Zustand5.0.14全局状态管理(7 个 store)KLineCharts10.0.0-beta3K 线图渲染引擎Recharts2.15.4数据可视化图表ECharts6.1.0复杂图表(热力图/散点图)Radix UIlatest无障碍基础组件库react-markdown10.1.0Markdown 渲染(含 GFM)html2canvas1.4.1对话内容截图导出react-resizable-panels4.2.0可拖拽面板布局后端技术栈
Next.js API Routes16.1.1服务端 API(40+ 路由)Custom Server (tsx)4.19.2自定义 Node.js 服务器OpenAI SDK7.0.0DeepSeek LLM 调用 + Function Callingcoze-coding-dev-sdk0.7.24Coze 平台集成jsonwebtoken9.0.3JWT 认证签发与验证bcryptjs3.0.3密码哈希iconv-lite0.7.0GBK 编码解码(新浪财经)xlsx0.18.5Excel 导入导出jspdf4.2.1PDF 报告生成数据层
PostgreSQL (Supabase)15.x主数据库(36 张表)@supabase/supabase-js2.95.3Supabase 客户端 SDKdrizzle-orm0.45.1ORM 查询构建器pg8.16.3PostgreSQL 驱动外部数据源与服务
Tushare Pro-A股行情/财务/龙虎榜/游资数据通达信 (mootdx)-实时行情/分时/逐笔数据AKShare-Python 金融数据接口库东方财富-资金流向数据源新浪财经-板块行情/热股榜数据腾讯财经-全球指数实时行情财联社-7×24 电报快讯DeepSeekv4-flashAI 对话/分析大模型Python 脚本
Python 33.x选股脚本沙箱执行tushare-Tushare Pro Python SDKakshare-AKShare 数据接口mootdx-通达信 Python 接口外部数据源拓扑
| 数据源 | 描述 | 关键接口 | 使用模块 |
|---|---|---|---|
| Tushare Pro | A股行情/财务/龙虎榜/游资/板块数据 | daily, daily_basic, moneyflow, top_list, hm_detail, top_inst, hm_list, dc_concept, dc_daily, fina_indicator... | AI选股/游资狙击/全球热点/投资顾问 |
| 通达信 (mootdx) | 实时行情/分时/逐笔/K线 | quotes, bars, minutes, ticks, flow, finance, hkgt, hsgt | MOOTDX数据终端/投资顾问插件 |
| 东方财富 | 资金流向数据 | push2.eastmoney.com | 资金流向核心数据源 |
| 新浪财经 | 板块行情/热股榜 | vip.stock.finance.sina.com.cn (GBK) | 全球热点热力图/热股榜/板块资金流 |
| 腾讯财经 | 全球指数实时行情 | qt.gtimg.cn | 全球热点指数地图 |
| 财联社 | 7×24 电报快讯 | cls.cn telegraph API | 全球热点快讯 |
| AKShare | Python 金融数据 | intraday 等接口 | AKShare 数据页面 |
| DeepSeek | AI 大模型 | deepseek-chat (v4-flash) | 投资顾问/AI选股/AI分析助手 |
部署与运维
运行环境
- • Node.js 24 + pnpm 包管理
- • 自定义 Server (src/server.ts) + tsx 热重载
- • 预览端口 5000(绑定 0.0.0.0)
- • Python 3 子进程执行选股脚本
- • .preview 文件声明端口(可扩展)
构建与部署
- • Docker 镜像构建(Dockerfile + tsup bundle)
- • scripts/build.sh — 构建脚本
- • scripts/start.sh — 生产启动脚本
- • scripts/dev.sh — 开发启动(含 load-env.js)
- • scripts/load-env.js — 从 Supabase 加载密钥到 .env
数据库迁移
- • migrations/ 目录管理版本化 SQL 脚本
- • migration_log.json 追踪版本状态
- • _migration_log 表记录执行历史
- • UP/DOWN 双向脚本,幂等执行
- • 当前版本:1.2.0(2026-08-05)
监控与日志
- • query_log 表记录数据查询耗时
- • app_config 表持久化运行时密钥
- • Supabase Dashboard 监控数据库
- • 服务端 console + 文件日志
- • token_usage (jsonb) 记录 AI 调用统计
二次封装与自定义配置
KLineCharts自定义主图/副图指标、全屏联动、自选股面板嵌入、十字光标交互html2canvasonclone 注入 CSS 覆盖 oklch/lab 颜色为 rgb/hex,截取 .ai-markdown-content 而非整个消息容器OpenAI SDKDeepSeek API 兼容层,TOOLS_MAP 按 plugin ID 路由到不同工具集(Tushare/通达信/iFinD)Supabaseapp_config 表替代 .env 文件持久化密钥,load-env.js 启动时自动加载iconv-lite新浪财经 GBK 编码解码,TextDecoder("gbk") 替代方案react-resizable-panels自选股面板折叠/拖拽,全屏模式宽度自适应