feat(records): scheduled records empty-state hint
Fixes UX bug: пользователь создаёт запись с validFrom на будущую дату
(e.g. 18.05), открывает catalog 15.05 — пустая таблица, никаких хинтов
о том что запись существует.
Backend (read-api):
- New endpoint GET /api/v1/{dict}/records/scheduled-summary
- Returns {count, nearestValidFrom} для записей с validFrom > now AND
validTo > now в текущем scope view
- Single-aggregate JPA query (COUNT + MIN), respect scope filter same way
as listActive — INTERNAL scheduled не учитывается для PUBLIC consumer'а
Frontend:
- New useScheduledSummary hook + ScheduledRecordsSummary type
- Empty-state в dictionaries.$name now shows: "Запланировано N, ближайшая
на DD.MM [Перейти к этой дате]" с CTA который set'ает time-travel на
nearestValidFrom
- i18n keys для ru/en plural forms
Связан с MR !219 (TimeTravelPicker 30-day future window) — теперь slider
позволяет дойти до даты записи, и empty-state hint позволяет узнать что
запись существует.
This commit is contained in:
@@ -756,3 +756,18 @@ export const NOTIFICATION_EVENT_TYPES = [
|
||||
'RecordDraftWithdrawn',
|
||||
] as const
|
||||
export type NotificationEventType = (typeof NOTIFICATION_EVENT_TYPES)[number]
|
||||
|
||||
/**
|
||||
* Empty-state hint payload (read-api scheduled-summary). Подсчёт записей с
|
||||
* {@code validFrom > now AND validTo > now} в текущем scope view.
|
||||
*
|
||||
* <ul>
|
||||
* <li>{@code count=0} → frontend hint не показывает.</li>
|
||||
* <li>{@code nearestValidFrom} — ISO datetime ближайшей запланированной;
|
||||
* используется в CTA «Перейти к дате» (time-travel).</li>
|
||||
* </ul>
|
||||
*/
|
||||
export type ScheduledRecordsSummary = {
|
||||
count: number
|
||||
nearestValidFrom: string | null
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user