# QY LTY Backend

This is the backend service for QY LTY project.

## Development Setup

1. Install dependencies:
```bash
pip install -r requirements.txt
```

2. Copy environment file:
```bash
cp .env.bak .env
```

3. Start development server:
```bash
daphne -b 0.0.0.0 -p 8000 qy_lty.asgi:application
```

## Docker Deployment

1. Build and start the container:
```bash
docker-compose up -d --build
```

2. Access the application at: http://localhost:12012

## 功能特性

- 用户管理系统
  - 用户名密码注册登录
  - 手机号验证码登录
  - 用户信息管理

- AI 对话系统
  - 单轮对话功能
  - 多轮上下文对话
  - 语音对话支持

- 卡片管理系统
  - 卡片类别管理
  - 卡片生命周期管理
  - 批次生成与导出
  - 扫描和使用功能

- 设备交互系统
  - WebSocket 实时通信
  - 多种消息类型支持
  - 天气查询功能

## API 文档

项目的 API 文档使用 Swagger UI 生成，按以下模块组织：

### 用户模块 (/api/user/)

- 用户注册
- 用户登录（用户名密码/手机验证码）
- 用户信息管理

### AI 对话模块 (/api/ai/)

- 单轮对话 (/chat/{bot_id}/)
- 多轮对话 (/multichat/)
- 支持文本和语音输入输出

### 卡片模块 (/api/card/)

- 卡片类别管理
- 卡片批次管理
- 卡片扫描和使用

### 设备交互模块 (/api/device/)

- 消息发送
- 天气查询
- 实时通信

## 开发环境配置

1. 安装依赖：
```bash
pip install -r requirements.txt
```

2. 配置环境变量：
创建 `.env` 文件并设置必要的环境变量：
```
DEBUG=True
SECRET_KEY=your-secret-key
DATABASE_URL=your-database-url
REDIS_URL=your-redis-url
```

3. 数据库迁移：
```bash
python manage.py migrate
```

4. 运行开发服务器：
```bash
python manage.py runserver
```

## API 文档访问

- Swagger UI: `/swagger/`
- ReDoc: `/redoc/`

## WebSocket 连接

WebSocket 连接地址：`ws://domain/api/device/messages/{user_id}/`

### 消息格式
```json
{
    "type": "消息类型",
    "message": "消息内容",
    "user_id": "用户ID"
}
```

### 支持的消息类型
- chat_message: 文本消息
- weather: 天气消息
- sing: 唱歌消息
- dance: 跳舞消息

## 部署说明

1. 设置生产环境变量
2. 收集静态文件：`python manage.py collectstatic`
3. 使用 gunicorn 或 uwsgi 作为生产服务器
4. 配置 nginx 作为反向代理

## 安全说明

- API 认证使用 Token 认证
- 文件上传有大小限制
- 敏感操作需要管理员权限
- 用户密码使用 bcrypt 加密存储

## 贡献指南

1. Fork 项目
2. 创建特性分支
3. 提交更改
4. 发起 Pull Request

## 许可证

本项目采用 MIT 许可证

## 项目启动（无anaconda）
```
# python3.9
pip install -r requirements.txt
# 启动ASGI服务器（支持WebSocket）
./run.sh
# 或者直接使用daphne命令
daphne -b 0.0.0.0 -p 8000 fengye_website_backend.asgi:application
```

## 项目启动（有anaconda）
```
conda env create -f environment.yml
conda activate fengye
# 启动ASGI服务器（支持WebSocket）
./run.sh
# 或者直接使用daphne命令
daphne -b 0.0.0.0 -p 8000 fengye_website_backend.asgi:application
```

## 注意事项
1. 启动前请确保Redis服务已启动，因为WebSocket功能依赖Redis作为后端
2. 确保.env文件中的环境变量已正确配置
3. 如果使用run.sh脚本，请确保有执行权限：
```bash
chmod +x run.sh
```

## 项目依赖
```
django
djangorestframework
mysqlclient
django-redis
django-allauth
django-simpleui
django-phone-verify
requests
cryptography
aliyun-python-sdk-core
aliyun-python-sdk-dysmsapi
dj_rest_auth
python-decouple
openai
drf-yasg

# ali-vi
alibabacloud_facebody20191230
alibabacloud_tea_console
alibabacloud_tea_util
alibabacloud_tea_openapi

# PostgreSQL 适配驱动
psycopg2

django-debug-toolbar
# rosetta po翻译 路径 /rosetta/
django-rosetta
```

## i18n
django-admin makemessages -l en
django-admin makemessages -l zh_HAns
django-admin compilemessages 

apscheduler
django-cors-headers


## 文档
+ 项目对接了swagger进行文档管理
+ swagger访问地址： http://localhost:8000/swagger/


## 管理员
admin123
111111

# workflow应用设计
+ 多租户
+ 计费套餐
+ 工作流管理
    + 放到


工作流
- 