| 功能 | 说明 |
|---|---|
| 🏔️ 雪场百科 | 42+ 雪场档案,含海拔、雪道、缆车、开放季 |
| 🌤️ 实时天气 | 和风天气 API 接入,7 日预报 + 逐小时温度曲线 |
| 🎫 票价查询 | 各雪场官方票价结构化数据 |
| 🏨 住宿推荐 | 雪场周边酒店信息 |
| 🚆 交通指引 | 自驾/高铁/班车方案 |
| 🤖 AI 滑雪顾问 | DeepSeek 大模型 + Playwright 实时抓取携程/网页 |
┌─────────────────────────────────────────────────────────┐
│ apps/web (Next.js) │
│ React 19 · Tailwind · RSC │
├─────────────────────────────────────────────────────────┤
│ apps/api (NestJS) │
│ REST API · SSE 流式响应 · Playwright 爬虫 │
├─────────────────────────────────────────────────────────┤
│ apps/worker (NestJS) │
│ 定时采集天气 · 数据同步任务 │
├─────────────────────────────────────────────────────────┤
│ packages/db (Prisma + PostgreSQL) │
├─────────────────────────────────────────────────────────┤
│ packages/shared (Zod) │
└─────────────────────────────────────────────────────────┘
| 层级 | 技术 |
|---|---|
| 前端 | Next.js 15 · React 19 · Tailwind CSS · RSC |
| 后端 | NestJS 11 · Express · SSE |
| AI | DeepSeek API · LangChain-style Tool Calling |
| 爬虫 | Playwright · Chromium · 携程自动化 |
| 数据库 | PostgreSQL 16 · Prisma 6 |
| 缓存 | Redis 7 |
| 部署 | Docker · Caddy (HTTPS) · Turborepo |
# 1. 启动基础设施(需 Docker Desktop)
docker compose -f docker-compose.dev.yml up -d
# 2. 安装依赖
pnpm install
# 3. 配置环境变量
copy .env.example .env
# 4. 初始化数据库
pnpm db:migrate && pnpm db:seed
# 5. 启动开发服务
pnpm dev # 同时启动 API + Web访问:
| 路径 | 说明 |
|---|---|
GET /api/v1/health |
健康检查 |
GET /api/v1/resorts |
雪场列表(含天气聚合) |
GET /api/v1/resorts/:slug |
雪场详情 |
GET /api/v1/resorts/:slug/weather |
实况 + 7 日预报 |
GET /api/v1/resorts/:slug/tickets |
票价 |
POST /api/v1/chat/sessions |
创建 AI 会话 |
POST /api/v1/chat/message |
发送消息(SSE 流式响应) |
内置智能聊天机器人,支持:
- 多工具调用:实时搜索携程酒店/机票、网页搜索
- 上下文记忆:多轮对话保持上下文
- 行程规划:根据雪场数据生成滑雪行程建议
- 实时数据:通过 Playwright 抓取携程最新价格
ski/
├── apps/
│ ├── api/ # NestJS 后端 (HTTP API + Worker)
│ └── web/ # Next.js 网站
├── packages/
│ ├── api-client/ # 类型安全的 API 客户端
│ ├── db/ # Prisma Schema + Client
│ └── shared/ # Zod Schema + 共享类型
├── data/seeds/ # 种子数据
├── deploy/ # 部署脚本
└── docs/ # 文档
支持两种部署方式:
| 方式 | 适用场景 | 命令 |
|---|---|---|
| Cloudflare Tunnel | 家用自托管 | --profile tunnel |
| Caddy 反代 | 云服务器 | --profile caddy |
# 云服务器部署
docker compose -f docker-compose.prod.yml --profile caddy up -d --buildMIT
Made with ❄️ by hanxiaoyu
