一个面向 A 股研究场景的 AI 笔记应用:左侧看行情与概览,中间看资讯,右侧写笔记并基于当前笔记上下文向 DeepSeek 提问。
- 支持输入 6 位 A 股代码(示例:
600519) - 展示收盘走势折线/面积图(默认
daily+ 最近 90 条) - 展示股票概览信息:最新收盘、涨跌幅、PE(TTM)、PB、总市值、行业、上市日期
- 后端数据源为 AkShare(通过 Python 网关调用)
- 内置
stock_info_global_em资讯流 - 支持刷新最新资讯
- 卡片展示标题、摘要、发布时间,并可跳转原文链接
- 基于“当前选中笔记”作为上下文进行问答
- 保留多轮对话上下文(问题+回答)
- 返回 Markdown 结构化分析内容(结论、逻辑、证据、风险、跟踪清单)
- 当 AI 服务异常时,自动回退本地摘要回复,避免界面空白
- Supabase 登录/注册/登出
- 自动创建与自动定位笔记:进入首页时会跳转到最新笔记;无笔记时自动创建
- 文本编辑 500ms 防抖自动保存
- 侧边栏支持 Fuse.js 模糊搜索笔记
- 支持新建、删除、切换笔记
- 前端:Next.js 15 App Router + React 19 + Tailwind CSS 4 + shadcn/ui + Recharts
- 认证:Supabase SSR(
@supabase/ssr) - 数据库:PostgreSQL + Prisma
- AI:DeepSeek(通过 OpenAI SDK 兼容接口调用)
- 行情/资讯:Next.js API Route -> Python 子进程 -> AkShare
核心链路如下:
- 页面请求内部 API(如
/api/stock-price) - API 路由调用
src/lib/akshareRunner.ts - Runner 启动
Akshare/stock_data_service.py - Python 脚本从 AkShare 拉取数据并以 JSON 返回
- 前端组件渲染图表、资讯和概览
src/
app/
api/
stock-price/
stock-overview/
stock-news/
create-new-note/
fetch-newest-note/
actions/
notes.ts
users.ts
auth/
server.ts
components/
stockChart.tsx
stockOverview.tsx
stockNews.tsx
NoteTextInput.tsx
AskAIButton.tsx
db/
schema.prisma
deepSeek/
index.ts
lib/
akshareRunner.ts
Akshare/
stock_data_service.py
stock_info_probe.py
- Node.js 18.18+(建议 20+)
- pnpm(项目包含
pnpm-lock.yaml) - Python 3.10+(需安装
akshare、pandas) - PostgreSQL(或 Supabase 提供的 Postgres)
pnpm install# 示例:venv
python3 -m venv .venv
source .venv/bin/activate
pip install -U pip
pip install akshare pandas如果你使用 Conda,也可以设置对应解释器路径到环境变量 AKSHARE_PYTHON_EXECUTABLE。
在项目根目录新建 .env.local,参考以下配置:
# Prisma / PostgreSQL
DATABASE_URL="postgresql://postgres:postgres@127.0.0.1:54322/postgres"
# Supabase(本地或云端)
SUPABASE_URL="http://127.0.0.1:54321"
SUPABASE_ANON_KEY="your_anon_key"
# DeepSeek
DEEPSEEK_API_KEY="your_deepseek_api_key"
# 可选:DeepSeek 兼容接口地址(默认 https://api.deepseek.com)
DEEPSEEK_API_URL="https://api.deepseek.com"
# 或者使用 NEXT_PUBLIC_DEEPSEEK_API_URL
# 可选:显式指定 Python 解释器
AKSHARE_PYTHON_EXECUTABLE="/absolute/path/to/python"
# 或使用 PYTHON_EXECUTABLE
# 可选:业务基础地址(部分本地流程会用到)
NEXT_PUBLIC_BASE_URL="http://localhost:3000"pnpm run prisma:generate
pnpm run prisma:migratepnpm dev打开 http://localhost:3000。
pnpm dev # 开发模式(Turbopack)
pnpm build # 构建
pnpm start # 生产启动
pnpm lint # 代码检查
pnpm prisma:generate # 生成 Prisma Client(固定 prisma@6.6.0)
pnpm prisma:migrate # 执行迁移(读取 .env.local)
pnpm prisma:studio # 打开 Prisma Studio
pnpm migrate # generate + migrateGET /api/stock-price?symbol=600519&interval=daily&timePeriod=90- 返回价格序列(OHLCV)
GET /api/stock-overview?symbol=600519- 返回股票概览信息
GET /api/stock-news?limit=20- 返回东方财富资讯流
POST /api/create-new-note?userId=<id>GET /api/fetch-newest-note?userId=<id>
项目已经在 Node Runner 与 Python 网关两层实现了短重试与退避。 如果仍失败,请优先检查:
- 网络连通性(尤其是海外网络环境)
- 本机 Python 环境是否已安装
akshare和pandas - 是否将正确解释器写入
AKSHARE_PYTHON_EXECUTABLE
本项目脚本固定使用 prisma@6.6.0,请直接用 pnpm run prisma:*,不要手动执行未锁版本的 pnpm dlx prisma。
中间件对匿名会话做了兼容处理;登录后会自动跳转到用户最新笔记或自动创建首条笔记。
- 本项目用于学习与研究交流,不构成任何投资建议。
- 市场数据与资讯来自第三方服务(AkShare/东方财富等),请以官方数据源为准。


