feat: PLANNING体系首版(00路线图/02任务总表/03执行协议/I-03/I-04/registry42口径)+M1止血交付
This commit is contained in:
@@ -0,0 +1,105 @@
|
||||
# API接口大全图片方案计划
|
||||
|
||||
## 概述
|
||||
为API接口大全的桌面端和移动端选择合适的主题封面图片,通过后端数据填充方式实现。
|
||||
|
||||
## 当前状态分析
|
||||
|
||||
### 后端模型
|
||||
- `ApiItem` 已有 `image_url` 字段(URLField),用于存储封面图片URL
|
||||
- `seed_api_directory.py` 已有部分 `image_url` 数据,但使用 `https://aka.doubaocdn.com/s/...` 可能不稳定
|
||||
|
||||
### 桌面端(ApiDirectoryDesktop.tsx)
|
||||
- 已有 `getApiImageUrl()` 函数,支持三级回退:
|
||||
1. 优先使用 `api.image_url`
|
||||
2. 其次使用自定义映射(如百度翻译)
|
||||
3. 最后回退到 `https://picsum.photos/seed/${api.id}/400/300`
|
||||
- 使用 Ant Design `<Image>` 组件渲染封面图,已有 `fallback` 属性
|
||||
|
||||
### 移动端(ApiDirectoryMobile.tsx)
|
||||
- **问题**:使用硬编码本地数据,不调用后端API
|
||||
- **问题**:只显示 Ant Design 图标,没有封面图片
|
||||
- 需要改为API动态获取数据
|
||||
|
||||
## 实施方案
|
||||
|
||||
### 步骤1:更新种子数据(后端)
|
||||
**文件**: `chunyu_project/apidirectory/management/commands/seed_api_directory.py`
|
||||
|
||||
为每个API选择合适的Unsplash主题封面图:
|
||||
|
||||
| API名称 | 图片主题 | Unsplash图片URL |
|
||||
|---------|---------|----------------|
|
||||
| 天气查询 | 天空/云层 | `https://images.unsplash.com/photo-1504608524841-42fe6f032b4b?w=800&h=600&fit=crop` |
|
||||
| 空气质量指数 | 清新空气/绿色 | `https://images.unsplash.com/photo-1441974231531-c6227db76b6e?w=800&h=600&fit=crop` |
|
||||
| IP地址定位 | 地球/网络 | `https://images.unsplash.com/photo-1451187580459-43490279c0fa?w=800&h=600&fit=crop` |
|
||||
| 二维码生成 | 科技/数字 | `https://images.unsplash.com/photo-1558591710-4b4a1ae0f04d?w=800&h=600&fit=crop` |
|
||||
| 百度翻译 | 语言/交流 | `https://images.unsplash.com/photo-1456513080510-7bf3a84b82f8?w=800&h=600&fit=crop` |
|
||||
| 文本比较 | 文档/代码 | `https://images.unsplash.com/photo-1518770660439-4636190af475?w=800&h=600&fit=crop` |
|
||||
| 图片压缩 | 图像/照片 | `https://images.unsplash.com/photo-1542038784456-1ea8e935640e?w=800&h=600&fit=crop` |
|
||||
| 短链接生成 | 链接/连接 | `https://images.unsplash.com/photo-1557682172-298e090bd0f1?w=800&h=600&fit=crop` |
|
||||
|
||||
### 步骤2:优化桌面端图片显示
|
||||
**文件**: `chunyu_project_react/src/pages/ApiDirectory/ApiDirectoryDesktop.tsx`
|
||||
|
||||
改进 `getApiImageUrl()` 函数:
|
||||
- 统一使用高质量图片源
|
||||
- 添加更完善的错误处理
|
||||
- 确保回退链可靠
|
||||
|
||||
### 步骤3:移动端改为API动态获取
|
||||
**文件**: `chunyu_project_react/src/pages/ApiDirectory/ApiDirectoryMobile.tsx`
|
||||
|
||||
重构移动端组件:
|
||||
1. 移除硬编码本地数据
|
||||
2. 添加API数据获取逻辑(调用 `api_request.apidirectory.getItems()`)
|
||||
3. 添加加载状态和错误处理
|
||||
4. 添加封面图片显示(使用与桌面端一致的图片URL处理逻辑)
|
||||
5. 保持移动端特有的UI风格(卡片式布局)
|
||||
|
||||
### 步骤4:创建图片URL工具函数
|
||||
**文件**: `chunyu_project_react/src/utils/apiImageUtils.ts`
|
||||
|
||||
创建统一的图片处理工具:
|
||||
- `getApiImageUrl(api: ApiItem): string` - 获取API封面图URL
|
||||
- `getFallbackImageUrl(id: number): string` - 获取备用图片URL
|
||||
- 统一桌面端和移动端的图片处理逻辑
|
||||
|
||||
### 步骤5:更新CSS样式
|
||||
**文件**:
|
||||
- `chunyu_project_react/src/pages/ApiDirectory/ApiDirectoryDesktop.css`
|
||||
- `chunyu_project_react/src/pages/ApiDirectory/ApiDirectoryMobile.css`
|
||||
|
||||
确保图片显示效果:
|
||||
- 图片加载中的占位符样式
|
||||
- 图片加载失败的默认背景
|
||||
- 移动端图片圆角和阴影效果
|
||||
|
||||
## 验证步骤
|
||||
|
||||
1. **后端验证**:运行 `python manage.py seed_api_directory` 更新数据
|
||||
2. **桌面端验证**:访问 `/api` 桌面端,检查每个API卡片是否显示正确的封面图
|
||||
3. **移动端验证**:访问 `/api` 移动端,检查:
|
||||
- 数据是否从API动态获取
|
||||
- 封面图片是否正确显示
|
||||
- 加载状态和错误处理是否正常
|
||||
4. **图片回退验证**:临时修改某个API的 `image_url` 为无效URL,验证回退机制是否生效
|
||||
5. **响应式验证**:在不同屏幕尺寸下测试图片显示效果
|
||||
|
||||
## 文件清单
|
||||
|
||||
| 文件路径 | 操作 | 说明 |
|
||||
|---------|------|------|
|
||||
| `chunyu_project/apidirectory/management/commands/seed_api_directory.py` | 修改 | 更新image_url为Unsplash图片 |
|
||||
| `chunyu_project_react/src/utils/apiImageUtils.ts` | 新建 | 图片URL工具函数 |
|
||||
| `chunyu_project_react/src/pages/ApiDirectory/ApiDirectoryDesktop.tsx` | 修改 | 使用统一图片工具函数 |
|
||||
| `chunyu_project_react/src/pages/ApiDirectory/ApiDirectoryMobile.tsx` | 重构 | 改为API动态获取+图片显示 |
|
||||
| `chunyu_project_react/src/pages/ApiDirectory/ApiDirectoryDesktop.css` | 修改 | 优化图片样式 |
|
||||
| `chunyu_project_react/src/pages/ApiDirectory/ApiDirectoryMobile.css` | 修改 | 添加图片样式 |
|
||||
|
||||
## 假设与决策
|
||||
|
||||
1. **图片来源**:使用 Unsplash 免费图床,图片URL格式为 `https://images.unsplash.com/photo-{id}?w=800&h=600&fit=crop`
|
||||
2. **图片尺寸**:统一使用 800x600 尺寸,适配大多数卡片布局
|
||||
3. **回退策略**:图片加载失败时,使用 `picsum.photos` 的 seed 图片(基于API ID确保一致性)
|
||||
4. **移动端数据**:完全移除硬编码数据,统一使用后端API
|
||||
Reference in New Issue
Block a user