fix(conversation): 离屏不丢回复、列表预热 WS 与非阻塞进入聊天

- 后端:文本/转写后 AI 生成改为独立任务,避免断连取消整轮;按需 TTS 等与 WS 改动
- 前端:RealtimeSession 重绑 UI 时恢复流式 buffer;列表 onPressIn/挂载预热、已有会话立即 push
- 同步会话相关类型、i18n、测试与 env/资源等累计改动

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Kevin
2026-05-08 17:28:31 +08:00
parent 5dac3efd52
commit d0c26242db
44 changed files with 1209 additions and 212 deletions

View File

@@ -24,15 +24,20 @@
## 快速开始
### 1. 启动 Redis
### 1. 启动 PostgreSQL / Redis
使用 Docker Compose 启动 Redis
使用开发用 Docker Compose 一键启动数据库与缓存
```bash
cd api
docker compose -f docker-compose.dev.yml up -d
```
开发 compose 使用 **固定的** 本机映射(与 `api/.env.example` 一致,避免与本机默认 5432 / 6379 抢占):
- PostgreSQL`127.0.0.1:48291` → 容器内 `5432`
- Redis`127.0.0.1:48307` → 容器内 `6379`
验证 Redis 是否运行:
```bash
@@ -61,12 +66,12 @@ DEEPSEEK_BASE_URL=https://api.deepseek.com
# LLM_MODEL=gpt-4
# LLM_BASE_URL=https://api.openai.com
# Redis 配置
REDIS_URL=redis://localhost:6379/0
# Redis 配置(宿主 48307见 docker-compose.dev.yml
REDIS_URL=redis://localhost:48307/0
REDIS_SESSION_TTL=86400 # 会话过期时间(秒),默认 24 小时
# 数据库配置(PostgreSQL与线上一致
DATABASE_URL=postgresql://postgres:postgres@localhost:5432/life_echo
# 数据库配置(宿主 48291见 docker-compose.dev.yml
DATABASE_URL=postgresql://postgres:postgres@localhost:48291/life_echo
# JWT 配置
SECRET_KEY=your-secret-key-change-in-production
@@ -114,7 +119,7 @@ celery -A tasks.celery_app worker --loglevel=info --concurrency=2
- 对话的实时响应通过异步 LLM 调用生成
- 会话历史存储在 Redis 中
### Redis (端口 6379)
### Redis(容器内 6379 → 宿主 48307见 docker-compose.dev.yml
- 存储对话会话历史(支持多实例部署)
- 作为 Celery 的消息队列
@@ -169,12 +174,12 @@ docker compose up -d --scale celery-worker=3
### Redis 连接失败
```
Redis 连接失败: Error connecting to redis://localhost:6379/0
Redis 连接失败: Error connecting to redis://localhost:48307/0
```
**解决方法**
1. 确认 Redis 容器正在运行:`docker ps | grep redis`
2. 检查 `REDIS_URL` 环境变量是否正确
2. 检查 `REDIS_URL` 是否为 `redis://localhost:48307/0`(或与 `docker-compose.dev.yml` 中映射一致)
3. 如果在 Docker 内运行 API使用 `redis://redis:6379/0`
### Celery 任务不执行