Files
dreamweaver/.claude/specs/robustness-improvement/dev-plan.md
zhangtuo e9d7f8832a Initial commit: clean project structure
- Backend: FastAPI + SQLAlchemy + Celery (Python 3.11+)
- Frontend: Vue 3 + TypeScript + Pinia + Tailwind
- Admin Frontend: separate Vue 3 app for management
- Docker Compose: 9 services orchestration
- Specs: design prototypes, memory system PRD, product roadmap

Cleanup performed:
- Removed temporary debug scripts from backend root
- Removed deprecated admin_app.py (embedded UI)
- Removed duplicate docs from admin-frontend
- Updated .gitignore for Vite cache and egg-info
2026-01-20 18:20:03 +08:00

73 lines
2.2 KiB
Markdown
Raw 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.
# DreamWeaver 工程鲁棒性改进计划
## 概述
本计划旨在提升 DreamWeaver 项目的工程质量,包括测试覆盖、稳定性、可观测性等方面。
## 任务列表
### P0 - 关键问题修复
#### Task-1: 修复 Rate Limit 内存泄漏
- **文件**: `backend/app/api/stories.py`
- **问题**: `_request_log` 全局字典无清理机制,长期运行内存无限增长
- **方案**: 添加 TTL 自动清理机制,使用 `cachetools.TTLCache`
- **测试**: 验证过期条目自动清理
#### Task-2: 添加核心 API 测试
- **文件**: `backend/tests/` (新建)
- **范围**:
- `test_auth.py`: OAuth 流程、session 验证
- `test_stories.py`: 故事 CRUD、rate limit
- **目标**: 核心路径覆盖率 ≥80%
### P1 - 稳定性提升
#### Task-3: 添加 API 重试机制
- **文件**: `backend/app/services/gemini.py`, `minimax.py`, `drawing.py`
- **方案**: 使用 `tenacity` 库,指数退避重试
- **配置**: 最多 3 次重试,初始间隔 1s
#### Task-4: 添加结构化日志
- **文件**: `backend/app/core/logging.py` (新建), 各 service 文件
- **方案**: 使用 `structlog`JSON 格式输出
- **埋点**: API 调用、错误、性能指标
### P2 - 代码优化
#### Task-5: 重构 Provider Router
- **文件**: `backend/app/services/provider_router.py`
- **问题**: 三个函数重复代码
- **方案**: 抽象通用 failover 函数
#### Task-6: 配置外部化
- **文件**: `backend/app/core/config.py`, `backend/app/services/gemini.py`
- **问题**: 模型名硬编码
- **方案**: 移至环境变量配置
#### Task-7: 修复脆弱的 URL 解析
- **文件**: `backend/app/services/drawing.py`
- **问题**: 字符串切片解析 URL 不可靠
- **方案**: 使用正则表达式
## 依赖关系
```
Task-1 (独立)
Task-2 (独立,但需要 Task-1 完成后验证)
Task-3 (独立)
Task-4 (独立)
Task-5 (独立)
Task-6 (独立)
Task-7 (独立)
```
## 新增依赖
```toml
# pyproject.toml [project.dependencies]
cachetools>=5.0.0 # Task-1: TTL cache
tenacity>=8.0.0 # Task-3: 重试机制
structlog>=24.0.0 # Task-4: 结构化日志
# [project.optional-dependencies.dev]
pytest-cov>=4.0.0 # Task-2: 覆盖率报告
httpx[http2] # Task-2: 测试 mock