Skip to content

vincentwuxi/plot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

212 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Plot - Narrative Travel Planner

v0.19.0 | 全球首个叙事型旅行规划平台 (The Narrative Travel Planner)

📖 项目概述

Plot 是一个创新的旅行规划平台,核心理念是 "Planning as Screenwriting"(旅行规划即剧本创作)。通过 AI 技术,将传统的旅行规划转化为富有叙事性的体验。

核心价值

  • 🎬 叙事驱动 - 用故事包装旅途,让每一站都有意义
  • 🤖 AI 赋能 - 智能发现、筛选、规划、生成
  • 📱 多端支持 - Web 应用 + PWA 离线能力

🏗️ 技术架构

技术栈

层级 技术 版本
框架 Next.js (App Router) 15.5.9
UI 库 React 19.2.3
语言 TypeScript 5.x
样式 Tailwind CSS 4.x
动画 Framer Motion 12.x
地图 Mapbox GL JS 3.x
AI Google Gemini (via proxy) -
数据库 Better-SQLite3 (本地) / D1 (云端) -
ORM Drizzle ORM 0.45.x
认证 NextAuth.js 5.x-beta

系统架构图

┌─────────────────────────────────────────────────────────────┐
│                        Frontend                              │
│  Next.js 15 (App Router) + React 19 + Tailwind CSS          │
└──────────────────────┬──────────────────────────────────────┘
                       │
┌──────────────────────▼──────────────────────────────────────┐
│                    API Layer                                 │
│  /api/discovery  /api/trip  /api/story  /api/pois  /api/admin│
└──────────────────────┬──────────────────────────────────────┘
                       │
┌──────────────────────▼──────────────────────────────────────┐
│                 Service Layer                                │
│  lib/gemini/  lib/trip/  lib/export/  lib/admin/            │
└──────────────────────┬──────────────────────────────────────┘
                       │
┌──────────────────────▼──────────────────────────────────────┐
│              Data Layer (SQLite / D1)                        │
│  users  trip_plans  pois  published_stories  token_usage    │
└─────────────────────────────────────────────────────────────┘

📊 数据模型

核心实体

┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│     users       │     │   trip_plans    │     │      pois       │
│ ─────────────── │     │ ─────────────── │     │ ─────────────── │
│ id              │     │ id              │     │ id              │
│ email           │     │ user_id    ────►│     │ name            │
│ name            │     │ title           │     │ coordinates     │
│ role            │     │ destination     │     │ category        │
│ status          │     │ trip_days       │     │ content (JSON)  │
│ created_at      │     │ collected_pois  │     │ practical_info  │
└─────────────────┘     │ itinerary       │     └─────────────────┘
                        │ status          │
                        └─────────────────┘
                                │
                                ▼
┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│  trip_versions  │     │published_stories│     │  token_usage    │
│ ─────────────── │     │ ─────────────── │     │ ─────────────── │
│ trip_plan_id   ◄──────│ trip_plan_id    │     │ user_id         │
│ version         │     │ story_data      │     │ action          │
│ itinerary       │     │ html_content    │     │ input_tokens    │
│ created_at      │     │ is_published    │     │ output_tokens   │
└─────────────────┘     └─────────────────┘     └─────────────────┘

数据库迁移 (8个)

迁移文件 功能
schema.sql 基础用户表
002_token_usage.sql Token 使用追踪
003_trip_plans.sql 行程计划表
004_poi_core.sql POI 核心表结构
005_add_trip_end_date.sql 行程结束日期
006_trip_versions.sql 行程版本管理
007_published_stories.sql 故事发布表
008_story_publish_status.sql 故事公开/私有状态

🎯 产品功能

1. AI 探索发现

功能 描述
想法输入 从文学作品、电影、个人灵感出发
场景推荐 AI 分析并推荐相关旅行场景
关键词搜索 按名称/地点搜索 POI
POI 详情 丰富的地点信息、文化背景、实用信息

2. POI 管理

功能 描述
收藏 保存感兴趣的地点
筛选 按类型、评分、叙事滤镜过滤
导出到行程 批量将收藏导入行程
地图查看 Google Maps / 高德地图 快速打开

3. 行程规划

功能 描述
AI 智能筛选 将 POI 分为必去/推荐/可选
多节奏模式 极速游/均衡/深度/慢游 四种节奏
AI 行程生成 自动安排多日行程
对话式修改 用自然语言调整行程
版本管理 保存多个行程版本

4. 故事生成与发布

功能 描述
AI 故事生成 将行程转化为叙事故事
多种滤镜 文学/电影/历史/建筑/情绪等
HTML 导出 生成精美 HTML 页面
公开/私有 控制故事的可见性
分享链接 复制链接分享给朋友

5. 后台管理

功能 描述
用户管理 激活、暂停、角色变更
数据统计 用户数、POI 数、Token 消耗
AI 配置 API 地址、模型、参数
系统设置 站点配置、功能开关

📁 项目结构

plot/
├── app/                          # Next.js App Router
│   ├── page.tsx                  # Landing Page
│   ├── planner/                  # 规划工作区
│   │   ├── page.tsx              # 主规划页 (探索/收藏/行程标签)
│   │   └── trips/                # 行程列表
│   ├── admin/                    # 管理后台
│   │   ├── dashboard/            # 仪表盘
│   │   ├── users/                # 用户管理
│   │   ├── ai-config/            # AI 配置
│   │   └── token-usage/          # Token 统计
│   ├── settings/                 # 用户设置
│   └── api/                      # API Routes (50+)
│       ├── discovery/            # POI 发现
│       ├── trip/                 # 行程管理
│       ├── story/                # 故事生成
│       ├── pois/                 # POI CRUD
│       └── admin/                # 管理 API
├── components/                   # React 组件 (60+)
│   ├── workspace/                # 工作区组件
│   ├── trip/                     # 行程组件
│   ├── discovery/                # 探索组件
│   ├── admin/                    # 管理组件
│   ├── ui/                       # UI 基础组件
│   └── mobile/                   # 移动端组件
├── hooks/                        # React Hooks (9个)
├── lib/                          # 核心服务
│   ├── gemini/                   # AI 服务
│   ├── trip/                     # 行程服务
│   ├── export/                   # 导出服务
│   ├── db/                       # 数据库
│   ├── auth/                     # 认证
│   └── admin/                    # 管理服务
├── types/                        # TypeScript 类型 (6个)
└── tests/                        # 测试文件 (12个)

🚀 快速开始

1. 安装依赖

npm install

2. 配置环境变量

cp .env.example .env.local

必需配置:

变量 说明
AUTH_SECRET NextAuth 加密密钥
GEMINI_API_URL Gemini API 代理地址
GEMINI_API_KEY Gemini API 密钥
NEXT_PUBLIC_MAPBOX_TOKEN Mapbox 地图令牌

3. 初始化数据库

npm run db:init

4. 启动开发服务器

npm run dev
# 访问 http://localhost:3088

🐳 Docker 部署

# 开发环境
docker compose up -d --build

# 生产环境
docker compose -f docker-compose.prod.yml up -d

📋 版本历史

版本 日期 主要变更
0.17.0 2026-01-21 故事公开/私有、地图导出、节奏优化、仪表盘 POI 统计
0.13.0 2026-01-18 多渠道发现、POI 筛选、行程日期
0.12.0 2026-01-18 产品架构重设计、收藏夹导出
0.9.10 2026-01-17 AI 流式响应、Token 追踪
0.9.9 2026-01-17 PWA 支持、移动端组件
0.9.8 2026-01-17 组件模块化重构
0.9.7 2026-01-17 专业行程规划、导出服务
0.3.x 2026-01-16 系统设置、Cloudflare 部署、管理后台
0.2.0 2026-01-16 探索发现模式、AI 筛选、故事生成
0.1.0 2026-01-15 初始版本、核心引擎

📄 许可证

MIT License

📮 联系

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages