lty/qy_lty
pmc 61e8374e6a fix(affinity-P1): WR-002~WR-009 + IN-001~IN-006 综合改进收尾
WR-002 UserLevelRewardGrant.device on_delete CASCADE → SET_NULL,加 device_snapshot_id,
  unique 改为 partial(device 非空时唯一),与 AffinityLog.device SET_NULL 对齐
WR-003 AffinityLog 删除 3 个低价值索引(user/rule_key/source -created_at 复合)
WR-004 event_id 改为 null=True,partial unique 用 isnull=False;RunPython '' → NULL
WR-005 seed 加 companion_30min 默认规则
WR-006 description 显式 default='';DEFAULT_LEVELS 全部补 description
WR-007 seed_affinity 每条 spec 独立事务,部分失败可重跑
WR-008 ParadiseUser.favorability 字段保留 + UserInfoSerializer 移除暴露 + [DEPRECATED] 标记
WR-009(见 Commit B:AffinityLevel.clean + save full_clean 多层兜底)
IN-001 5 个弃用字段 help_text 加 [DEPRECATED — 计划于 P2 完成后删除]
IN-002 DEFAULT_RULES/LEVELS/SETTING 抽到 userapp/affinity/defaults.py
IN-003 AffinitySetting.daily_cap RenameField → global_daily_cap(区分 AffinityRule.daily_cap)
IN-004 AffinityLog.__str__ 用 pk or 'new' 兜底 None
IN-005(见 Commit A:is_active → is_bound 改名)
IN-006(见 Commit C:0006 print 前缀改为 [migration 0006_...])

迁移 0009 手工修正:daily_cap 改名用 RenameField(保留数据),不是 Remove+Add;
event_id '' → NULL 数据兜底;UserLevelRewardGrant on_delete + conditional unique 重建。

详见 docs/REVIEW-affinity-P1.md WR-* / IN-* 与 FIX-REPORT.md。
2026-05-13 10:18:47 +08:00
..
2026-03-17 13:17:02 +08:00
2026-03-17 13:17:02 +08:00
2026-03-17 13:17:02 +08:00
2026-03-17 13:17:02 +08:00
2026-03-17 13:17:02 +08:00
2026-03-17 13:17:02 +08:00
2026-03-17 13:17:02 +08:00
2026-03-17 13:17:02 +08:00
2026-03-17 13:17:02 +08:00
2026-03-17 13:17:02 +08:00
2026-03-17 13:17:02 +08:00
2026-03-17 13:17:02 +08:00
2026-03-17 13:17:02 +08:00
2026-03-17 13:17:02 +08:00
2026-03-17 13:17:02 +08:00
2026-03-17 13:17:02 +08:00
2026-03-17 13:17:02 +08:00
2026-03-17 13:17:02 +08:00

QY LTY Backend

This is the backend service for QY LTY project.

Development Setup

  1. Install dependencies:
pip install -r requirements.txt
  1. Copy environment file:
cp .env.bak .env
  1. Start development server:
daphne -b 0.0.0.0 -p 8000 qy_lty.asgi:application

Docker Deployment

  1. Build and start the container:
docker-compose up -d --build
  1. 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. 安装依赖:
pip install -r requirements.txt
  1. 配置环境变量: 创建 .env 文件并设置必要的环境变量:
DEBUG=True
SECRET_KEY=your-secret-key
DATABASE_URL=your-database-url
REDIS_URL=your-redis-url
  1. 数据库迁移:
python manage.py migrate
  1. 运行开发服务器:
python manage.py runserver

API 文档访问

  • Swagger UI: /swagger/
  • ReDoc: /redoc/

WebSocket 连接

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

消息格式

{
    "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脚本请确保有执行权限
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

文档

管理员

admin123 111111

workflow应用设计

  • 多租户
  • 计费套餐
  • 工作流管理
    • 放到

工作流