feat(parent,auth,onboarding,files,notifications,adaptive-practice,ai): add module updates
parent: - Add parent-student-attendance-detail component auth: - Add actions, data-access, schema, services, types onboarding: - Add parent-children-form and hooks directory files: - Add actions, schema, hooks directory notifications: - Add schema and schema test adaptive-practice: - Add answer-input, answer-result, practice-result-view, practice-starter-with-nav - Add question-card, question-content, lib and services directories ai: - Add context/create-ai-client-service, hooks/use-drag-position, hooks/use-position-persistence
This commit is contained in:
@@ -1,7 +1,5 @@
|
||||
"use client"
|
||||
|
||||
import { AlertTriangle, Phone } from "lucide-react"
|
||||
import { useTranslations } from "next-intl"
|
||||
import { getTranslations } from "next-intl/server"
|
||||
|
||||
import { Card } from "@/shared/components/ui/card"
|
||||
import { cn } from "@/shared/lib/utils"
|
||||
@@ -14,8 +12,11 @@ type Warning = {
|
||||
severity: "high" | "medium"
|
||||
}
|
||||
|
||||
/** 翻译函数类型(与 `useTranslations("attendance")` 返回值兼容) */
|
||||
type Translator = ReturnType<typeof useTranslations>
|
||||
/** 翻译函数类型(与 useTranslations / getTranslations 返回值兼容) */
|
||||
type Translator = (
|
||||
key: string,
|
||||
values?: Record<string, string | number | Date>,
|
||||
) => string
|
||||
|
||||
/**
|
||||
* 构建考勤异常预警列表(纯函数,便于测试)。
|
||||
@@ -67,15 +68,17 @@ export function buildWarnings(
|
||||
}
|
||||
|
||||
/**
|
||||
* 家长视角的考勤异常预警横幅。
|
||||
* 家长视角的考勤异常预警横幅(RSC)。
|
||||
* 聚合所有子女的考勤异常(缺勤、迟到、低出勤率),提醒家长及时关注。
|
||||
*
|
||||
* P2-8 修复:从 client component 降级为 RSC,使用 `getTranslations`。
|
||||
*/
|
||||
export function ParentAttendanceWarning({
|
||||
export async function ParentAttendanceWarning({
|
||||
summaries,
|
||||
}: {
|
||||
summaries: ParentStudentAttendanceSummary[]
|
||||
}) {
|
||||
const t = useTranslations("attendance")
|
||||
const t = await getTranslations("attendance")
|
||||
const warnings = buildWarnings(summaries, t)
|
||||
if (warnings.length === 0) return null
|
||||
|
||||
|
||||
Reference in New Issue
Block a user