lty/qy_lty/docs/项目功能介绍.md
pmc bd95ba470c feat: update admin panel, API modules, and add migrations
- Update food, outfits, props, home-decor pages and components
- Add permissions page and sidebar updates
- Update API client and all API modules (auth, food, dances, etc.)
- Add card model migrations for optional fields
- Update Django views, serializers, and authentication
- Add affinity level migrations and user app updates
- Add project documentation

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 13:06:50 +08:00

239 lines
7.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# QY LTY 后端服务 — 项目功能介绍
## 项目定位
QY LTY 是一个 AI 智能硬件(如陪伴机器人/智能玩具)的后端平台,基于 Django 构建,为设备提供 AI 对话、语音交互、实时通信能力,同时管理用户账号、卡密激活、订阅付费和成就激励体系。
---
## 代码目录结构
| 目录 | 说明 |
|------|------|
| `qy_lty/` | Django 主配置settings、urls、asgi |
| `userapp/` | 用户管理与认证 |
| `aiapp/` | AI 对话系统 |
| `card/` | 卡片/卡密系统 |
| `device_interaction/` | 设备 WebSocket 实时通信 |
| `achievement_app/` | 成就系统 |
| `subscription_app/` | 订阅管理 |
| `ali_vi_app/` | 阿里云视觉智能(换脸/美颜等) |
| `food_app/` | 食物系统(游戏道具) |
| `workflow_app/` | 工作流管理(开发中) |
| `common/` | 公共工具响应格式、OSS、中间件 |
| `docs/` | 项目文档 |
---
## 功能模块详解
### 1. 用户管理userapp/
- 自定义用户模型 `ParadiseUser`扩展字段手机号、性别、生日、星座、MBTI、兴趣、社交身份
- 多种登录方式手机号、邮箱、用户名、MAC 地址
- 阿里云短信验证码
- 微信社交登录django-allauth
- Redis Token 认证
**核心文件:**
- `models.py` — ParadiseUser 用户模型
- `views.py` — 注册、登录、资料更新接口
- `authentication.py` — RedisTokenAuthentication 自定义认证
- `utils.py` — 短信发送、Token 生成与管理
---
### 2. AI 对话系统aiapp/
- **单轮对话:** `/api/ai/chat/<bot_id>/`
- **多轮对话:** `/api/ai/multichat/`(保持上下文)
- 接入 Kimi月之暗面大模型
- **语音服务:** 多供应商抽象架构
- `audio/AliyunAudioService.py` — 阿里云语音
- `audio/TencentAudioService.py` — 腾讯云语音
- `audio/HuoshanAudioService.py` — 火山引擎语音
- 支持语音合成TTS和语音识别ASR
**核心文件:**
- `models.py` — Bot 机器人模型、ChatMessage 对话记录模型
- `views.py` — ChatBotAPIView单轮、MultiChatAPIView多轮
- `kimi.py` — Kimi API 客户端OpenAI 兼容接口)
- `audio/AudioService.py` — 音频服务工厂函数
- `audio/BaseAudioService.py` — 音频服务抽象基类
---
### 3. 设备实时通信device_interaction/
- WebSocket 连接:`ws://domain/ws/device/token/{token}/`
- 设备模型设备类型、批次、序列号、电量、固件版本、WiFi、亮度
- 用户-设备绑定关系
- 消息类型:`chat_message`(聊天)、`weather`(天气)、`sing`(唱歌)、`dance`(跳舞)
- 集成和风天气 API、高德地图 API
- 火山引擎 RTC 实时音视频
**核心文件:**
- `models.py` — DeviceType、DeviceBatch、Device、UserDevice 模型
- `consumers.py` — DeviceConsumer WebSocket 消费者
- `views.py` — 设备管理 API
- `services.py` — Redis 设备连接状态追踪
- `auth.py` — TokenAuthMiddleware WebSocket 认证中间件
- `weather.py` — 和风天气 API 集成
- `amap_api.py` — 高德地图定位服务
- `volcengine_api.py` — 火山引擎 RTC 集成
---
### 4. 卡片/卡密系统card/
- 卡片模板:分类(服装、道具、歌曲、舞蹈、家具、装饰)、稀有度
- 批量生成卡密,支持 Excel 导出
- 二维码生成和扫码核销
- 使用日志追踪(扫描、使用、作废、发布、生产)
- 每个分类有独立属性模型ClothingAttributes、PropAttributes 等)
**核心文件:**
- `models.py` — CardTemplate、Card、CardBatch、CardUsageLog 及各分类属性模型
- `views.py` — 模板 CRUD、批量生成、扫码核销、Excel 导出
- `storage.py` — OSSStorage 阿里云对象存储集成
---
### 5. 成就系统achievement_app/
- 成就定义名称、描述、图标、达成条件JSON
- 稀有度:普通 / 珍贵 / 稀有 / 史诗 / 传说
- 类型:登录 / 活动 / 社交 / 使用 / 特殊 / 隐藏
- 用户成就进度追踪与通知
**核心文件:**
- `models.py` — Achievement 成就定义、UserAchievement 用户成就记录
---
### 6. 订阅管理subscription_app/
- 订阅计划:月付 / 季付 / 年付
- 增值包购买AddOnPackage
- 计费记录TenantBilling
- 定时任务处理订阅续期
**核心文件:**
- `models.py` — SubscriptionPlan、Subscription、AddOnPackage、SubscriptionAddOn、TenantBilling
- `scheduler.py` — 定时任务
- `tasks.py` — 异步任务
---
### 7. 阿里云视觉智能ali_vi_app/
- 人脸融合/换脸
- 人脸美颜
- 面部液化、妆容、肤质优化
**核心文件:**
- `vi.py` — VI 类,封装阿里云 FaceBody APIadd_template、merge_image_face、face_beauty 等)
---
### 8. 食物系统food_app/
- 食物道具:水果、蔬菜、肉类、海鲜等 11 种分类
- 稀有度等级、卡路里、口味标签、营养值
- 游戏效果、使用次数限制、上架时间窗口
- 用户食物背包、使用日志
**核心文件:**
- `models.py` — Food 食物定义、UserFood 用户背包、FoodUsageLog 使用日志
---
### 9. 公共基础设施common/
- 标准化 API 响应格式:`{success, code, message, data}`
- 阿里云 OSS 文件上传
- 阿里云日志服务
- 自定义分页(默认 10 条,最大 100 条)
- 火山引擎 Token 管理
**核心文件:**
- `responses.py` — api_response、success_response、error_response 等标准响应函数
- `middleware.py` — StandardResponseMiddleware 统一响应中间件
- `pagination.py` — CustomPageNumberPagination 分页器
- `oss.py` — OSSUploader 文件上传工具
- `aliyun_logging.py` — 阿里云日志配置
---
## API 接口一览
| 路径 | 说明 |
|------|------|
| `/api/user/` | 用户认证与管理 |
| `/api/ai/` | AI 对话接口 |
| `/api/device/` | 设备管理与消息推送 |
| `/api/card/` | 卡片系统管理 |
| `/api/achievement/` | 成就系统 |
| `/api/v1/admin/` | 管理后台接口 |
| `/swagger/` | Swagger API 文档 |
| `/redoc/` | ReDoc API 文档 |
**WebSocket 端点:**
- `ws://domain/ws/device/` — 设备连接
- `ws://domain/ws/device/token/{token}/` — 带 Token 认证的设备连接
---
## 技术栈
| 层面 | 技术 |
|------|------|
| 框架 | Django 4.2.13 + Django REST Framework |
| 实时通信 | Django Channels + Daphne ASGI |
| 数据库 | PostgreSQL |
| 缓存/消息 | Redis |
| AI 模型 | KimiOpenAI 兼容接口) |
| 语音服务 | 阿里云 / 腾讯 / 火山引擎(可配置切换) |
| 文件存储 | 阿里云 OSS |
| 短信服务 | 阿里云 SMS |
| 视觉智能 | 阿里云 FaceBody |
| 地图/天气 | 高德地图 / 和风天气 |
| 音视频 | 火山引擎 RTC |
| 部署 | Docker + docker-compose |
| API 文档 | drf-yasgSwagger / ReDoc |
| 后台管理 | django-simpleui |
---
## 环境配置
### 必需环境变量(.env
- `SECRET_KEY` — Django 密钥
- `DEBUG` — 调试模式
- `POSTGRESQL_DATABASE_*` — 数据库连接
- `REDIS_LOCATION``REDIS_PASSWORD` — Redis 配置
- `KIMI_API_KEY``KIMI_BASE_URL` — Kimi AI 配置
- `ALIYUN_*` — 阿里云各服务凭证
- `VOLCENGINE_ACCESS_KEY``VOLCENGINE_SECRET_KEY` — 火山引擎配置
- `AUDIO_SERVICE_PROVIDER` — 语音服务商选择
### 快速启动
```bash
# 安装依赖
pip install -r requirements.txt
# 配置环境变量
cp .env.bak .env
# 数据库迁移
python manage.py migrate
# 启动服务(支持 WebSocket
daphne -b 0.0.0.0 -p 8000 qy_lty.asgi:application
# Docker 部署
docker-compose up -d --build
```