5.3 KiB
5.3 KiB
生成历史记录需求与实现方案(框架对齐)
本文档仅面向 My History(生成历史记录)模块的产品需求、数据展示规则、接口对接与交互实现说明,供客户端与 client_proxy_framework 对齐开发。
1. 页面目标与范围
My History 用于展示用户已创建任务的结果与状态,支持查看、下载、删除、继续追踪进度。
2. My History 需求定义
2.1 展示数据字段(卡片)
每个历史卡片展示以下信息:
- 封面图(见 2.2 封面取值规则)
- 创建日期:由
MyTaskItem.createTime格式化为MMM d, yyyy - 24 小时剩余时间:
createTime + 24h - now- 剩余时间大于 0:展示
xh xxm left - 小于等于 0:展示
Expired
- 剩余时间大于 0:展示
- 操作区:
- 支持按客户端配置决定是否在卡片上展示
Download入口(非必选) - 不展示下载入口时,操作区可仅展示状态文案(由任务状态映射)
- 若客户端采用“详情页下载”方案,则卡片点击进入详情页后再提供下载能力
- 支持按客户端配置决定是否在卡片上展示
- 删除按钮:可触发删除确认弹窗
顶部需展示“有效期提醒”提示(文案可换皮配置,不要求固定英文):
- 语义必须包含两点:
- 任务内容仅保留 24 小时(或 1 天);
- 过期前需要下载保存。
- 各换皮应用可按品牌语气自定义标题与正文,但不得改变上述核心含义。
- 示例语义(非固定文案):
- 标题:
24-hour expiry/Available for 24 hours - 正文:
Each item is kept for 24 hours after creation. Download before it expires.
- 标题:
2.2 封面取值规则(重点)
封面来源按以下优先级:
- 优先使用
resultUrl(网络封面)
resultUrl是http/https且为图片地址:直接展示网络图。
- 若
resultUrl判定为视频地址(如.mp4/.m3u8/.webm/.mov):
- 优先使用本地封面
localCoverPath(由ImageTaskHistory.localCoverPathsForMyTaskItems(tasks)提供)。 - 若本地封面不存在,展示视频占位图(摄像机 icon)。
- 若
resultUrl不可用:
- 回退使用
localCoverPath。
- 仍无可用封面:
- 展示默认背景色占位块。
2.3 接口对接
历史列表接口:
ImageApi.getMyTasks- 对应后端:
GET /v1/image/my-tasks - 当前请求参数:
app:currentBackendAppType()page:'1'pageSize:'30'
删除任务接口:
ImageApi.deleteTask- 入参:
taskId(int) - 成功后前端需从列表移除对应卡片并清理本地封面映射缓存。
任务进度接口(点击生成中任务后轮询):
ImageApi.getProgress- 对应后端:
GET /v1/image/progress
2.4 点击行为与跳转
卡片点击按任务状态分流:
- 有远端结果地址
跳转任务结果详情页(携带
taskId、resultUrl)。 - 任务生成中 跳转任务进度页,建议每 5 秒轮询一次进度接口,成功后自动进入结果详情页。
- 状态显示完成但媒体地址未就绪
提示:
Media is not ready yet. Pull to refresh. - 其余不可进入状态 根据状态映射给出阻塞提示文案。
辅助交互(支持按客户端策略配置):
- Download 点击(若卡片启用该入口):下载
resultUrl到系统相册(图片/视频分流保存)。 - 详情页下载(若卡片不提供下载入口):进入结果详情页后再执行下载。
- Delete 点击:先弹窗二次确认,再调用删除接口,成功后移除条目并提示
Deleted。
3. My History 分页加载方案(建议落地)
建议客户端按统一分页模式实现 My History,支持首屏加载、下拉刷新与滚动加载更多。
3.1 增加分页状态
建议维护以下分页状态(命名由各客户端自行定义):
pageSize(建议 30)lastLoadedPagehasMoreloadingMorelistGeneration(用于刷新隔离)
3.2 请求策略
- 首屏/下拉刷新:请求第 1 页,覆盖列表。
- 滚动到底触发:请求
nextPage = lastLoadedPage + 1,并追加数据。 - hasMore 判定:优先使用后端分页字段(若有),否则按返回条数兜底。
- 封面映射增量更新:对新增任务批次补齐本地封面映射并合并到当前缓存。
3.3 去重与一致性
- 追加分页时按
taskId去重,避免刷新/重试导致重复卡片。 - 删除任务后同步从列表数据与封面缓存中移除。
- 当用户从进度页返回后,可触发轻量刷新(仅首屏页)保障状态最新。
4. 异常与边界处理
- 登录未完成:展示 loading;登录失败展示错误态。
- 接口失败:展示错误文案 + Retry。
- 空数据:
My History显示No tasks yet. - 非法
taskId:删除时拦截并提示Invalid task id。 - 下载失败:展示
Save failed或系统权限错误。
5. 验收清单(建议)
My History封面优先级符合 2.2(图片、视频、本地回退、占位)。- 卡片点击分流准确(结果页/进度页/提示)。
- 删除成功后 UI 与本地封面缓存同步移除。
My History分页补齐后,快滑场景无重复、无错序,且hasMore判定稳定。