# BOSS-stock-analysis-platform **Repository Path**: bigflyFish/boss-stock-analysis-platform ## Basic Information - **Project Name**: BOSS-stock-analysis-platform - **Description**: 集成股票分析平台 - FastAPI + akshare + Redis - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-09-06 - **Last Updated**: 2025-09-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 📈 集成股票分析平台 基于 FastAPI + akshare + SQLite + Redis + WebSocket + JWT 的完整股票分析系统 ## 🎯 四大核心功能模块 ### 📊 测试一:财务数据分析 - 从 Akshare 获取股票近6年财务报表数据(利润表、资产负债表) - 使用 SQL + FastAPI 动态查询营业收入、净利润等财务指标 - RESTful API 接口为前端提供数据服务 - Plotly.js 交互式图表展示财务数据和同比增长 - 支持年份范围筛选和动态股票名称获取 - 数据持久化存储到 SQLite 数据库 ### 测试二:沪深大盘实时数据 - 实时监控上证指数、深证成指、创业板指、中证500等主要指数 - Redis 缓存热点数据,提升响应速度 - 定时自动更新大盘指数数据 - 实时显示指数价格、涨跌幅、成交量等关键指标 - 支持Redis连接状态检测和内存缓存降级 ### 🔐 测试三:用户管理系统 - 完整的用户注册/登录功能 - JWT 身份验证和权限控制 - 管理员后台用户管理功能 - 用户状态管理(激活/禁用/删除) - bcrypt 安全密码加密存储 - 基于角色的访问控制(RBAC) ### 📱 集成仪表板:实时股价监控 - WebSocket 实时推送个股价格数据 - 支持多股票同时监控和订阅管理 - 实时系统状态监控(API、数据库、Redis、WebSocket) - 统一的系统管理界面 - 动态添加/移除股票监控 - 实时连接状态和数据更新显示 ## 🏗️ 项目结构 ``` boss测试/ ├── backend/ # 后端API服务 │ ├── app/ │ │ ├── main.py # FastAPI主应用 │ │ ├── api/ # API路由模块 │ │ │ ├── stock_api.py # 股票财务数据API │ │ │ ├── market_api.py # 大盘指数数据API │ │ │ ├── realtime_api.py # 实时股价API │ │ │ └── auth_api.py # 用户认证API │ │ ├── services/ # 业务逻辑层 │ │ │ ├── stock_service.py # 股票数据服务 │ │ │ ├── market_service.py # 大盘数据服务 │ │ │ ├── realtime_service.py # 实时数据服务 │ │ │ └── auth_service.py # 认证服务 │ │ └── database/ # 数据库配置 │ │ └── database.py # 数据库模型和连接 ├── frontend/ # 前端页面 │ └── templates/ │ ├── index.html # 财务分析页面(测试一) │ ├── market.html # 大盘数据页面(测试二) │ ├── auth.html # 用户管理页面(测试三) │ └── dashboard.html # 集成仪表板页面 ├── data/ # SQLite数据库存储 ├── requirements.txt # Python依赖 ├── run.py # 启动脚本 ├── test_integrated_system.py # 集成测试脚本 ├── memory_cache_viewer.py # 缓存状态查看工具 └── README.md ``` ## 🚀 快速开始 ### 方式一:一键启动(推荐新用户) ```bash # 自动安装依赖、初始化数据库、创建管理员账号并启动服务 python quick_start.py ``` ### 方式二:手动启动 #### 1. 安装依赖 ```bash pip install -r requirements.txt ``` #### 2. 初始化系统(首次运行) ```bash # 创建数据库表和管理员账号 python init_system.py ``` #### 3. 启动系统 ```bash python run.py ``` ### 3. 访问系统 - **🏠 集成仪表板**: http://localhost:8000/dashboard - **📊 财务分析页面**: http://localhost:8000 - **📈 大盘数据页面**: http://localhost:8000/market - **👥 用户管理页面**: http://localhost:8000/auth - **📚 API文档**: http://localhost:8000/docs - **💚 健康检查**: http://localhost:8000/health ### 4. 运行测试 ```bash # 测试集成系统 python test_integrated_system.py # 测试单个模块 python test_api.py python test_stock_name.py ``` ## 📊 主要功能 ### 📊 测试一:财务数据分析 - 输入股票代码(如:000001、600519) - 自动从 akshare 获取近6年财务数据 - 数据自动存储到 SQLite 数据库 - 支持按股票代码查询和年份范围筛选 - 使用 Plotly 生成交互式双轴图表 - 显示营业收入、净利润及同比增长率 - 动态股票名称获取和验证 ### 📈 测试二:沪深大盘实时数据 - 实时监控主要指数(上证、深证、创业板、中证500) - Redis 缓存提升数据响应速度 - 定时自动更新指数数据 - 实时显示价格、涨跌幅、成交量 - 支持Redis连接检测和内存缓存降级 - 美观的卡片式数据展示 ### 👥 测试三:用户管理系统 - 完整的用户注册和登录流程 - JWT 令牌身份验证和权限控制 - 管理员后台用户管理功能 - 用户状态管理(激活/禁用/删除) - bcrypt 安全密码加密存储 - 基于角色的访问控制 ### 🏠 集成仪表板 - 统一的系统管理界面 - 实时系统状态监控(API、数据库、Redis、WebSocket) - 四大模块快速访问入口 - 实时股价监控功能 - WebSocket 连接状态和订阅管理 - 动态添加/移除股票监控 ## 🔧 API 接口 ### 📊 股票财务数据 API ```bash # 获取财务数据 GET /api/stock/financial/{stock_code} # 动态查询 GET /api/stock/query?stock_code=000001&start_year=2018&end_year=2023 # 生成图表 GET /api/stock/chart/{stock_code}?start_year=2020&end_year=2022 # 获取股票列表 GET /api/stock/stocks ``` ### 📈 大盘数据 API ```bash # 获取大盘指数数据 GET /api/market/indices # 获取服务状态 GET /api/market/status # 测试Redis连接 GET /api/market/redis-test # 启动/停止数据采集 POST /api/market/start POST /api/market/stop ``` ### 📱 实时股价 API ```bash # 获取实时价格 GET /api/realtime/price/{stock_code} # 获取多股票价格 GET /api/realtime/prices?stock_codes=000001,000002,600519 # 获取分钟数据 GET /api/realtime/minute/{stock_code} # WebSocket连接 WS /api/realtime/ws # 服务状态 GET /api/realtime/status ``` ### 🔐 用户认证 API ```bash # 用户注册 POST /api/auth/register # 用户登录 POST /api/auth/login # 获取用户信息 GET /api/auth/me # 用户列表(管理员) GET /api/auth/users # 用户管理(管理员) PUT /api/auth/users/{user_id}/toggle-status DELETE /api/auth/users/{user_id} ``` ## 🛠️ 技术栈 - **后端框架**: FastAPI + SQLAlchemy + SQLite - **实时通信**: WebSocket + Redis - **身份认证**: JWT + bcrypt - **数据源**: akshare (A股数据) - **前端技术**: HTML + JavaScript + Plotly.js - **数据库**: SQLite (轻量级,适合测试) - **缓存**: Redis (Microsoft Redis 6380端口,支持内存缓存降级) - **部署**: Uvicorn ASGI服务器 ## 🔧 系统配置 ### 📦 Redis 配置 - **Redis版本**: Microsoft Redis (Windows版本) - **连接端口**: 6380 (非标准端口) - **连接地址**: localhost:6380 - **降级策略**: Redis连接失败时自动切换到内存缓存 - **缓存用途**: 大盘数据缓存、实时股价缓存 ### 👤 默认管理员账号 - **用户名**: `admin` - **密码**: `admin123` - **角色**: 管理员 - **权限**: 用户管理、系统监控、所有功能访问 ## 📝 使用说明 ### 🎯 集成仪表板使用 1. **访问仪表板**: 打开 http://localhost:8000/dashboard 2. **系统状态**: 查看API、数据库、Redis、WebSocket状态 3. **模块切换**: 点击对应模块卡片进入功能页面 4. **实时监控**: 启动实时股价监控,添加股票代码 ### 📊 财务分析使用 1. **输入股票代码**: 如 000001、600519 等 2. **设置年份范围**: 可选择特定年份区间 3. **获取数据**: 点击"📊 获取数据"显示表格 4. **生成图表**: 点击"📈 显示图表"生成可视化 5. **条件查询**: 使用年份筛选功能 ### 📈 大盘数据使用 1. **访问页面**: 打开 http://localhost:8000/market 2. **查看指数**: 实时显示上证、深证、创业板、中证500指数 3. **数据更新**: 系统自动定时更新指数数据 4. **Redis状态**: 查看Redis连接状态和缓存模式 5. **测试连接**: 点击"测试Redis连接"检查缓存状态 ### 📱 实时股价监控使用 1. **启动监控**: 在仪表板点击"📈 启动实时股价监控" 2. **添加股票**: 输入股票代码(如000001)添加到监控列表 3. **查看数据**: 实时显示价格变化和涨跌幅 4. **WebSocket**: 自动建立连接推送数据 5. **管理订阅**: 可以动态添加/移除股票监控 ### 👥 用户管理使用 1. **用户注册**: 提供用户名、邮箱、密码 2. **用户登录**: 获取JWT访问令牌 3. **权限验证**: 访问受保护的API接口 4. **管理功能**: 管理员可管理用户状态 ## ⚠️ 注意事项 ### 🔄 首次部署 - **自动初始化**: 系统启动时会自动创建数据库表和管理员账号 - **默认账号**: 管理员账号 `admin/admin123` 会自动创建 - **数据库**: SQLite数据库文件会自动创建在 `data/` 目录 - **无需手动创建**: 所有必要的数据和账号都会自动初始化 ### 🌐 运行环境 - **网络要求**: 首次运行需要联网获取股票数据 - **Redis可选**: Redis未安装时会自动使用内存缓存 - **数据获取**: akshare 数据获取可能需要一些时间 - **测试代码**: 建议使用常见的A股代码(如:000001, 000002, 600519等) - **端口占用**: 确保8000端口未被占用 - **浏览器**: 建议使用现代浏览器支持WebSocket ### 📦 代码分发 - **Gitee/GitHub**: 其他人下载代码后直接运行 `python quick_start.py` 即可 - **零配置**: 无需手动创建数据库或管理员账号 - **自动降级**: Redis连接失败时自动切换到内存缓存模式 ## 🔧 故障排除 ### Redis连接失败 ```bash # 本项目使用 Microsoft Redis (端口6380) # 如果Redis连接失败,系统会自动切换到内存缓存模式 # Windows安装Redis: # 1. 下载Microsoft Redis安装包 # 2. 安装后启动Redis服务 # 3. 默认端口6380 # 启动Redis服务 (Windows) redis-server --port 6380 # 检查Redis状态 redis-cli -p 6380 ping # 如果没有Redis,系统会显示: # "⚠️ Redis连接失败,使用内存缓存" ``` ### 依赖安装失败 ```bash # 使用国内镜像源 pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/ # 或者逐个安装 pip install fastapi uvicorn akshare pandas sqlalchemy plotly ``` ### WebSocket连接失败 - 检查防火墙设置 - 确认8000端口可访问 - 检查浏览器WebSocket支持 ## 🎉 功能特色 - ✅ **模块化设计**: 四大功能模块独立又集成 - ✅ **实时数据**: WebSocket推送,Microsoft Redis缓存 - ✅ **用户系统**: JWT认证,RBAC权限管理 - ✅ **响应式界面**: 现代化UI设计,卡片式布局 - ✅ **API文档**: 自动生成的交互式文档 - ✅ **错误处理**: 完善的异常处理和降级机制 - ✅ **测试覆盖**: 完整的集成测试脚本 - ✅ **部署简单**: 一键启动,开箱即用 - ✅ **缓存降级**: Redis失败时自动切换内存缓存 - ✅ **系统监控**: 实时状态监控和连接管理 - ✅ **数据可视化**: Plotly交互式图表展示 - ✅ **股票数据**: akshare实时A股数据源 ## 📞 联系信息 - **项目作者**: guanpengluo8@gmail.com - **开发环境**: Windows + Microsoft Redis - **测试状态**: 四大模块全部测试通过 - **最后更新**: 2025年6月