# chart_studio **Repository Path**: Ome-ga/chart_studio ## Basic Information - **Project Name**: chart_studio - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-18 - **Last Updated**: 2025-12-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Chart Studio 一个功能完整的数据可视化平台,支持自然语言查询数据库、Excel 上传转报表、以及可自定义的大屏仪表板。 ## 功能特性 - **用户认证**:支持注册、登录、JWT Token 认证 - **数据源管理**:配置 MySQL 数据库连接 - **自然语言查询**:使用通义千问 AI 将自然语言转换为 SQL - **Excel 上传**:上传 Excel 文件,自动解析并生成图表 - **大屏仪表板**:可拖拽布局,支持多种图表类型 - **图表组件**:折线图、柱状图、饼图、面积图、数据卡片、表格 - **主题切换**:支持浅色/深色/系统主题 - **聊天记录**:支持 Excel 数据多轮对话问答,记录自动保存 ## 技术栈 ### 前端 - Next.js 15 (App Router) - Tailwind CSS 4 - shadcn/ui - Recharts - Zustand - next-themes ### 后端 - Golang + Gin - GORM - Redis - JWT ## 快速开始 ### 环境要求 - Node.js 18+ - Go 1.21+ - MySQL 8.0+ - Redis 6+ (可选) ### 后端设置 1. 进入后端目录: ```bash cd backend ``` 2. 复制环境变量文件: ```bash cp .env.example .env ``` 3. 编辑 `.env` 文件,配置数据库和 API 密钥: ```env PORT=8080 DB_DSN=root:password@tcp(127.0.0.1:3306)/chart_studio?charset=utf8mb4&parseTime=True&loc=Local REDIS_ADDR=127.0.0.1:6379 JWT_SECRET=your-jwt-secret-key QWEN_API_KEY=your-qwen-api-key ``` 4. 创建数据库: ```sql CREATE DATABASE chart_studio CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 5. 安装依赖并启动: ```bash go mod tidy go run main.go ``` ### 前端设置 1. 进入前端目录: ```bash cd frontend ``` 2. 安装依赖: ```bash npm install ``` 3. 创建环境变量文件: ```bash echo "NEXT_PUBLIC_API_URL=http://localhost:8080/api/v1" > .env.local ``` 4. 启动开发服务器: ```bash npm run dev ``` 5. 打开浏览器访问 http://localhost:3000 ## 项目结构 ``` chart-studio/ ├── frontend/ # Next.js 前端 │ ├── app/ # 页面和布局 │ │ ├── (auth)/ # 认证相关页面 │ │ └── (main)/ # 主应用页面 │ ├── components/ # React 组件 │ │ ├── ui/ # shadcn/ui 组件 │ │ ├── charts/ # 图表组件 │ │ ├── dashboard/ # 仪表板组件 │ │ └── shared/ # 共用组件 │ ├── lib/ # 工具函数 │ ├── store/ # Zustand 状态管理 │ └── types/ # TypeScript 类型定义 │ ├── backend/ # Golang 后端 │ ├── config/ # 配置 │ ├── controller/ # 控制器 │ ├── middleware/ # 中间件 │ ├── model/ # 数据模型 │ ├── router/ # 路由 │ ├── service/ # 业务逻辑 │ └── utils/ # 工具函数 │ └── uploads/ # 上传文件目录 ``` ## API 文档 ### 认证 | 方法 | 路径 | 描述 | |------|------|------| | POST | /api/v1/auth/register | 用户注册 | | POST | /api/v1/auth/login | 用户登录 | | POST | /api/v1/auth/logout | 用户登出 | | GET | /api/v1/user/me | 获取当前用户 | ### 数据源 | 方法 | 路径 | 描述 | |------|------|------| | GET | /api/v1/datasources | 获取数据源列表 | | POST | /api/v1/datasources | 创建数据源 | | POST | /api/v1/datasources/test | 测试连接 | | DELETE | /api/v1/datasources/:id | 删除数据源 | ### 查询 | 方法 | 路径 | 描述 | |------|------|------| | POST | /api/v1/query/nl2sql | 自然语言转 SQL | | POST | /api/v1/query/execute | 执行 SQL 查询 | ### 文件上传 | 方法 | 路径 | 描述 | |------|------|------| | POST | /api/v1/upload/excel | 上传 Excel | | GET | /api/v1/upload | 获取文件列表 | | GET | /api/v1/upload/:id/preview | 预览文件数据 | | DELETE | /api/v1/upload/:id | 删除文件 | ### Excel 数据分析 | 方法 | 路径 | 描述 | |------|------|------| | GET | /api/v1/excel/:id/summary | 获取 Excel 摘要 | | POST | /api/v1/excel/query | Excel 数据问答 | | GET | /api/v1/excel/:id/chart-data | 获取图表数据 | ### 聊天记录 | 方法 | 路径 | 描述 | |------|------|------| | GET | /api/v1/chat/sessions | 获取会话列表 | | POST | /api/v1/chat/sessions | 创建会话 | | GET | /api/v1/chat/sessions/:id | 获取会话详情 | | DELETE | /api/v1/chat/sessions/:id | 删除会话 | | PUT | /api/v1/chat/sessions/:id/title | 更新会话标题 | | POST | /api/v1/chat/messages | 添加消息 | | GET | /api/v1/chat/file/:fileId/session | 获取或创建文件会话 | ### 仪表板 | 方法 | 路径 | 描述 | |------|------|------| | GET | /api/v1/dashboards | 获取仪表板列表 | | POST | /api/v1/dashboards | 创建仪表板 | | GET | /api/v1/dashboards/:id | 获取单个仪表板 | | PUT | /api/v1/dashboards/:id | 更新仪表板 | | DELETE | /api/v1/dashboards/:id | 删除仪表板 | ### 图表 | 方法 | 路径 | 描述 | |------|------|------| | GET | /api/v1/charts | 获取图表列表 | | POST | /api/v1/charts | 创建图表 | | PUT | /api/v1/charts/:id | 更新图表 | | DELETE | /api/v1/charts/:id | 删除图表 | ## 开发说明 ### 添加新的 shadcn/ui 组件 ```bash cd frontend npx shadcn@latest add ``` ### 后端开发 使用 Air 进行热重载: ```bash go install github.com/air-verse/air@latest air ``` ## 许可证 MIT