>_ rehablogger
Система работает
← Все сессии
СЕССИЯ УСТРОЙСТВА

rehabapp_2026-08-24_16-23-44

Подключение…
Rehab Logger console · история загружается порциями по 250 записей
INFO [console] [DIO] access-control-allow-origin: http://localhost:3000
INFO [console] [DIO] content-type: application/json
INFO [console] [DIO] server: openresty
INFO [console] [DIO] Response Text:
INFO [console] [DIO] {"success":true,"meta":{"timestamp":"2026-08-24T09:23:51.483218Z","request_id":"9792faec-43b3-490b-84cf-3aabf7f2c04f","version":"v1"},"data":{"message":"User push token successfully saved or existed for current user"}}
INFO [console] [DIO]
INFO [console] [DIO] *** Response ***
INFO [console] [DIO] uri: https://rehabilitation.most.team/api/v1/user/save-client-push-token/
INFO [console] [DIO] statusCode: 200
INFO [console] [DIO] statusMessage: OK
INFO [console] [DIO] headers:
INFO [console] [DIO] x-served-by: rehabilitation.most.team
INFO [console] [DIO] access-control-allow-credentials: true
INFO [console] [DIO] connection: keep-alive
INFO [console] [DIO] cache-control: no-cache, private
INFO [console] [DIO] date: Mon, 24 Aug 2026 09:23:51 GMT
INFO [console] [DIO] transfer-encoding: chunked
INFO [console] [DIO] access-control-allow-origin: http://localhost:3000
INFO [console] [DIO] content-type: application/json
INFO [console] [DIO] server: openresty
INFO [console] [DIO] Response Text:
INFO [console] [DIO] {"success":true,"meta":{"timestamp":"2026-08-24T09:23:51.516217Z","request_id":"4737cba9-effb-42f7-9c87-b5da86f851c6","version":"v1"},"data":{"message":"User push token successfully saved or existed for current user"}}
INFO [console] [DIO]
INFO [console] ✅ RAW RESPONSE: {success: true, meta: {timestamp: 2026-08-24T09:23:51.483218Z, request_id: 9792faec-43b3-490b-84cf-3aabf7f2c04f, version: v1}, data: {message: User push token successfully saved or existed for current user}}
INFO [console] ✅ RAW RESPONSE: {success: true, meta: {timestamp: 2026-08-24T09:23:51.516217Z, request_id: 4737cba9-effb-42f7-9c87-b5da86f851c6, version: v1}, data: {message: User push token successfully saved or existed for current user}}
INFO [console] [DIO] *** Response ***
INFO [console] [DIO] uri: https://rehabilitation.most.team/api/v1/patient/rehabilitation/calendar/day?date=2026-08-24
INFO [console] [DIO] statusCode: 200
INFO [console] [DIO] statusMessage: OK
INFO [console] [DIO] headers:
INFO [console] [DIO] x-served-by: rehabilitation.most.team
INFO [console] [DIO] access-control-allow-credentials: true
INFO [console] [DIO] connection: keep-alive
INFO [console] [DIO] cache-control: no-cache, private
INFO [console] [DIO] date: Mon, 24 Aug 2026 09:23:52 GMT
INFO [console] [DIO] transfer-encoding: chunked
INFO [console] [DIO] access-control-allow-origin: http://localhost:3000
INFO [console] [DIO] content-type: application/json
INFO [console] [DIO] server: openresty
INFO [console] [DIO] Response Text:
INFO [console] [DIO] {"success":true,"meta":{"timestamp":"2026-08-24T09:23:52.253710Z","request_id":"99a10209-75e2-4fad-bc40-ae45f779368a","version":"v1"},"data":{"rehabilitation_day_id":2767,"phase_id":331,"diagnosis_rehab":"Пластика передней крестообразной связки (ПКС)","start_rehab":"2026-08-21 00:00:00","end_rehab":"2026-09-10 00:00:00","name_rehab_phase":"Защита и восстановление","status":["none"],"recommendations_count":3,"date":"2026-08-24","training":[{"mode":"correction_unit","status":"not_done","progress":null,"unit_id":1000,"time":"5 - 10 мин","count_questions":null,"status_questions":false,"workout_id":null}]}}
INFO [console] [DIO]
INFO [console] ✅ RAW RESPONSE: {success: true, meta: {timestamp: 2026-08-24T09:23:52.253710Z, request_id: 99a10209-75e2-4fad-bc40-ae45f779368a, version: v1}, data: {rehabilitation_day_id: 2767, phase_id: 331, diagnosis_rehab: Пластика передней крестообразной связки (ПКС), start_rehab: 2026-08-21 00:00:00, end_rehab: 2026-09-10 00:00:00, name_rehab_phase: Защита и восстановление, status: [none], recommendations_count: 3, date: 2026-08-24, training: [{mode: correction_unit, status: not_done, progress: null, unit_id: 1000, time: 5 - 10 мин, count_questions: null, status_questions: false, workout_id: null}]}}
INFO [console] [DIO] data:
INFO [console] [DIO] {service_type: fcm, token: eE_MBVQdQGi3o0Zs09QFtE:APA91bE_jiFfYx0KyHNQB8uUgDU5bk2DrJphHojdB0Hp1y7et9toQridWVV3tb45AlackSXavlA-nXj8c62GE0zT2Gnai1Vt-w5kUuQiwM7TCUm30PZR5CQ}
INFO [console] [DIO]
INFO [console] [DIO] *** Request ***
INFO [console] [DIO] uri: https://rehabilitation.most.team/api/v1/patient/workout/exercises?unit_id=1000&rehabilitation_day_id=2767&workout_id
INFO [console] [DIO] method: GET
INFO [console] [DIO] responseType: ResponseType.json
INFO [console] [DIO] followRedirects: true
INFO [console] [DIO] persistentConnection: true
INFO [console] [DIO] connectTimeout: 0:00:10.000000
INFO [console] [DIO] sendTimeout: null
INFO [console] [DIO] receiveTimeout: 0:00:10.000000
INFO [console] [DIO] transformTimeout: null
INFO [console] [DIO] receiveDataWhenStatusError: true
INFO [console] [DIO] extra: {}
INFO [console] [DIO] headers:
INFO [console] [DIO] Authorization: Bearer 400|MVgQvoX5AEvMhYP4aiZqYXNcduoSqmTT0lKJCkBC015e887e
INFO [console] [DIO] data:
INFO [console] [DIO] null
INFO [console] [DIO]
INFO [console] [DIO] *** Response ***
INFO [console] [DIO] uri: https://rehabilitation.most.team/api/v1/patient/workout/exercises?unit_id=1000&rehabilitation_day_id=2767&workout_id
INFO [console] [DIO] statusCode: 200
INFO [console] [DIO] statusMessage: OK
INFO [console] [DIO] headers:
INFO [console] [DIO] x-served-by: rehabilitation.most.team
INFO [console] [DIO] access-control-allow-credentials: true
INFO [console] [DIO] connection: keep-alive
INFO [console] [DIO] cache-control: no-cache, private
INFO [console] [DIO] date: Mon, 24 Aug 2026 09:26:56 GMT
INFO [console] [DIO] transfer-encoding: chunked
INFO [console] [DIO] access-control-allow-origin: http://localhost:3000
INFO [console] [DIO] content-type: application/json
INFO [console] [DIO] server: openresty
INFO [console] [DIO] Response Text:
INFO [console] [DIO] {"success":true,"meta":{"timestamp":"2026-08-24T09:26:56.445794Z","request_id":"541fb66b-7ce9-4773-a3b5-b15924e10e18","version":"v1"},"data":{"unit_id":1000,"workout_duration_start":5,"workout_duration_end":10,"body_side":"left","exercises":[{"id":85,"sequence_number":1,"name":"Тренировка икроножных мышц стоя","image":"https://rehabilitation.most.team/storage/exercise/photos/01KSM578DSDH215A8W6P26RXEH.png","by_body_side":"not_by_side","execution_order_type":null,"approaches_count":2,"execution_count":7,"execution_time":null,"instruction":{"exercise_name":"Тренировка икроножных мышц стоя","video":"https://rehabilitation.most.team/storage/exercise/videos/01KRJHJR20X1FNE739BG0QDYN4.mov","inventory":"Опора (стул, подоконник, стена)","warning":"Следите за положением пяток и стоп. Пятки не должны заваливаться внутрь (это признак неправильной нагрузки). Стопы должны оставаться параллельными на протяжении всего движения, для более наглядного контроля вы можете положить кубик для йоги между стопами\nСледите, чтобы спина была прямая\nНе уводите таз вперед/назад\nКолени держите выпрямленными","general_description":"В исходном положении стоя, ноги на ширине таза, руками опереться на спинку стула или стол, выполнить подъём на носки. Следить за тем, чтобы пятки не уходили внутрь, и стопы оставались параллельными. Цель – тренировка мышц голени.","steps":[{"exercise_id":85,"sequence_number":1,"step_text":"Встаньте прямо, лицом к устойчивой опоре (спинка стула, стол, подоконник, стена). Вы должны находиться боком оперированной ноги к камере"},{"exercise_id":85,"sequence_number":2,"step_text":"Поставьте ноги на ширине таза (примерно на расстоянии 10-15 см друг от друга). Стопы должны быть параллельны друг другу"},{"exercise_id":85,"sequence_number":3,"step_text":"Слегка обопритесь руками на опору для сохранения равновесия. Не переносите на руки весь вес тела"},{"exercise_id":85,"sequence_number":4,"step_text":"Спина прямая, живот слегка подтянут, взгляд направлен вперёд"},{"exercise_id":85,"sequence_number":5,"step_text":"Медленно и плавно поднимитесь как можно выше на носки, перенося вес тела на передние части стоп"},{"exercise_id":85,"sequence_number":6,"step_text":"Движение должно быть контролируемым. Максимально напрягите икроножные мышцы в верхней точке"},{"exercise_id":85,"sequence_number":7,"step_text":"Также под контролем медленно опустите пятки на пол, возвращаясь в исходное положение"},{"exercise_id":85,"sequence_number":8,"step_text":"Выполните поднятие на носки необходимое количество раз"}]}},{"id":47,"sequence_number":2,"name":"Растяжка мышц задней поверхности бедра - В и.п. стоя на одной ноге","image":"https://rehabilitation.most.team/storage/exercise/photos/01KQCHWY0J06QHXQ4P2BH5VD3A.png","by_body_side":"by_side","execution_order_type":"isolated","approaches_count":2,"execution_count":null,"execution_time":20,"instruction":{"exercise_name":"Растяжка мышц задней поверхности бедра - В и.п. стоя на одной ноге","video":"https://rehabilitation.most.team/storage/exercise/videos/01KQCHWY0PXRQ1HM420M2W892Q.mov","inventory":"Возвышенность (стул и т.п.)","warning":"Не допускайте разворота/заваливания поднятой ноги","general_description":"Стоя на одной ноге, другая нога выпрямлена в колене и расположена на возвышенности (стул, скамейка, ступенька). Корпус наклонён вперёд, руки тянутся к стопе поднятой ноги. Удерживать это положение заданное количество времени. Важно: колено поднятой ноги должно оставаться выпрямленным; \nстопа и колено поднятой ноги не должны \"заваливаться\" наружу (отсутствие ротации); \nнаклон выполняется за счёт сгибания в тазобедренном суставе, а не округления спины; \nдыхание свободное, без задержек; \nощущение растяжения должно быть комфортным, без острой боли.","steps":[{"exercise_id":47,"sequence_number":1,"step_text":"Встаньте боком растягиваемой ноги к камере"},{"exercise_id":47,"sequence_number":2,"step_text":"Поставьте рабочую ногу на возвышенность, другая нога опорная"},{"exercise_id":47,"sequence_number":3,"step_text":"Держите спину прямой"},{"exercise_id":47,"sequence_number":4,"step_text":"Стопа поднятой ноги смотрит на себя"},{"exercise_id":47,"sequence_number":5,"step_text":"Потянитесь пальцами рук к стопе поднятой ноги. Ваша задача - не обязательно обхватить стопу, а максимально растянуться с прямой спиной"},{"exercise_id":47,"sequence_number":6,"step_text":"В точке максимального комфортного натяжения в задней поверхности бедра и под коленями зафиксируйте положение. Удерживайте его заданное время"}]}}]}}
INFO [console] [DIO]
INFO [console] ✅ RAW RESPONSE: {success: true, meta: {timestamp: 2026-08-24T09:26:56.445794Z, request_id: 541fb66b-7ce9-4773-a3b5-b15924e10e18, version: v1}, data: {unit_id: 1000, workout_duration_start: 5, workout_duration_end: 10, body_side: left, exercises: [{id: 85, sequence_number: 1, name: Тренировка икроножных мышц стоя, image: https://rehabilitation.most.team/storage/exercise/photos/01KSM578DSDH215A8W6P26RXEH.png, by_body_side: not_by_side, execution_order_type: null, approaches_count: 2, execution_count: 7, execution_time: null, instruction: {exercise_name: Тренировка икроножных мышц стоя, video: https://rehabilitation.most.team/storage/exercise/videos/01KRJHJR20X1FNE739BG0QDYN4.mov, inventory: Опора (стул, подоконник, стена), warning: Следите за положением пяток и стоп. Пятки не должны заваливаться внутрь (это признак неправильной нагрузки). Стопы должны оставаться параллельными на протяжении всего движения, для более наглядного контроля вы можете положить кубик для йоги между стопами Следи
INFO [console] те, чтобы спина была прямая Не уводите таз вперед/назад Колени держите выпрямленными, general_description: В исходном положении стоя, ноги на ширине таза, руками опереться на спинку стула или стол, выполнить подъём на носки. Следить за тем, чтобы пятки не уходили внутрь, и стопы оставались параллельными. Цель – тренировка мышц голени., steps: [{exercise_id: 85, sequence_number: 1, step_text: Встаньте прямо, лицом к устойчивой опоре (спинка стула, стол, подоконник, стена). Вы должны находиться боком оперированной ноги к камере}, {exercise_id: 85, sequence_number: 2, step_text: Поставьте ноги на ширине таза (примерно на расстоянии 10-15 см друг от друга). Стопы должны быть параллельны друг другу}, {exercise_id: 85, sequence_number: 3, step_text: Слегка обопритесь руками на опору для сохранения равновесия. Не переносите на руки весь вес тела}, {exercise_id: 85, sequence_number: 4, step_text: Спина прямая, живот слегка подтянут, взгляд направлен вперёд}, {exercise_id: 85, sequence_number:
INFO [console] 5, step_text: Медленно и плавно поднимитесь как можно выше на носки, перенося вес тела на передние части стоп}, {exercise_id: 85, sequence_number: 6, step_text: Движение должно быть контролируемым. Максимально напрягите икроножные мышцы в верхней точке}, {exercise_id: 85, sequence_number: 7, step_text: Также под контролем медленно опустите пятки на пол, возвращаясь в исходное положение}, {exercise_id: 85, sequence_number: 8, step_text: Выполните поднятие на носки необходимое количество раз}]}}, {id: 47, sequence_number: 2, name: Растяжка мышц задней поверхности бедра - В и.п. стоя на одной ноге, image: https://rehabilitation.most.team/storage/exercise/photos/01KQCHWY0J06QHXQ4P2BH5VD3A.png, by_body_side: by_side, execution_order_type: isolated, approaches_count: 2, execution_count: null, execution_time: 20, instruction: {exercise_name: Растяжка мышц задней поверхности бедра - В и.п. стоя на одной ноге, video: https://rehabilitation.most.team/storage/exercise/videos/01KQCHWY0PXRQ1HM420M2
INFO [console] W892Q.mov, inventory: Возвышенность (стул и т.п.), warning: Не допускайте разворота/заваливания поднятой ноги, general_description: Стоя на одной ноге, другая нога выпрямлена в колене и расположена на возвышенности (стул, скамейка, ступенька). Корпус наклонён вперёд, руки тянутся к стопе поднятой ноги. Удерживать это положение заданное количество времени. Важно: колено поднятой ноги должно оставаться выпрямленным; стопа и колено поднятой ноги не должны "заваливаться" наружу (отсутствие ротации); наклон выполняется за счёт сгибания в тазобедренном суставе, а не округления спины; дыхание свободное, без задержек; ощущение растяжения должно быть комфортным, без острой боли., steps: [{exercise_id: 47, sequence_number: 1, step_text: Встаньте боком растягиваемой ноги к камере}, {exercise_id: 47, sequence_number: 2, step_text: Поставьте рабочую ногу на возвышенность, другая нога опорная}, {exercise_id: 47, sequence_number: 3, step_text: Держите спину прямой}, {exercise_id: 47, sequence_num
INFO [console] ber: 4, step_text: Стопа поднятой ноги смотрит на себя}, {exercise_id: 47, sequence_number: 5, step_text: Потянитесь пальцами рук к стопе поднятой ноги. Ваша задача - не обязательно обхватить стопу, а максимально растянуться с прямой спиной}, {exercise_id: 47, sequence_number: 6, step_text: В точке максимального комфортного натяжения в задней поверхности бедра и под коленями зафиксируйте положение. Удерживайте его заданное время}]}}]}}
INFO [console] ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] │ #0 new FlutterSoundPlayer (package:flutter_sound/public/flutter_sound_player.dart:200:13)
INFO [console] │ #1 new AudioPlayerServiceImpl (package:testapp/features/training/data/services/audio_player_service_impl.dart:6:19)
INFO [console] ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
INFO [console] │ 🐛 ctor: FlutterSoundPlayer()
INFO [console] └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] │ #0 FlutterSoundPlayer._openPlayer (package:flutter_sound/public/flutter_sound_player.dart:727:13)
INFO [console] │ #1 FlutterSoundPlayer.openPlayer.<anonymous closure> (package:flutter_sound/public/flutter_sound_player.dart:721:11)
INFO [console] ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
INFO [console] │ 🐛 FS:---> _openPlayer
INFO [console] └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] │ #0 FlutterSoundPlayer._openPlayer (package:flutter_sound/public/flutter_sound_player.dart:740:15)
INFO [console] │ #1 FlutterSoundPlayer.openPlayer.<anonymous closure> (package:flutter_sound/public/flutter_sound_player.dart:721:11)
INFO [console] ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
INFO [console] │ 🐛 Resetting flutter_sound Player Plugin
INFO [console] └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] │ #0 FlutterSoundPlayer.openPlayerCompleted (package:flutter_sound/public/flutter_sound_player.dart:281:13)
INFO [console] │ #1 MethodChannelFlutterSoundPlayer.channelMethodCallHandler.<anonymous closure> (package:flutter_sound_platform_interface/method_channel_flutter_sound_player.dart:84:21)
INFO [console] ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
INFO [console] │ 🐛 ---> openPlayerCompleted: true
INFO [console] └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] │ #0 FlutterSoundPlayer.openPlayerCompleted (package:flutter_sound/public/flutter_sound_player.dart:296:13)
INFO [console] │ #1 MethodChannelFlutterSoundPlayer.channelMethodCallHandler.<anonymous closure> (package:flutter_sound_platform_interface/method_channel_flutter_sound_player.dart:84:21)
INFO [console] ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
INFO [console] │ 🐛 <--- openPlayerCompleted: true
INFO [console] └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] │ #0 FlutterSoundPlayer._openPlayer (package:flutter_sound/public/flutter_sound_player.dart:780:13)
INFO [console] │ #1 <asynchronous suspension>
INFO [console] ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
INFO [console] │ 🐛 FS:<--- _openPlayer
INFO [console] └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] │ #0 FlutterSoundPlayer._setVolume (package:flutter_sound/public/flutter_sound_player.dart:2074:13)
INFO [console] │ #1 FlutterSoundPlayer.setVolume.<anonymous closure> (package:flutter_sound/public/flutter_sound_player.dart:2069:13)
INFO [console] ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
INFO [console] │ 🐛 FS:---> setVolume
INFO [console] └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] │ #0 FlutterSoundPlayer._setVolume (package:flutter_sound/public/flutter_sound_player.dart:2089:13)
INFO [console] │ #1 <asynchronous suspension>
INFO [console] ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
INFO [console] │ 🐛 FS:<--- setVolume
INFO [console] └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
INFO [console] [DIO] *** Request ***
INFO [console] [DIO] uri: https://rehabilitation.most.team/api/v1/patient/workout/detailed-exercises?unit_id=1000&rehabilitation_day_id=2767&workout_id
INFO [console] [DIO] method: GET
INFO [console] [DIO] responseType: ResponseType.json
INFO [console] [DIO] followRedirects: true
INFO [console] [DIO] persistentConnection: true
INFO [console] [DIO] connectTimeout: 0:00:10.000000
INFO [console] [DIO] sendTimeout: null
INFO [console] [DIO] receiveTimeout: 0:00:10.000000
INFO [console] [DIO] transformTimeout: null
INFO [console] [DIO] receiveDataWhenStatusError: true
INFO [console] [DIO] extra: {}
INFO [console] [DIO] headers:
INFO [console] [DIO] Authorization: Bearer 400|MVgQvoX5AEvMhYP4aiZqYXNcduoSqmTT0lKJCkBC015e887e
INFO [console] [DIO] data:
INFO [console] [DIO] null
INFO [console] [DIO]
INFO [console] [DIO] *** Response ***
INFO [console] [DIO] uri: https://rehabilitation.most.team/api/v1/patient/workout/detailed-exercises?unit_id=1000&rehabilitation_day_id=2767&workout_id
INFO [console] [DIO] statusCode: 200
INFO [console] [DIO] statusMessage: OK
INFO [console] [DIO] headers:
INFO [console] [DIO] x-served-by: rehabilitation.most.team
INFO [console] [DIO] access-control-allow-credentials: true
INFO [console] [DIO] connection: keep-alive
INFO [console] [DIO] cache-control: no-cache, private
INFO [console] [DIO] date: Mon, 24 Aug 2026 09:26:58 GMT
INFO [console] [DIO] transfer-encoding: chunked
INFO [console] [DIO] access-control-allow-origin: http://localhost:3000
INFO [console] [DIO] content-type: application/json
INFO [console] [DIO] server: openresty
INFO [console] [DIO] Response Text:
INFO [console] [DIO] {"success":true,"meta":{"timestamp":"2026-08-24T09:26:58.091792Z","request_id":"1f4d56d9-03d9-4dc1-9564-92a0df3b3d59","version":"v1"},"data":{"unit_id":1000,"workout_duration_start":5,"workout_duration_end":10,"body_side":"left","exercises":[{"id":85,"sequence_number":1,"is_monitored":true,"name":"Тренировка икроножных мышц стоя","image":"https://rehabilitation.most.team/storage/exercise/photos/01KSM578DSDH215A8W6P26RXEH.png","by_body_side":"not_by_side","execution_order_type":null,"approaches_count":2,"execution_count":7,"execution_time":null,"instruction":{"exercise_name":"Тренировка икроножных мышц стоя","video":"https://rehabilitation.most.team/storage/exercise/videos/01KRJHJR20X1FNE739BG0QDYN4.mov","inventory":"Опора (стул, подоконник, стена)","warning":"Следите за положением пяток и стоп. Пятки не должны заваливаться внутрь (это признак неправильной нагрузки). Стопы должны оставаться параллельными на протяжении всего движения, для более наглядного контроля вы можете положить кубик для йоги между стопами\nСледите, чтобы спина была прямая\nНе уводите таз вперед/назад\nКолени держите выпрямленными","general_description":"В исходном положении стоя, ноги на ширине таза, руками опереться на спинку стула или стол, выполнить подъём на носки. Следить за тем, чтобы пятки не уходили внутрь, и стопы оставались параллельными. Цель – тренировка мышц голени.","steps":[{"exercise_id":85,"sequence_number":1,"step_text":"Встаньте прямо, лицом к устойчивой опоре (спинка стула, стол, подоконник, стена). Вы должны находиться боком оперированной ноги к камере"},{"exercise_id":85,"sequence_number":2,"step_text":"Поставьте ноги на ширине таза (примерно на расстоянии 10-15 см друг от друга). Стопы должны быть параллельны друг другу"},{"exercise_id":85,"sequence_number":3,"step_text":"Слегка обопритесь руками на опору для сохранения равновесия. Не переносите на руки весь вес тела"},{"exercise_id":85,"sequence_number":4,"step_text":"Спина прямая, живот слегка подтянут, взгляд направлен вперёд"},{"exercise_id":85,"sequence_number":5,"step_text":"Медленно и плавно поднимитесь как можно выше на носки, перенося вес тела на передние части стоп"},{"exercise_id":85,"sequence_number":6,"step_text":"Движение должно быть контролируемым. Максимально напрягите икроножные мышцы в верхней точке"},{"exercise_id":85,"sequence_number":7,"step_text":"Также под контролем медленно опустите пятки на пол, возвращаясь в исходное положение"},{"exercise_id":85,"sequence_number":8,"step_text":"Выполните поднятие на носки необходимое количество раз"}]},"camera_orientation":"vertical","neural_network_type":"mediapipe","base_main_command":"Поднимайтесь и опускайтесь на носках","left_main_command":null,"calibration_parameters":[{"id":107,"name":" Калибровка угла в колене","sequence_number":1,"calibration_parameter_type":"angle","fixation_type":"max_value","fixation_order":null,"deviation_critical":10,"deviation_uncritical":null,"check_on_next_calibrations":true,"has_division_by_side":true,"is_monitored":false,"components":[{"id":148,"component_side":"left","segment_type":null,"parts":[{"id":397,"sequence_number":1,"body_point":{"id":24,"mediapipe_index":23,"movenet_index":11},"line_type":null,"part_type":"point"},{"id":398,"sequence_number":2,"body_point":{"id":26,"mediapipe_index":25,"movenet_index":13},"line_type":null,"part_type":"point"},{"id":399,"sequence_number":3,"body_point":{"id":28,"mediapipe_index":27,"movenet_index":15},"line_type":null,"part_type":"point"}]}],"commands":[{"id":159,"command_side":"left","position_number":1,"position_message":"Примите исходную позицию. Встаньте боком оперированной ноги к камере, держите ноги выпрямленными","fixation_message":"Фиксируем угол в колене, оставайтесь в нужном положении","error_message":"Держите рабочее колено выпрямленным"}]},{"id":108,"name":"Калибровка угла в тазе","sequence_number":2,"calibration_parameter_type":"angle","fixation_type":"max_value","fixation_order":null,"deviation_critical":10,"deviation_uncritical":null,"check_on_next_calibrations":true,"has_division_by_side":true,"is_monitored":false,"components":[{"id":150,"component_side":"left","segment_type":null,"parts":[{"id":403,"sequence_number":1,"body_point":{"id":12,"mediapipe_index":11,"movenet_index":5},"line_type":null,"part_type":"point"},{"id":404,"sequence_number":2,"body_point":{"id":24,"mediapipe_index":23,"movenet_index":11},"line_type":null,"part_type":"point"},{"id":405,"sequence_number":3,"body_point":{"id":28,"mediapipe_index":27,"movenet_index":15},"line_type":null,"part_type":"point"}]}],"commands":[{"id":161,"command_side":"left","position_number":1,"position_message":"Теперь выпрямите спину, она должна быть продолжением ног. Не заваливайте ее в стороны","fixation_message":"Фиксируем угол в тазу, оставайтесь в нужном положении","error_message":"Держите спину прямой"}]},{"id":109,"name":"Калибровка амплитуды рабочего угла","sequence_number":3,"calibration_parameter_type":"angle_amplitude","fixation_type":"alternate","fixation_order":"min_at_first","deviation_critical":20,"deviation_uncritical":10,"check_on_next_calibrations":false,"has_division_by_side":true,"is_monitored":true,"components":[{"id":152,"component_side":"left","segment_type":null,"parts":[{"id":409,"sequence_number":1,"body_point":{"id":26,"mediapipe_index":25,"movenet_index":13},"line_type":null,"part_type":"point"},{"id":410,"sequence_number":2,"body_point":{"id":28,"mediapipe_index":27,"movenet_index":15},"line_type":null,"part_type":"point"},{"id":411,"sequence_number":3,"body_point":{"id":32,"mediapipe_index":31,"movenet_index":null},"line_type":null,"part_type":"point"}]}],"commands":[{"id":163,"command_side":"left","position_number":1,"position_message":"Стойте боком оперированной ноги к камере, стопы на полу","fixation_message":"Фиксируем значение, оставайтесь в нужном положении","error_message":"Поднимайтесь на необходимую высоту"},{"id":165,"command_side":"left","position_number":2,"position_message":"Теперь поднимитесь на носки до максимальной комфортной вам высоты","fixation_message":"Фиксируем значение, не опускайтесь","error_message":"Поднимайтесь на необходимую высоту"}]}]},{"id":47,"sequence_number":2,"is_monitored":true,"name":"Растяжка мышц задней поверхности бедра - В и.п. стоя на одной ноге","image":"https://rehabilitation.most.team/storage/exercise/photos/01KQCHWY0J06QHXQ4P2BH5VD3A.png","by_body_side":"by_side","execution_order_type":"isolated","approaches_count":2,"execution_count":null,"execution_time":20,"instruction":{"exercise_name":"Растяжка мышц задней поверхности бедра - В и.п. стоя на одной ноге","video":"https://rehabilitation.most.team/storage/exercise/videos/01KQCHWY0PXRQ1HM420M2W892Q.mov","inventory":"Возвышенность (стул и т.п.)","warning":"Не допускайте разворота/заваливания поднятой ноги","general_description":"Стоя на одной ноге, другая нога выпрямлена в колене и расположена на возвышенности (стул, скамейка, ступенька). Корпус наклонён вперёд, руки тянутся к стопе поднятой ноги. Удерживать это положение заданное количество времени. Важно: колено поднятой ноги должно оставаться выпрямленным; \nстопа и колено поднятой ноги не должны \"заваливаться\" наружу (отсутствие ротации); \nнаклон выполняется за счёт сгибания в тазобедренном суставе, а не округления спины; \nдыхание свободное, без задержек; \nощущение растяжения должно быть комфортным, без острой боли.","steps":[{"exercise_id":47,"sequence_number":1,"step_text":"Встаньте боком растягиваемой ноги к камере"},{"exercise_id":47,"sequence_number":2,"step_text":"Поставьте рабочую ногу на возвышенность, другая нога опорная"},{"exercise_id":47,"sequence_number":3,"step_text":"Держите спину прямой"},{"exercise_id":47,"sequence_number":4,"step_text":"Стопа поднятой ноги смотрит на себя"},{"exercise_id":47,"sequence_number":5,"step_text":"Потянитесь пальцами рук к стопе поднятой ноги. Ваша задача - не обязательно обхватить стопу, а максимально растянуться с прямой спиной"},{"exercise_id":47,"sequence_number":6,"step_text":"В точке максимального комфортного натяжения в задней поверхности бедра и под коленями зафиксируйте положение. Удерживайте его заданное время"}]},"camera_orientation":"vertical","neural_network_type":"mediapipe","base_main_command":"Наклонитесь к правой ноге","left_main_command":null,"calibration_parameters":[{"id":64,"name":"Калибровка угла в колене","sequence_number":1,"calibration_parameter_type":"angle","fixation_type":"max_value","fixation_order":null,"deviation_critical":10,"deviation_uncritical":null,"check_on_next_calibrations":true,"has_division_by_side":true,"is_monitored":false,"components":[{"id":100,"component_side":"left","segment_type":null,"parts":[{"id":259,"sequence_number":1,"body_point":{"id":24,"mediapipe_index":23,"movenet_index":11},"line_type":null,"part_type":"point"},{"id":260,"sequence_number":2,"body_point":{"id":26,"mediapipe_index":25,"movenet_index":13},"line_type":null,"part_type":"point"},{"id":261,"sequence_number":3,"body_point":{"id":28,"mediapipe_index":27,"movenet_index":15},"line_type":null,"part_type":"point"}]}],"commands":[{"id":121,"command_side":"left","position_number":1,"position_message":"Встаньте левым боком к камере и положите левую ногу на возвышенность, колено прямое","fixation_message":"Фиксируем угол в колене, оставайтесь в нужном положении","error_message":"Держите колено выпрямленным"}]},{"id":106,"name":"Калибровка рабочего угла","sequence_number":2,"calibration_parameter_type":"angle","fixation_type":"min_value","fixation_order":null,"deviation_critical":20,"deviation_uncritical":10,"check_on_next_calibrations":false,"has_division_by_side":true,"is_monitored":true,"components":[{"id":146,"component_side":"left","segment_type":null,"parts":[{"id":391,"sequence_number":1,"body_point":{"id":12,"mediapipe_index":11,"movenet_index":5},"line_type":null,"part_type":"point"},{"id":392,"sequence_number":2,"body_point":{"id":24,"mediapipe_index":23,"movenet_index":11},"line_type":null,"part_type":"point"},{"id":393,"sequence_number":3,"body_point":{"id":28,"mediapipe_index":27,"movenet_index":15},"line_type":null,"part_type":"point"}]}],"commands":[{"id":157,"command_side":"left","position_number":1,"position_message":"Наклонитесь к левой ноге до ощущения комфортного растяжения","fixation_message":"Фиксируем угол наклона, оставайтесь в нужном положении","error_message":"Опускайте корпус ниже"}]}]}]}}
INFO [console] [DIO]
INFO [console] ✅ RAW RESPONSE: {success: true, meta: {timestamp: 2026-08-24T09:26:58.091792Z, request_id: 1f4d56d9-03d9-4dc1-9564-92a0df3b3d59, version: v1}, data: {unit_id: 1000, workout_duration_start: 5, workout_duration_end: 10, body_side: left, exercises: [{id: 85, sequence_number: 1, is_monitored: true, name: Тренировка икроножных мышц стоя, image: https://rehabilitation.most.team/storage/exercise/photos/01KSM578DSDH215A8W6P26RXEH.png, by_body_side: not_by_side, execution_order_type: null, approaches_count: 2, execution_count: 7, execution_time: null, instruction: {exercise_name: Тренировка икроножных мышц стоя, video: https://rehabilitation.most.team/storage/exercise/videos/01KRJHJR20X1FNE739BG0QDYN4.mov, inventory: Опора (стул, подоконник, стена), warning: Следите за положением пяток и стоп. Пятки не должны заваливаться внутрь (это признак неправильной нагрузки). Стопы должны оставаться параллельными на протяжении всего движения, для более наглядного контроля вы можете положить кубик для йоги
INFO [console] между стопами Следите, чтобы спина была прямая Не уводите таз вперед/назад Колени держите выпрямленными, general_description: В исходном положении стоя, ноги на ширине таза, руками опереться на спинку стула или стол, выполнить подъём на носки. Следить за тем, чтобы пятки не уходили внутрь, и стопы оставались параллельными. Цель – тренировка мышц голени., steps: [{exercise_id: 85, sequence_number: 1, step_text: Встаньте прямо, лицом к устойчивой опоре (спинка стула, стол, подоконник, стена). Вы должны находиться боком оперированной ноги к камере}, {exercise_id: 85, sequence_number: 2, step_text: Поставьте ноги на ширине таза (примерно на расстоянии 10-15 см друг от друга). Стопы должны быть параллельны друг другу}, {exercise_id: 85, sequence_number: 3, step_text: Слегка обопритесь руками на опору для сохранения равновесия. Не переносите на руки весь вес тела}, {exercise_id: 85, sequence_number: 4, step_text: Спина прямая, живот слегка подтянут, взгляд направлен вперёд}, {exercise_id: 8
INFO [console] 5, sequence_number: 5, step_text: Медленно и плавно поднимитесь как можно выше на носки, перенося вес тела на передние части стоп}, {exercise_id: 85, sequence_number: 6, step_text: Движение должно быть контролируемым. Максимально напрягите икроножные мышцы в верхней точке}, {exercise_id: 85, sequence_number: 7, step_text: Также под контролем медленно опустите пятки на пол, возвращаясь в исходное положение}, {exercise_id: 85, sequence_number: 8, step_text: Выполните поднятие на носки необходимое количество раз}]}, camera_orientation: vertical, neural_network_type: mediapipe, base_main_command: Поднимайтесь и опускайтесь на носках, left_main_command: null, calibration_parameters: [{id: 107, name: Калибровка угла в колене, sequence_number: 1, calibration_parameter_type: angle, fixation_type: max_value, fixation_order: null, deviation_critical: 10, deviation_uncritical: null, check_on_next_calibrations: true, has_division_by_side: true, is_monitored: false, components: [{id: 148, componen
INFO [console] t_side: left, segment_type: null, parts: [{id: 397, sequence_number: 1, body_point: {id: 24, mediapipe_index: 23, movenet_index: 11}, line_type: null, part_type: point}, {id: 398, sequence_number: 2, body_point: {id: 26, mediapipe_index: 25, movenet_index: 13}, line_type: null, part_type: point}, {id: 399, sequence_number: 3, body_point: {id: 28, mediapipe_index: 27, movenet_index: 15}, line_type: null, part_type: point}]}], commands: [{id: 159, command_side: left, position_number: 1, position_message: Примите исходную позицию. Встаньте боком оперированной ноги к камере, держите ноги выпрямленными, fixation_message: Фиксируем угол в колене, оставайтесь в нужном положении, error_message: Держите рабочее колено выпрямленным}]}, {id: 108, name: Калибровка угла в тазе, sequence_number: 2, calibration_parameter_type: angle, fixation_type: max_value, fixation_order: null, deviation_critical: 10, deviation_uncritical: null, check_on_next_calibrations: true, has_division_by_side: true, is_moni
INFO [console] tored: false, components: [{id: 150, component_side: left, segment_type: null, parts: [{id: 403, sequence_number: 1, body_point: {id: 12, mediapipe_index: 11, movenet_index: 5}, line_type: null, part_type: point}, {id: 404, sequence_number: 2, body_point: {id: 24, mediapipe_index: 23, movenet_index: 11}, line_type: null, part_type: point}, {id: 405, sequence_number: 3, body_point: {id: 28, mediapipe_index: 27, movenet_index: 15}, line_type: null, part_type: point}]}], commands: [{id: 161, command_side: left, position_number: 1, position_message: Теперь выпрямите спину, она должна быть продолжением ног. Не заваливайте ее в стороны, fixation_message: Фиксируем угол в тазу, оставайтесь в нужном положении, error_message: Держите спину прямой}]}, {id: 109, name: Калибровка амплитуды рабочего угла, sequence_number: 3, calibration_parameter_type: angle_amplitude, fixation_type: alternate, fixation_order: min_at_first, deviation_critical: 20, deviation_uncritical: 10, check_on_next_calibration
INFO [console] s: false, has_division_by_side: true, is_monitored: true, components: [{id: 152, component_side: left, segment_type: null, parts: [{id: 409, sequence_number: 1, body_point: {id: 26, mediapipe_index: 25, movenet_index: 13}, line_type: null, part_type: point}, {id: 410, sequence_number: 2, body_point: {id: 28, mediapipe_index: 27, movenet_index: 15}, line_type: null, part_type: point}, {id: 411, sequence_number: 3, body_point: {id: 32, mediapipe_index: 31, movenet_index: null}, line_type: null, part_type: point}]}], commands: [{id: 163, command_side: left, position_number: 1, position_message: Стойте боком оперированной ноги к камере, стопы на полу, fixation_message: Фиксируем значение, оставайтесь в нужном положении, error_message: Поднимайтесь на необходимую высоту}, {id: 165, command_side: left, position_number: 2, position_message: Теперь поднимитесь на носки до максимальной комфортной вам высоты, fixation_message: Фиксируем значение, не опускайтесь, error_message: Поднимайтесь на не
INFO [console] обходимую высоту}]}]}, {id: 47, sequence_number: 2, is_monitored: true, name: Растяжка мышц задней поверхности бедра - В и.п. стоя на одной ноге, image: https://rehabilitation.most.team/storage/exercise/photos/01KQCHWY0J06QHXQ4P2BH5VD3A.png, by_body_side: by_side, execution_order_type: isolated, approaches_count: 2, execution_count: null, execution_time: 20, instruction: {exercise_name: Растяжка мышц задней поверхности бедра - В и.п. стоя на одной ноге, video: https://rehabilitation.most.team/storage/exercise/videos/01KQCHWY0PXRQ1HM420M2W892Q.mov, inventory: Возвышенность (стул и т.п.), warning: Не допускайте разворота/заваливания поднятой ноги, general_description: Стоя на одной ноге, другая нога выпрямлена в колене и расположена на возвышенности (стул, скамейка, ступенька). Корпус наклонён вперёд, руки тянутся к стопе поднятой ноги. Удерживать это положение заданное количество времени. Важно: колено поднятой ноги должно оставаться выпрямленным; стопа и колено поднятой ноги не должны
INFO [console] "заваливаться" наружу (отсутствие ротации); наклон выполняется за счёт сгибания в тазобедренном суставе, а не округления спины; дыхание свободное, без задержек; ощущение растяжения должно быть комфортным, без острой боли., steps: [{exercise_id: 47, sequence_number: 1, step_text: Встаньте боком растягиваемой ноги к камере}, {exercise_id: 47, sequence_number: 2, step_text: Поставьте рабочую ногу на возвышенность, другая нога опорная}, {exercise_id: 47, sequence_number: 3, step_text: Держите спину прямой}, {exercise_id: 47, sequence_number: 4, step_text: Стопа поднятой ноги смотрит на себя}, {exercise_id: 47, sequence_number: 5, step_text: Потянитесь пальцами рук к стопе поднятой ноги. Ваша задача - не обязательно обхватить стопу, а максимально растянуться с прямой спиной}, {exercise_id: 47, sequence_number: 6, step_text: В точке максимального комфортного натяжения в задней поверхности бедра и под коленями зафиксируйте положение. Удерживайте его заданное время}]}, camera_orientation:
INFO [console] vertical, neural_network_type: mediapipe, base_main_command: Наклонитесь к правой ноге, left_main_command: null, calibration_parameters: [{id: 64, name: Калибровка угла в колене, sequence_number: 1, calibration_parameter_type: angle, fixation_type: max_value, fixation_order: null, deviation_critical: 10, deviation_uncritical: null, check_on_next_calibrations: true, has_division_by_side: true, is_monitored: false, components: [{id: 100, component_side: left, segment_type: null, parts: [{id: 259, sequence_number: 1, body_point: {id: 24, mediapipe_index: 23, movenet_index: 11}, line_type: null, part_type: point}, {id: 260, sequence_number: 2, body_point: {id: 26, mediapipe_index: 25, movenet_index: 13}, line_type: null, part_type: point}, {id: 261, sequence_number: 3, body_point: {id: 28, mediapipe_index: 27, movenet_index: 15}, line_type: null, part_type: point}]}], commands: [{id: 121, command_side: left, position_number: 1, position_message: Встаньте левым боком к камере и положите лев
INFO [console] ую ногу на возвышенность, колено прямое, fixation_message: Фиксируем угол в колене, оставайтесь в нужном положении, error_message: Держите колено выпрямленным}]}, {id: 106, name: Калибровка рабочего угла, sequence_number: 2, calibration_parameter_type: angle, fixation_type: min_value, fixation_order: null, deviation_critical: 20, deviation_uncritical: 10, check_on_next_calibrations: false, has_division_by_side: true, is_monitored: true, components: [{id: 146, component_side: left, segment_type: null, parts: [{id: 391, sequence_number: 1, body_point: {id: 12, mediapipe_index: 11, movenet_index: 5}, line_type: null, part_type: point}, {id: 392, sequence_number: 2, body_point: {id: 24, mediapipe_index: 23, movenet_index: 11}, line_type: null, part_type: point}, {id: 393, sequence_number: 3, body_point: {id: 28, mediapipe_index: 27, movenet_index: 15}, line_type: null, part_type: point}]}], commands: [{id: 157, command_side: left, position_number: 1, position_message: Наклонитесь к левой н
INFO [console] оге до ощущения комфортного растяжения, fixation_message: Фиксируем угол наклона, оставайтесь в нужном положении, error_message: Опускайте корпус ниже}]}]}]}}
INFO [console] POSE_ROT: sensorOrient=270 deviceOrient=DeviceOrientation.portraitUp rotDeg=270 img=720x480 -> 480x720
INFO [console] POSE_DIAG: sensorOrient=270 imgSize=720 x 480 imgFormat=35 planes=3 pixelStride=1 rowStride=768 screenSize=384x832
INFO [console] POSE_ROT: sensorOrient=270 deviceOrient=DeviceOrientation.portraitUp rotDeg=270 img=720x480 -> 480x720
INFO [console] POSE_DIAG: sensorOrient=270 imgSize=720 x 480 imgFormat=35 planes=3 pixelStride=1 rowStride=768 screenSize=384x832
INFO [console] POSE_METRICS: received=17(17.0fps) processed=14(14.0fps) replaced=2(2.0fps) buildMs=29.08 estimatorMs=68.20 totalMs=68.80 actualFps=14.0
INFO [console] POSE_METRICS: received=15(13.3fps) processed=13(11.5fps) replaced=1(0.9fps) buildMs=30.25 estimatorMs=76.77 totalMs=76.92 actualFps=11.5
INFO [console] HAND_PELVIS: leftHand=(none) rightHand=(none) pelvis=(1.48,2.23) leftDist=Infinity rightDist=Infinity
INFO [console] REPLICANT_AWARE: false
INFO [console] LEG_GUARD: aware=false visibilityState=BAD association=SKIPPED action=MODEL historyUpdated=true leftRel=0.000 rightRel=0.001 threshold=0.750
INFO [console] LEG_RAW_V2: hipL=(916,1580,-111) v=0.007 p=0.001 hipR=(500,1626,125) v=0.010 p=0.002 kneeL=(929,2355,-372) v=0.019 p=0.000 kneeR=(545,2393,-96) v=0.028 p=0.001 ankL=(981,3026,511) v=0.011 p=0.000 ankR=(604,3111,449) v=0.015 p=0.001 heelL=(1013,3124,602) v=0.007 p=0.000 heelR=(614,3218,497) v=0.010 p=0.001 footL=(896,3217,9) v=0.016 p=0.000 footR=(624,3300,-78) v=0.019 p=0.001 fw=480 fh=720
INFO [console] LEG_COR: hipL=(916,1580,-111) v=0.007 p=0.001 hipR=(500,1626,125) v=0.010 p=0.002 kneeL=(929,2355,-372) v=0.019 p=0.000 kneeR=(545,2393,-96) v=0.028 p=0.001 ankL=(981,3026,511) v=0.011 p=0.000 ankR=(604,3111,449) v=0.015 p=0.001 heelL=(1013,3124,602) v=0.007 p=0.000 heelR=(614,3218,497) v=0.010 p=0.001 footL=(896,3217,9) v=0.016 p=0.000 footR=(624,3300,-78) v=0.019 p=0.001 fw=480 fh=720
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-1778.4,-434.5) -> (2812.7,4156.5) clamped=(0.0,0.0) -> (480.0,720.0) frame=480x720 screen=384x832
INFO [console] BODY_POINT_ENGINE: first geometry event — points=33 isCalibrated=false
INFO [console] HAND_PELVIS: leftHand=(none) rightHand=(0.73,0.18) pelvis=(0.68,0.44) leftDist=Infinity rightDist=0.353
INFO [console] REPLICANT_AWARE: false
INFO [console] LEG_RAW: hipL=(335,322,43) v=0.939 p=0.904 hipR=(318,315,-43) v=0.966 p=0.935 kneeL=(325,324,62) v=0.075 p=0.757 kneeR=(303,282,-25) v=0.195 p=0.804 ankL=(320,345,109) v=0.028 p=0.552 ankR=(325,309,-10) v=0.088 p=0.658 heelL=(322,349,116) v=0.043 p=0.516 heelR=(327,316,-6) v=0.118 p=0.657 footL=(314,350,121) v=0.044 p=0.637 footR=(331,311,-8) v=0.105 p=0.672 fw=480 fh=720
INFO [console] LEG_COR: hipL=(335,322,43) v=0.939 p=0.904 hipR=(318,315,-43) v=0.966 p=0.935 kneeL=(325,324,62) v=0.075 p=0.757 kneeR=(303,282,-25) v=0.195 p=0.804 ankL=(320,345,109) v=0.028 p=0.552 ankR=(325,309,-10) v=0.088 p=0.658 heelL=(322,349,116) v=0.043 p=0.516 heelR=(327,316,-6) v=0.118 p=0.657 footL=(314,350,121) v=0.044 p=0.637 footR=(331,311,-8) v=0.105 p=0.672 fw=480 fh=720
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(0.0,0.0) -> (480.0,720.0) clamped=(0.0,0.0) -> (480.0,720.0) frame=480x720 screen=384x832
INFO [console] HAND_PELVIS: leftHand=(none) rightHand=(0.95,0.11) pelvis=(0.93,0.49) leftDist=Infinity rightDist=0.451
INFO [console] REPLICANT_AWARE: false
INFO [console] LEG_RAW: hipL=(445,344,103) v=0.707 p=0.176 hipR=(443,358,-102) v=0.754 p=0.211 kneeL=(534,378,117) v=0.078 p=0.113 kneeR=(546,395,-115) v=0.562 p=0.124 ankL=(527,458,223) v=0.051 p=0.108 ankR=(517,478,-33) v=0.302 p=0.099 heelL=(521,467,236) v=0.099 p=0.125 heelR=(506,486,-22) v=0.293 p=0.113 footL=(545,479,248) v=0.076 p=0.190 footR=(538,499,-31) v=0.270 p=0.158 fw=480 fh=720
INFO [console] LEG_COR: hipL=(445,344,103) v=0.707 p=0.176 hipR=(443,358,-102) v=0.754 p=0.211 kneeL=(534,378,117) v=0.078 p=0.113 kneeR=(546,395,-115) v=0.562 p=0.124 ankL=(527,458,223) v=0.051 p=0.108 ankR=(517,478,-33) v=0.302 p=0.099 heelL=(521,467,236) v=0.099 p=0.125 heelR=(506,486,-22) v=0.293 p=0.113 footL=(545,479,248) v=0.076 p=0.190 footR=(538,499,-31) v=0.270 p=0.158 fw=480 fh=720
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-41.9,-47.1) -> (733.9,728.7) clamped=(0.0,0.0) -> (480.0,720.0) frame=480x720 screen=384x832
INFO [console] HAND_PELVIS: leftHand=(0.64,0.39) rightHand=(0.58,0.49) pelvis=(0.84,0.62) leftDist=0.319 rightDist=0.258
INFO [console] REPLICANT_AWARE: false
INFO [console] LEG_RAW: hipL=(416,448,-73) v=0.995 p=0.991 hipR=(391,438,74) v=0.994 p=0.995 kneeL=(317,399,-116) v=0.715 p=0.992 kneeR=(305,411,95) v=0.351 p=0.993 ankL=(238,414,-58) v=0.664 p=0.988 ankR=(232,421,151) v=0.330 p=0.982 heelL=(229,426,-54) v=0.583 p=0.983 heelR=(223,430,153) v=0.309 p=0.979 footL=(205,386,-115) v=0.718 p=0.979 footR=(206,400,105) v=0.427 p=0.976 fw=480 fh=720
INFO [console] LEG_COR: hipL=(416,448,-73) v=0.995 p=0.991 hipR=(391,438,74) v=0.994 p=0.995 kneeL=(317,399,-116) v=0.715 p=0.992 kneeR=(305,411,95) v=0.351 p=0.993 ankL=(238,414,-58) v=0.664 p=0.988 ankR=(232,421,151) v=0.330 p=0.982 heelL=(229,426,-54) v=0.583 p=0.983 heelR=(223,430,153) v=0.309 p=0.979 footL=(205,386,-115) v=0.718 p=0.979 footR=(206,400,105) v=0.427 p=0.976 fw=480 fh=720
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(49.7,-28.9) -> (815.8,737.1) clamped=(49.7,0.0) -> (480.0,720.0) frame=480x720 screen=384x832
INFO [console] HAND_PELVIS: leftHand=(0.60,0.38) rightHand=(0.59,0.45) pelvis=(0.74,0.65) leftDist=0.333 rightDist=0.263
INFO [console] REPLICANT_AWARE: false
INFO [console] LEG_RAW: hipL=(369,473,-41) v=0.987 p=0.986 hipR=(344,461,41) v=0.984 p=0.992 kneeL=(317,441,-102) v=0.608 p=0.985 kneeR=(329,437,78) v=0.428 p=0.981 ankL=(255,428,-7) v=0.504 p=0.971 ankR=(278,418,183) v=0.357 p=0.949 heelL=(245,435,3) v=0.350 p=0.957 heelR=(273,422,192) v=0.286 p=0.944 footL=(229,403,-22) v=0.488 p=0.923 footR=(254,403,175) v=0.397 p=0.923 fw=480 fh=720
INFO [console] LEG_COR: hipL=(369,473,-41) v=0.987 p=0.986 hipR=(344,461,41) v=0.984 p=0.992 kneeL=(317,441,-102) v=0.608 p=0.985 kneeR=(329,437,78) v=0.428 p=0.981 ankL=(255,428,-7) v=0.504 p=0.971 ankR=(278,418,183) v=0.357 p=0.949 heelL=(245,435,3) v=0.350 p=0.957 heelR=(273,422,192) v=0.286 p=0.944 footL=(229,403,-22) v=0.488 p=0.923 footR=(254,403,175) v=0.397 p=0.923 fw=480 fh=720
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(33.2,52.6) -> (791.8,811.1) clamped=(33.2,52.6) -> (480.0,720.0) frame=480x720 screen=384x832
INFO [console] HAND_PELVIS: leftHand=(0.63,0.50) rightHand=(0.51,0.52) pelvis=(0.58,0.70) leftDist=0.231 rightDist=0.210
INFO [console] REPLICANT_AWARE: false
INFO [console] LEG_RAW: hipL=(302,499,13) v=0.972 p=0.993 hipR=(257,513,-12) v=0.965 p=0.979 kneeL=(324,471,30) v=0.162 p=0.962 kneeR=(270,482,24) v=0.293 p=0.922 ankL=(313,467,151) v=0.096 p=0.938 ankR=(291,469,148) v=0.197 p=0.880 heelL=(305,469,166) v=0.099 p=0.925 heelR=(292,470,163) v=0.190 p=0.878 footL=(322,472,163) v=0.103 p=0.854 footR=(306,468,160) v=0.174 p=0.755 fw=480 fh=720
INFO [console] LEG_COR: hipL=(302,499,13) v=0.972 p=0.993 hipR=(257,513,-12) v=0.965 p=0.979 kneeL=(324,471,30) v=0.162 p=0.962 kneeR=(270,482,24) v=0.293 p=0.922 ankL=(313,467,151) v=0.096 p=0.938 ankR=(291,469,148) v=0.197 p=0.880 heelL=(305,469,166) v=0.099 p=0.925 heelR=(292,470,163) v=0.190 p=0.878 footL=(322,472,163) v=0.103 p=0.854 footR=(306,468,160) v=0.174 p=0.755 fw=480 fh=720
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-19.4,79.4) -> (750.5,849.2) clamped=(0.0,79.4) -> (480.0,720.0) frame=480x720 screen=384x832
INFO [console] HAND_PELVIS: leftHand=(0.76,0.52) rightHand=(0.72,0.53) pelvis=(0.60,0.70) leftDist=0.229 rightDist=0.206
INFO [console] REPLICANT_AWARE: false
INFO [console] LEG_RAW: hipL=(299,483,49) v=0.953 p=0.994 hipR=(273,524,-49) v=0.957 p=0.959 kneeL=(354,440,272) v=0.067 p=0.974 kneeR=(351,477,170) v=0.307 p=0.898 ankL=(333,466,490) v=0.105 p=0.948 ankR=(320,489,439) v=0.280 p=0.890 heelL=(320,471,519) v=0.149 p=0.932 heelR=(311,490,475) v=0.380 p=0.882 footL=(356,485,547) v=0.121 p=0.859 footR=(342,509,513) v=0.264 p=0.766 fw=480 fh=720
INFO [console] LEG_COR: hipL=(299,483,49) v=0.953 p=0.994 hipR=(273,524,-49) v=0.957 p=0.959 kneeL=(354,440,272) v=0.067 p=0.974 kneeR=(351,477,170) v=0.307 p=0.898 ankL=(333,466,490) v=0.105 p=0.948 ankR=(320,489,439) v=0.280 p=0.890 heelL=(320,471,519) v=0.149 p=0.932 heelR=(311,490,475) v=0.380 p=0.882 footL=(356,485,547) v=0.121 p=0.859 footR=(342,509,513) v=0.264 p=0.766 fw=480 fh=720
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-102.1,104.2) -> (680.5,886.8) clamped=(0.0,104.2) -> (480.0,720.0) frame=480x720 screen=384x832
INFO [console] HAND_PELVIS: leftHand=(0.78,0.56) rightHand=(0.68,0.54) pelvis=(0.63,0.70) leftDist=0.194 rightDist=0.184
INFO [console] REPLICANT_AWARE: false
INFO [console] LEG_RAW: hipL=(328,492,47) v=0.940 p=0.986 hipR=(275,517,-47) v=0.953 p=0.945 kneeL=(368,474,296) v=0.093 p=0.943 kneeR=(336,486,239) v=0.421 p=0.862 ankL=(348,500,581) v=0.117 p=0.914 ankR=(328,499,528) v=0.355 p=0.846 heelL=(334,503,616) v=0.146 p=0.885 heelR=(325,499,563) v=0.348 p=0.836 footL=(367,530,615) v=0.138 p=0.801 footR=(354,528,557) v=0.325 p=0.687 fw=480 fh=720
INFO [console] LEG_COR: hipL=(328,492,47) v=0.940 p=0.986 hipR=(275,517,-47) v=0.953 p=0.945 kneeL=(368,474,296) v=0.093 p=0.943 kneeR=(336,486,239) v=0.421 p=0.862 ankL=(348,500,581) v=0.117 p=0.914 ankR=(328,499,528) v=0.355 p=0.846 heelL=(334,503,616) v=0.146 p=0.885 heelR=(325,499,563) v=0.348 p=0.836 footL=(367,530,615) v=0.138 p=0.801 footR=(354,528,557) v=0.325 p=0.687 fw=480 fh=720
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-110.2,102.2) -> (684.5,897.0) clamped=(0.0,102.2) -> (480.0,720.0) frame=480x720 screen=384x832
INFO [console] HAND_PELVIS: leftHand=(none) rightHand=(none) pelvis=(0.60,0.71) leftDist=Infinity rightDist=Infinity
INFO [console] REPLICANT_AWARE: false
INFO [console] LEG_RAW: hipL=(313,512,28) v=0.881 p=0.963 hipR=(262,512,-28) v=0.846 p=0.911 kneeL=(333,474,200) v=0.129 p=0.952 kneeR=(275,461,167) v=0.242 p=0.910 ankL=(297,471,431) v=0.131 p=0.937 ankR=(295,458,361) v=0.243 p=0.916 heelL=(290,473,460) v=0.171 p=0.922 heelR=(301,462,384) v=0.275 p=0.908 footL=(293,474,460) v=0.158 p=0.863 footR=(309,457,369) v=0.254 p=0.821 fw=480 fh=720
INFO [console] LEG_COR: hipL=(313,512,28) v=0.881 p=0.963 hipR=(262,512,-28) v=0.846 p=0.911 kneeL=(333,474,200) v=0.129 p=0.952 kneeR=(275,461,167) v=0.242 p=0.910 ankL=(297,471,431) v=0.131 p=0.937 ankR=(295,458,361) v=0.243 p=0.916 heelL=(290,473,460) v=0.171 p=0.922 heelR=(301,462,384) v=0.275 p=0.908 footL=(293,474,460) v=0.158 p=0.863 footR=(309,457,369) v=0.254 p=0.821 fw=480 fh=720
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-106.0,102.1) -> (695.5,903.6) clamped=(0.0,102.1) -> (480.0,720.0) frame=480x720 screen=384x832
INFO [console] HAND_PELVIS: leftHand=(0.60,0.47) rightHand=(0.66,0.47) pelvis=(0.58,0.72) leftDist=0.272 rightDist=0.284
INFO [console] REPLICANT_AWARE: false
INFO [console] LEG_RAW: hipL=(260,518,17) v=0.841 p=0.963 hipR=(300,523,-17) v=0.829 p=0.951 kneeL=(283,478,92) v=0.137 p=0.900 kneeR=(322,479,77) v=0.175 p=0.849 ankL=(295,437,219) v=0.113 p=0.862 ankR=(324,435,187) v=0.154 p=0.820 heelL=(286,443,235) v=0.089 p=0.848 heelR=(318,439,200) v=0.121 p=0.822 footL=(330,385,268) v=0.079 p=0.784 footR=(343,386,223) v=0.098 p=0.741 fw=480 fh=720
INFO [console] LEG_COR: hipL=(260,518,17) v=0.841 p=0.963 hipR=(300,523,-17) v=0.829 p=0.951 kneeL=(283,478,92) v=0.137 p=0.900 kneeR=(322,479,77) v=0.175 p=0.849 ankL=(295,437,219) v=0.113 p=0.862 ankR=(324,435,187) v=0.154 p=0.820 heelL=(286,443,235) v=0.089 p=0.848 heelR=(318,439,200) v=0.121 p=0.822 footL=(330,385,268) v=0.079 p=0.784 footR=(343,386,223) v=0.098 p=0.741 fw=480 fh=720
INFO [console] POSE: landmarks=33 → emitting points
INFO [console] ROI_DEBUG: corners computed rawRect=(-111.3,102.1) -> (692.7,906.1) clamped=(0.0,102.1) -> (480.0,720.0) frame=480x720 screen=384x832
INFO [console] POSE_METRICS: received=11(9.3fps) processed=10(8.5fps) replaced=1(0.8fps) buildMs=26.67 estimatorMs=79.72 totalMs=82.15 actualFps=8.5
INFO [console] HAND_PELVIS: leftHand=(0.24,1.02) rightHand=(none) pelvis=(0.42,1.03) leftDist=0.163 rightDist=Infinity
INFO [console] REPLICANT_AWARE: false
INFO [console] LEG_GUARD: aware=false visibilityState=BAD association=SKIPPED action=MODEL historyUpdated=true leftRel=0.174 rightRel=0.154 threshold=0.750
$
250 строкUTF-8LIVE