Files
halo-theme-WarmIsland/.trae/specs/fix-white-screen-api-errors/tasks.md
T
2026-05-18 17:29:18 +08:00

3.6 KiB
Raw Blame History

Tasks

  • Task 1: 修复 moments.astro 页面 - 替换 momentFinder.list()momentFinder.list(1, 50),修复 moment.spec.mediamoment.spec.content.medium

    • th:with="moments = ${momentFinder.list()}" 改为 th:with="momentsResult = ${momentFinder.list(1, 50)}"
    • th:each="moment : ${moments}" 改为 th:each="moment : ${momentsResult.items}"
    • th:if="${moments != null and not #lists.isEmpty(moments)}" 改为 th:if="${momentsResult != null and not #lists.isEmpty(momentsResult.items)}"
    • moment.spec?.media 改为 moment.spec.content.medium
    • moment.spec.media 改为 moment.spec.content.medium
    • media.type == 'PHOTO' 保持不变(MomentMediaType.PHOTO 对应字符串 'PHOTO'
    • media.url 保持不变
    • media.displayName ?: '' 改为 ''MomentMedia 没有 displayName 字段)
  • Task 2: 修复 MomentsSection.astro 组件 - 替换 momentFinder.list()momentFinder.list(1, limit)

    • th:with="moments = ${momentFinder != null ? momentFinder.list() : null}, limit = ..." 改为 th:with="momentsResult = ${momentFinder.list(1, limit)}"
    • th:each="moment, stat : ${moments}" 改为 th:each="moment : ${momentsResult.items}"
    • 移除 th:if="${stat.index < limit}" 限制(已通过 list 的 size 参数限制)
    • 修复 moment.spec?.content?.html ?: moment.spec?.content?.raw ?: moment.spec?.content 保持不变(正确)
    • 修复 moment.spec?.releaseTime 保持不变(正确)
  • Task 3: 修复 photos.astro 页面 - 替换 photoFinder.listGroups() + listByGroupName()photoFinder.groupBy()

    • th:with="groups = ${photoFinder.listGroups()}" 改为使用 photoFinder.groupBy()
    • 使用 th:each="group : ${photoFinder.groupBy()}" 遍历分组
    • groupPhotoGroupVo,包含 metadataspecstatusphotos 字段
    • 移除 th:with="photos = ${photoFinder.listByGroupName(group.metadata?.name)}" 内部调用
    • 直接使用 group.photos 遍历照片
    • 照片字段:photo.spec.urlphoto.spec.displayNamephoto.spec.description
  • Task 4: 修复 PhotosSection.astro 组件 - 替换 photoFinder.listGroups() + listByGroupName()photoFinder.groupBy()

    • th:with="groups = ${photoFinder != null ? photoFinder.listGroups() : null}" 改为使用 photoFinder.groupBy()
    • 使用 th:each="group : ${photoFinder.groupBy()}" 获取第一个分组
    • 使用 group.photos 获取照片列表
    • 限制显示数量使用 th:each="photo, stat : ${group.photos}" th:if="${stat.index < limit}"
  • Task 5: 修复 TimelineSection.astro - 移除 Groovy 闭包语法

    • ${postFinder.listAll().groupBy { it.spec.publishTime?.getYear() }} 改为 ${postFinder.list({page: 1, size: 50})}
    • 使用 th:each="post : ${posts.items}" 遍历文章
    • 按年份分组改用 Thymeleaf 的方式:先获取所有文章,再在模板中按年分组展示
  • Task 6: 修复 Navbar.astro 和 Header.astro 中的 menuItem.spec.target?.value

    • th:target="${menuItem.spec.target?.value}" 改为 th:target="${menuItem.spec.target}"
  • Task 7: 构建并部署验证

    • 执行 pnpm build
    • 部署到 Docker 容器
    • 重启 Halo 容器
    • 通过浏览器访问所有页面验证无白屏

Task Dependencies

  • [Task 7] depends on [Task 1, Task 2, Task 3, Task 4, Task 5, Task 6]
  • [Task 1] and [Task 2] can be parallelized
  • [Task 3] and [Task 4] can be parallelized