# wechat_backend
**Repository Path**: myloveinori/wechat_backend
## Basic Information
- **Project Name**: wechat_backend
- **Description**: 基于FastAPI的微信公众号图包查询后端Demo(个人求职展示用),支持微信消息交互、图包查询/选图、基础限流统计,技术栈:Python/FastAPI/Redis/Tortoise ORM
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-12-26
- **Last Updated**: 2026-01-13
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 微信公众号图包查询Demo(个人测试版)
## 一、项目概述
1. 项目类型:个人后端Demo项目
2. 项目背景:因个人微信账号无公众号官方认证/接口权限,仅作为技术验证Demo,实现微信公众号消息交互的核心业务逻辑,用于展示后端开发技术能力
3. 核心目标:实现一个轻量化的「二次元图包查询」微信交互服务,支持图包搜索、随机获取、选图提取等核心功能,同时完成基础的用户行为统计与接口服务搭建
4. 项目性质:可运行的最小可行demo,代码具备基本工程化结构,无复杂生产环境配置,重点体现后端技术栈的实际应用
## 二、核心技术栈
| 技术类别 | 具体技术/工具 |
|----------|--------------|
| 后端框架 | FastAPI(异步Web框架,提供API服务与请求处理) |
| 异步编程 | Python async/await(异步IO、异步Redis、异步ORM操作) |
| 数据存储 | 1. 关系型数据库(Tortoise ORM 封装,支持数据持久化)
2. Redis(异步客户端,用于会话状态、限流计数、用户交互缓存) |
| ORM框架 | Tortoise ORM(异步ORM,与FastAPI无缝集成,处理数据增删改查) |
| 辅助工具 | 1. 正则表达式(用户输入解析)
2. OSS对象存储(图包资源访问)
3. Jinja2(简单HTML模板渲染)
4. Uvicorn(ASGI服务器,运行FastAPI应用) |
| 项目规范 | 类型注解(Python typing)、依赖注入、模块化封装 |
## 三、项目核心功能
### 1. 微信消息交互处理(核心业务)
- 事件消息处理:支持关注事件(返回欢迎语)、菜单点击事件(随机图包、热门榜单、最新图包、使用帮助等)
- 文本消息处理:支持关键词搜图(数字/文字关键词匹配)、选图指令解析(单张/多张/全部图片提取)、特殊彩蛋回复、取消操作
- 会话状态管理:通过Redis维护用户选图会话(超时自动失效,避免无效状态堆积)
### 2. 基础业务限制与统计
- 每日查询限流:所有用户统一每日查询额度,通过Redis计数扣除与剩余额度查询
- 用户行为埋点:记录关注、菜单点击、搜索、选图等核心行为,关联图包ID,便于数据统计
- 图包与图片统计:更新图包访问次数、图片查看次数,支撑热门榜单生成
### 3. 辅助服务与页面
- 静态资源服务:挂载static目录,处理网站图标、静态文件访问,解决404问题
- 简单HTML页面:提供介绍、支持、赞助者展示、统计仪表板等页面的路由与模板渲染
- 标准化API路由:拆分微信、赞助、统计等功能路由,具备良好的扩展性
## 四、简化项目结构
```
├── main.py # 项目入口,FastAPI应用初始化、路由注册、数据库配置
├── api/ # API路由模块目录
│ └── wechat.py # 微信消息核心接口(包含核心处理函数handle_wechat_user_msg)
├── service/ # 业务逻辑封装目录(用户、图包、Redis等服务)
│ ├── user_service.py # 用户相关业务(获取/创建用户)
│ ├── note_service.py # 图包相关业务(搜索、随机、热门图包等)
│ └── redis_service.py # Redis相关操作封装(会话状态、限流计数等)
├── utils/ # 工具类目录
│ ├── oss_utils.py # OSS对象存储工具(获取图片URL)
│ ├── wechat_utils.py # 微信消息处理辅助工具(输入解析、关键词验证等)
│ └── get_redis_connection.py # Redis连接获取工具
├── models/ # 数据模型目录
│ └── behavior.py # 用户行为数据模型(Tortoise ORM)
├── static/ # 静态文件目录(网站图标、CSS等)
└── templates/ # 模板文件目录(HTML页面模板)
└── views/ # 业务页面模板(介绍、支持等页面)
```
## 五、关键技术亮点(求职重点展示)
1. **异步编程实践**:全程使用异步框架与工具(FastAPI、异步Redis、Tortoise ORM),提升服务并发处理能力,符合高并发后端服务的开发趋势
2. **依赖注入使用**:基于FastAPI的`Depends`实现Redis连接、微信用户输入的统一获取与注入,降低代码耦合,提高可维护性
3. **工程化代码封装**:将业务逻辑(service)、工具类(utils)、API路由(api)拆分封装,代码结构清晰,具备可扩展性,符合后端开发规范
4. **缓存与状态管理**:使用Redis实现用户会话状态、每日查询限流,减少数据库压力,提升交互响应速度
5. **类型注解全覆盖**:核心函数与参数均添加Python typing类型注解,提升代码可读性与可调试性,便于团队协作与后续维护
6. **简单业务逻辑闭环**:实现了「用户触发-业务处理-数据统计-结果返回」的完整业务链路,具备实际项目的核心特征
## 六、项目运行方式
1. 环境准备:安装所需依赖(`fastapi`、`uvicorn`、`redis[asyncio]`、`tortoise-orm`等)
2. 配置调整:修改`config/env.py`中的数据库与Redis连接配置(本地搭建对应服务即可)
3. 启动服务:运行`python main.py`,项目将以`0.0.0.0:80`端口启动,支持热重载(开发模式)
4. 功能测试:可通过模拟微信消息请求(POST)访问`/wechat`接口,验证核心业务逻辑(因个人号无官方权限,暂无法直接对接微信公众号平台)
## 七、项目总结与后续优化方向
### 1. 项目总结
该Demo项目虽为个人测试版,无微信公众号官方接口对接,但完整实现了后端服务的核心技术栈应用与业务逻辑闭环,能够充分证明:
- 掌握FastAPI框架的使用与异步后端开发思路
- 具备ORM框架(Tortoise ORM)的实际操作能力
- 能够使用Redis实现缓存、状态管理与限流等常见后端需求
- 具备基本的项目工程化封装与代码规范意识
- 能够独立完成从需求分析到功能实现的后端开发流程
### 2. 后续优化方向(体现技术思考能力)
- 对接微信公众号官方API(获取认证账号后),实现真实消息交互与菜单配置
- 完善数据库迁移方案(使用`aerich`),支持生产环境的数据库结构变更与管理
- 增加前端交互页面,实现图包管理、数据统计可视化等功能
- 优化限流策略,支持分级用户权限与额度配置
- 增加日志系统与错误监控,提升服务稳定性与可排查性
- 实现图包资源的批量上传与自动化管理,提升项目实用性
---
**备注**:该项目为个人求职展示Demo,所有功能与代码均为独立开发,重点用于体现后端技术能力,无商业运营用途。