当前“我的发型模板”页面已经具备列表卡片、任务状态分流、批量删除和基础筛选 UI 骨架,但核心列表能力仍未落地:
TemplateListPage 目前仅在页面加载时调用一次 listTemplates(),查询项没有真正参与请求。TemplatesService.list() 目前返回空列表,尚未提供真实数据。本次设计目标是把模板列表补成可用的真实列表页,同时尽量保持现有卡片布局、任务分流和批量删除交互不变。
本轮交付后,模板列表页需要满足以下要求:
qcategorystatustotal/page/pageSize 渲染页码本轮不处理以下内容:
做法:
GET /templates 的真实查询与分页。优点:
缺点:
做法:
优点:
缺点:
做法:
优点:
缺点:
采用 方案 A:最小闭环真实列表。
继续使用现有接口:
GET /api/v1/templates查询参数调整为:
q?: stringcategory?: stringstatus?: stringpage?: numberpageSize?: number移除:
purpose只查询当前登录美发师自己的模板,并强制附加以下条件:
hairstylist_id = 当前登录用户is_deleted = 0q
template_nametagsdescriptioncategory
status
page = 1pageSize = 8
skip = (page - 1) * pageSizetake = pageSize返回结构调整为:
{
items: TemplateEntity[]
total: number
page: number
pageSize: number
}
列表项继续返回前端当前卡片和分流逻辑所需字段,至少包括:
idnamecategorystatusdescriptiontagsimageusedCountmakeTaskIdmakeTaskStatusgenerationStatus其中:
name 由 template_name 映射image 优先取模板封面 cover_urlmakeTaskId / makeTaskStatus 用于保持当前任务分流逻辑本轮不开放前端排序选择,但后端列表需要给出稳定默认顺序,避免翻页结果抖动:
id desc这能保证新建模板优先显示,且在当前阶段实现最简单、最稳定。
保留并接入真实请求的筛选项:
删除:
purposeLabel 和 purposeOptionslistTemplates() 的 purpose 参数TemplateListPage 需要新增受控状态:
querycategorystatuspagepageSizetotalloading页面行为:
page = 1保留现有卡片样式与结构,不做视觉重构。
继续保留:
保持当前规则不变:
makeTaskId 存在,且 makeTaskStatus 属于 WAIT / PROCESSING / STEP1_SUCCESS / FAILED
/templates/tasks/:taskId/templates/:templateId分页控件由真实分页数据驱动:
totalPages = max(1, ceil(total / pageSize))totalPages = 1,分页区域仍然显示1 / 2listTemplates由:
listTemplates(params?: { q?: string; category?: string; purpose?: string; status?: string }): Promise<TemplateEntity[]>
调整为:
listTemplates(params?: {
q?: string
category?: string
status?: string
page?: number
pageSize?: number
}): Promise<{
items: TemplateEntity[]
total: number
page: number
pageSize: number
}>
ListTemplatesQueryDto 调整为:
qcategorypurposestatuspagepageSizetotal = 0 处理。page < 1 视为 1pageSize < 1 使用默认值 8空结果返回:
{
items: [],
total: 0,
page,
pageSize
}
补充或更新:
templates.service.spec.ts
q/category/status 生成正确查询条件page/pageSize 生成正确分页参数items/total/page/pageSizetemplates.e2e-spec.ts
GET /templates 支持真实筛选GET /templates 支持真实分页purpose 作为有效查询链路的一部分更新 TemplateListPage.test.tsx,覆盖:
本次实现预计涉及:
templates.service.tstemplates.controller.tsdto/list-templates-query.dto.tstemplates.service.spec.tstemplates.e2e-spec.tsservices/api/templates.tsservices/api/contracts.tspages/dashboard/templates/TemplateListPage.tsxpages/dashboard/templates/__tests__/TemplateListPage.test.tsxi18n/locales/zh/translation.jsoni18n/locales/ja/translation.json完成后需要满足: