feat(business): update audit, auth, course-plans, announcements, exams

- audit: update retention.ts, types.ts, audit-retention-settings.tsx

- auth: update actions.ts and types.ts

- course-plans: update actions.ts, course-plan-detail.tsx, template-picker-dialog.tsx,

  add lib/track-event.ts

- announcements: update page.tsx, announcement-list.tsx, announcement-pagination.tsx

- exams: update actions.ts
This commit is contained in:
SpecialX
2026-07-04 10:23:03 +08:00
parent b63d116b6c
commit 98429e87eb
13 changed files with 114 additions and 61 deletions

View File

@@ -34,8 +34,9 @@ type Filter = "all" | AnnouncementStatus
* P2-4: 删除了死 prop `detailHrefBuilder`,仅保留 `detailHrefPrefix`Server Component 安全)。
* P1-2: 用户端canManage=false时调用 `getReadStatus` 批量获取已读状态,
* 传入卡片做已读/未读视觉区分。
* P2-6: 新增分页支持。传入 `pagination` prop 时在列表底部渲染 `AnnouncementPagination`
* 通过 `buildPageHref` 回调生成页码 URL与 `?status=` 过滤查询参数合并)。
* P2-6: 新增分页支持。传入 `pagination` prop 时在列表底部渲染 `AnnouncementPagination`
* v3: pagination 不再接收 `buildPageHref` 函数Server Component 不能传函数),
* 改为传 `basePath` + `statusFilter`,由 AnnouncementPagination 自行构建 URL。
*/
export function AnnouncementList({
announcements,
@@ -54,7 +55,8 @@ export function AnnouncementList({
page: number
pageSize: number
total: number
buildPageHref: (page: number) => string
basePath: string
statusFilter?: string
}
}) {
const t = useTranslations("announcements")
@@ -152,7 +154,8 @@ export function AnnouncementList({
page={pagination.page}
pageSize={pagination.pageSize}
total={pagination.total}
buildHref={pagination.buildPageHref}
basePath={pagination.basePath}
statusFilter={pagination.statusFilter}
/>
) : null}
</div>