# webapi **Repository Path**: zxb4467/webapi ## Basic Information - **Project Name**: webapi - **Description**: 自媒体、智能体、文章发布综合管理平台服务端 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-05-23 - **Last Updated**: 2025-08-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # WebAPI - 公交站查询系统 基于 FastAPI 开发的 Python 后台服务端,专注于公交站查询功能,集成图片处理、位置服务和微信小程序。 ## 🎯 核心功能 - 🚌 **公交站查询**: 根据图片GPS或位置坐标查找附近公交站 - 📷 **图片处理**: 提取图片EXIF中的GPS信息,支持多种图片格式 - 🗺️ **智能路线规划**: 集成AI智能体,提供最优出行方案 - 📱 **微信小程序**: 完整的小程序客户端,支持拍照上传和GPS定位 - 👤 **用户管理**: 基础的用户认证和信息管理功能 - 📄 **文档管理**: ZIP文件处理和Markdown文档管理 - 📅 **老黄历日历**: 传统老黄历查询和万年历功能 ## 🏗️ 项目架构 ``` webapi/ ├── app/ │ ├── main.py # 主应用入口 │ ├── core/ # 核心配置 │ │ ├── config.py # 统一配置管理 │ │ └── exceptions.py # 异常处理 │ ├── routes/ # API路由 │ │ ├── bus_station.py # 公交站查询API │ │ ├── user.py # 用户管理API │ │ ├── documents.py # 文档管理API │ │ ├── zip_manager.py # ZIP文件管理 │ │ └── wechat_management.py # 微信管理API │ └── system/ # 系统工具 │ ├── database.py # 数据库配置 │ └── auth.py # 认证相关 ├── miniprogram_demo/ # 微信小程序客户端 ├── zip/ # ZIP文件存储 ├── unzip/ # 解压文件存储 ├── requirements.txt # 项目依赖 ├── requirements_clean.txt # 精简依赖 ├── Dockerfile # Docker构建文件 ├── docker-compose.yml # Docker编排文件 ├── .dockerignore # Docker忽略文件 ├── DOCKER_DEPLOYMENT.md # Docker部署说明 ├── start_server.sh # 启动脚本 └── ENVIRONMENT.md # 环境配置说明 ``` ## 虚拟环境设置 ### 创建环境 ```bash conda create -n webapi-env python=3.10 -y ``` ### 激活环境 ```bash eval "$(conda shell.bash hook)" conda activate webapi-env ``` ### 安装依赖 ```bash pip install fastapi uvicorn python-multipart Pillow ``` ## 快速启动 ### 方式1: 使用Docker部署(推荐) ```bash # 使用docker-compose启动 docker-compose up -d # 查看服务状态 docker-compose ps # 查看日志 docker-compose logs -f # 停止服务 docker-compose down ``` ### 方式2: 使用启动脚本 ```bash ./start_server.sh ``` ### 方式3: 手动启动 ```bash conda activate webapi-env uvicorn app.main:app --host 0.0.0.0 --port 8080 --reload ``` ## 🐳 Docker部署 ### 构建镜像 ```bash # 构建Docker镜像 docker build -t webapi-document-manager . # 运行容器 docker run -d \ --name webapi-document-manager \ -p 8098:8098 \ -v $(pwd)/zip:/app/zip \ -v $(pwd)/unzip:/app/unzip \ webapi-document-manager ``` ### 访问应用 - **文档管理界面**: http://localhost:8098/api/test - **API文档**: http://localhost:8098/docs - **健康检查**: http://localhost:8098/health - **系统信息**: http://localhost:8098/ 详细的Docker部署说明请查看 [DOCKER_DEPLOYMENT.md](./DOCKER_DEPLOYMENT.md) ## 🚀 API接口 - **服务地址**: - **接口文档**: - **ReDoc文档**: ### 公交站查询模块 1. **图片上传查询**: `POST /api/bus-station/upload-image` - 上传图片,自动提取GPS信息并查找附近公交站 - 支持JPG、PNG等常见图片格式 2. **位置查询**: `POST /api/bus-station/by-location` - 根据经纬度坐标查找附近公交站 - 返回距离排序的公交站列表 3. **路线规划**: `POST /api/bus-station/route-plan` - AI智能路线规划,提供最优出行方案 - 支持多种出行方式组合 ### 用户管理模块 4. **用户登录**: `POST /api/user/login` 5. **用户登出**: `POST /api/user/logout` 6. **获取用户信息**: `GET /api/user/{user_id}` 7. **更新用户信息**: `PUT /api/user/{user_id}` ### 文档管理模块 8. **文档列表**: `GET /api/documents` 9. **文档详情**: `GET /api/documents/{doc_id}` 10. **文件内容**: `GET /api/documents/{doc_id}/files/{file_name}` 11. **文档上传**: `POST /api/documents/upload` ### 老黄历日历模块 4. **今日老黄历**: `GET /api/calendar` 5. **指定日期老黄历**: `GET /api/calendar/{date}` 6. **更新节气数据**: `POST /api/calendar/solar-terms/update` ### 微信管理模块 7. **小程序管理**: `/api/wechat/miniprogram/*` 8. **公众号管理**: `/api/wechat/official-account/*` ## 📱 客户端 - 📱 **微信小程序**: 位于 `miniprogram_demo/` 目录 - 🎨 **功能特性**: 拍照上传、GPS定位、地图导航、信息分享 - 🛠️ **技术栈**: 微信小程序原生开发,集成地图服务 ## 🔧 技术栈 ### 后端技术 - **Web框架**: FastAPI - **ASGI服务器**: Uvicorn - **数据验证**: Pydantic - **图片处理**: Pillow (PIL) - **AI服务**: 阿里云DashScope、Coze - **数据库**: MySQL (可选) ### 前端技术 - **微信小程序**: 原生开发 - **地图服务**: 腾讯地图API - **文件上传**: 多媒体API ## 🚨 注意事项 1. **环境依赖**: 确保Python 3.10+环境 2. **API密钥**: 需要配置相关AI服务的API密钥 3. **网络访问**: 部分功能需要访问外部API服务 4. **文件权限**: 确保上传目录有读写权限 5. **CORS配置**: 已配置跨域访问支持 详细的环境配置说明请查看 [ENVIRONMENT.md](./ENVIRONMENT.md) ## 上传单个文件 ### 上传修复后的文件到服务器 scp /Users/zhanglingyu/Desktop/webapi/app/routes/zip_manager.py username@192.168.0.110:~/webapi/app/routes/ scp /Users/zhanglingyu/Desktop/webapi/app/routes/documents.py username@192.168.0.110:~/webapi/app/routes/ scp /Users/zhanglingyu/Desktop/webapi/app/routes/mdmanage.py username@192.168.0.110:~/webapi/app/routes/ ### 然后在服务器上重启服务 ssh username@192.168.0.110 cd ~/webapi docker-compose restart conda activate web-api && python -m uvicorn app.main:app --host 0.0.0.0 --port 8080 --reload