lct-17: пульт преподавателя — сценарий, наблюдение, пометки, ссылки

Компоновка от того, по чему пульт оценит действующий преподаватель:
задать сценарий и не вмешиваться, видеть работу курсанта вживую,
получить готовый разбор, показать группе. Кнопка запуска одна и крупная,
ссылки на АРМ курсанта и монитор печатаются рядом.

Разделение прав архитектурное и здесь: пульт смотрит через observe,
пишет через control, карточка курсанта у него только для чтения.

Две ловушки запуска: scenario.start уходил из эффекта и мог повториться
при перерисовке, а открытая из истории ссылка на идущее занятие
запустила бы его заново и сбросила. Запускается только занятие,
созданное кнопкой.
This commit is contained in:
Ivan Gerasimov 2026-09-17 21:34:01 +03:00
commit 978d7dc1aa
5 changed files with 269 additions and 1 deletions

View file

@ -59,6 +59,17 @@ export const useHealth = () =>
export const useScenarios = () =>
useQuery({ queryKey: ["scenarios"], queryFn: () => request<ScenarioSummary[]>("/api/scenarios") });
export const useSessions = (params: { trainee?: string; group?: string; mode?: SessionMode } = {}) => {
const query = new URLSearchParams(
Object.entries(params).filter(([, value]) => value) as [string, string][],
).toString();
return useQuery({
queryKey: ["sessions", query],
queryFn: () => request<SessionInfo[]>(`/api/sessions${query ? `?${query}` : ""}`),
refetchInterval: 15_000,
});
};
export const useCreateSession = () =>
useMutation({
mutationFn: (body: { scenario_id: string; mode: SessionMode; trainee?: string; group?: string }) =>