lct-hack/frontend/package.json

34 lines
1.2 KiB
JSON
Raw Normal View History

{
"name": "lct-frontend",
"private": true,
"version": "0.1.0",
"type": "module",
"scripts": {
"dev": "vite --host 0.0.0.0",
"build": "tsc --noEmit && vite build && node scripts/precompress-assets.mjs",
"preview": "vite preview --host 0.0.0.0",
"typecheck": "tsc --noEmit && node scripts/check-kio-fields.mjs && node scripts/check-accessible-controls.mjs",
"check:kio": "node scripts/check-kio-fields.mjs",
"check:a11y": "node scripts/check-accessible-controls.mjs",
"test:ws-outbox": "node scripts/test-ws-outbox.mjs",
"test:dds-history": "node scripts/test-dds-history.mjs",
"test:dds-ack": "node scripts/test-dds-ack.mjs",
"test:session-report": "node scripts/test-session-report.mjs",
"test:scenario-start": "node scripts/test-scenario-start.mjs"
},
"dependencies": {
lct-08: каркас фронта, типизированный сокет, захват микрофона Направление канала зашито в тип: у наблюдателя Out = never, отправить нечего и нельзя; у преподавателя нет входящих. Разделение прав архитектурное и на фронте тоже. Пока соединения нет, события не копятся: истина на сервере, после переподключения придёт актуальное состояние. Ресемплинг 48 → 16 кГц усредняет по окну выходного сэмпла: без фильтра всё выше 8 кГц наложилось бы на речь и испортило распознавание. Проверено числами: секунда звука — ровно 50 кадров по 320 сэмплов из 48 и 44.1 кГц, помеха 15 кГц подавлена до 7.8%. Эхоподавление и автоусиление браузера выключены: гарнитура эхо не даёт, а обработка портит речь для STT. Бэкенд принимает бинарные кадры по тому же сокету, что и события; кадр не того размера отбрасывается с одним предупреждением, а не 50 в секунду. Логирование приложения не было настроено: uvicorn настраивает только свои логгеры, и весь INFO модулей app.* молча терялся — нашлось, когда в логе не оказалось строки о принятых кадрах. make lesson запускает занятие и печатает ссылки на экраны — пульта преподавателя ещё нет, а открыть АРМ курсанта без занятия не с чем. Путь из браузера с живым микрофоном не проверен: нужен человек, шаги записаны в карточке.
2026-09-17 14:19:38 +03:00
"@tanstack/react-query": "^5.103.1",
"jssip": "^3.13.8",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-router-dom": "^6.26.2"
},
"devDependencies": {
"@types/react": "^18.3.5",
"@types/react-dom": "^18.3.0",
"@vitejs/plugin-react": "^4.3.1",
"esbuild": "^0.21.3",
"typescript": "^5.5.4",
"vite": "^5.4.3"
}
}