3.6 KiB
3.6 KiB
Tasks
-
Task 1: 修复 moments.astro 页面 - 替换
momentFinder.list()为momentFinder.list(1, 50),修复moment.spec.media为moment.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()}"遍历分组 group是PhotoGroupVo,包含metadata、spec、status、photos字段- 移除
th:with="photos = ${photoFinder.listByGroupName(group.metadata?.name)}"内部调用 - 直接使用
group.photos遍历照片 - 照片字段:
photo.spec.url、photo.spec.displayName、photo.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