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

rehabapp_2026-09-18_15-37-20

Подключение…
Rehab Logger console · история загружается порциями по 250 записей
INFO [console] [DIO] method: POST
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] content-type: application/json
INFO [console] [DIO] Authorization: Bearer 690|IvMAyPHC2p9yEjrZTSKoSzRfuY88QxeVITcrwz4Nae9efa62
INFO [console] [DIO] data:
INFO [console] [DIO] {service_type: fcm, token: ckU6AVwUSQCq_6GZ_UhJIn:APA91bEf1IfZgb4P90cGCndo0ixza1aIkU4uUMEjsqYE5bWbXZ3tGOK9iAQWo8F9PJsZgU5iH3OPwPtrLP5N6Fasx49G9QiQGjsSZiI4VMDrvK327IKRr74}
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: Fri, 18 Sep 2026 12:37:20 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-09-18T12:37:20.867734Z","request_id":"9964e6bc-cda4-48ca-afc8-dce0e977244f","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-09-18T12:37:20.867734Z, request_id: 9964e6bc-cda4-48ca-afc8-dce0e977244f, 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/statistics/general
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: Fri, 18 Sep 2026 12:37:20 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-09-18T12:37:20.867586Z","request_id":"c43ae305-7165-4aa5-90ef-abe5b68ad863","version":"v1"},"data":{"rehabilitation_name":"Пластика передней крестообразной связки (ПКС)","rehabilitation_start_date":"2026-09-18","rehabilitation_end_date":"2026-10-08","rehabilitation_weeks_count":3,"quality":{"average_score":null,"phases":[{"phase_sequence_number":1,"phase_name":"Защита и восстановление","weeks":[{"phase_week_number":1,"score":null,"rehabilitation_week_number":1,"is_control_week":false},{"phase_week_number":2,"score":null,"rehabilitation_week_number":2,"is_control_week":false},{"phase_week_number":3,"score":null,"rehabilitation_week_number":3,"is_control_week":true}]}]},"activity":{"average_score":null,"phases":[{"phase_sequence_number":1,"phase_name":"Защита и восстановление","weeks":[{"phase_week_number":1,"score":null,"rehabilitation_week_number":1,"is_control_week":false},{"phase_week_number":2,"score":null,"rehabilitation_week_number":2,"is_control_week":false},{"phase_week_number":3,"score":null,"rehabilitation_week_number":3,"is_control_week":true}]}]}}}
INFO [console] [DIO]
INFO [console] [DIO] *** Response ***
INFO [console] [DIO] uri: https://rehabilitation.most.team/api/v1/patient/rehabilitation/calendar/period?start_date=2026-08-31&end_date=2026-10-04
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: Fri, 18 Sep 2026 12:37:20 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-09-18T12:37:20.867797Z","request_id":"c43a0e75-e8ff-4412-928e-c798be597b4f","version":"v1"},"data":{"start_rehab":"2026-09-18 00:00:00","end_rehab":"2026-10-08 00:00:00","days":[{"date":"2026-09-18","status":["start"],"training":[{"mode":"correction_unit","status":"not_done","progress":null},{"mode":"diagnostics","status":"not_done","progress":null}]},{"date":"2026-09-21","status":["none"],"training":[{"mode":"correction_unit","status":"not_done","progress":null}]},{"date":"2026-09-22","status":["none"],"training":[{"mode":"correction_unit","status":"not_done","progress":null}]},{"date":"2026-09-23","status":["none"],"training":[{"mode":"correction_unit","status":"not_done","progress":null}]},{"date":"2026-09-24","status":["none"],"training":[{"mode":"correction_unit","status":"not_done","progress":null}]},{"date":"2026-09-25","status":["none"],"training":[{"mode":"correction_unit","status":"not_done","progress":null},{"mode":"diagnostics","status":"not_done","progress":null}]},{"date":"2026-09-28","status":["none"],"training":[{"mode":"correction_unit","status":"not_done","progress":null}]},{"date":"2026-09-29","status":["none"],"training":[{"mode":"correction_unit","status":"not_done","progress":null}]},{"date":"2026-09-30","status":["none"],"training":[{"mode":"correction_unit","status":"not_done","progress":null}]},{"date":"2026-10-01","status":["none"],"training":[{"mode":"correction_unit","status":"not_done","progress":null}]},{"date":"2026-10-02","status":["none"],"training":[{"mode":"correction_unit","status":"not_done","progress":null},{"mode":"diagnostics","status":"not_done","progress":null}]}]}}
INFO [console] [DIO]
INFO [console] ✅ RAW RESPONSE: {success: true, meta: {timestamp: 2026-09-18T12:37:20.867586Z, request_id: c43ae305-7165-4aa5-90ef-abe5b68ad863, version: v1}, data: {rehabilitation_name: Пластика передней крестообразной связки (ПКС), rehabilitation_start_date: 2026-09-18, rehabilitation_end_date: 2026-10-08, rehabilitation_weeks_count: 3, quality: {average_score: null, phases: [{phase_sequence_number: 1, phase_name: Защита и восстановление, weeks: [{phase_week_number: 1, score: null, rehabilitation_week_number: 1, is_control_week: false}, {phase_week_number: 2, score: null, rehabilitation_week_number: 2, is_control_week: false}, {phase_week_number: 3, score: null, rehabilitation_week_number: 3, is_control_week: true}]}]}, activity: {average_score: null, phases: [{phase_sequence_number: 1, phase_name: Защита и восстановление, weeks: [{phase_week_number: 1, score: null, rehabilitation_week_number: 1, is_control_week: false}, {phase_week_number: 2, score: null, rehabilitation_week_number: 2, is_control_w
INFO [console] eek: false}, {phase_week_number: 3, score: null, rehabilitation_week_number: 3, is_control_week: true}]}]}}}
INFO [console] ✅ RAW RESPONSE: {success: true, meta: {timestamp: 2026-09-18T12:37:20.867797Z, request_id: c43a0e75-e8ff-4412-928e-c798be597b4f, version: v1}, data: {start_rehab: 2026-09-18 00:00:00, end_rehab: 2026-10-08 00:00:00, days: [{date: 2026-09-18, status: [start], training: [{mode: correction_unit, status: not_done, progress: null}, {mode: diagnostics, status: not_done, progress: null}]}, {date: 2026-09-21, status: [none], training: [{mode: correction_unit, status: not_done, progress: null}]}, {date: 2026-09-22, status: [none], training: [{mode: correction_unit, status: not_done, progress: null}]}, {date: 2026-09-23, status: [none], training: [{mode: correction_unit, status: not_done, progress: null}]}, {date: 2026-09-24, status: [none], training: [{mode: correction_unit, status: not_done, progress: null}]}, {date: 2026-09-25, status: [none], training: [{mode: correction_unit, status: not_done, progress: null}, {mode: diagnostics, status: not_done, progress: null}]}, {date: 2026-09-28, statu
INFO [console] s: [none], training: [{mode: correction_unit, status: not_done, progress: null}]}, {date: 2026-09-29, status: [none], training: [{mode: correction_unit, status: not_done, progress: null}]}, {date: 2026-09-30, status: [none], training: [{mode: correction_unit, status: not_done, progress: null}]}, {date: 2026-10-01, status: [none], training: [{mode: correction_unit, status: not_done, progress: null}]}, {date: 2026-10-02, status: [none], training: [{mode: correction_unit, status: not_done, progress: null}, {mode: diagnostics, status: not_done, progress: null}]}]}}
INFO [console] [DIO] *** Request ***
INFO [console] [DIO] uri: https://rehabilitation.most.team/api/v1/patient/rehabilitation/calendar/day?date=2026-09-18
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 690|IvMAyPHC2p9yEjrZTSKoSzRfuY88QxeVITcrwz4Nae9efa62
INFO [console] [DIO] data:
INFO [console] [DIO] null
INFO [console] [DIO]
INFO [console] shrinkOffset: 0.0, progress: 0.0
INFO [console] shrinkOffset: 0.0, progress: 0.0
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: Fri, 18 Sep 2026 12:37:20 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-09-18T12:37:20.915933Z","request_id":"1d6d68d8-581e-4190-8fc8-82a5b0418369","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-09-18T12:37:20.915933Z, request_id: 1d6d68d8-581e-4190-8fc8-82a5b0418369, 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-09-18
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: Fri, 18 Sep 2026 12:37:20 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-09-18T12:37:20.984721Z","request_id":"1f486869-f09a-44ac-a497-a0dc8eb6bce1","version":"v1"},"data":{"rehabilitation_day_id":3102,"phase_id":362,"diagnosis_rehab":"Пластика передней крестообразной связки (ПКС)","start_rehab":"2026-09-18 00:00:00","end_rehab":"2026-10-08 00:00:00","name_rehab_phase":"Защита и восстановление","status":["start"],"recommendations_count":3,"date":"2026-09-18","training":[{"mode":"correction_unit","status":"not_done","progress":null,"unit_id":1086,"time":"5 - 10 мин","count_questions":null,"status_questions":false,"workout_id":null},{"mode":"diagnostics","status":"not_done","progress":null,"unit_id":1085,"time":"10 - 20 мин","count_questions":null,"status_questions":false,"workout_id":null}]}}
INFO [console] [DIO]
INFO [console] ✅ RAW RESPONSE: {success: true, meta: {timestamp: 2026-09-18T12:37:20.984721Z, request_id: 1f486869-f09a-44ac-a497-a0dc8eb6bce1, version: v1}, data: {rehabilitation_day_id: 3102, phase_id: 362, diagnosis_rehab: Пластика передней крестообразной связки (ПКС), start_rehab: 2026-09-18 00:00:00, end_rehab: 2026-10-08 00:00:00, name_rehab_phase: Защита и восстановление, status: [start], recommendations_count: 3, date: 2026-09-18, training: [{mode: correction_unit, status: not_done, progress: null, unit_id: 1086, time: 5 - 10 мин, count_questions: null, status_questions: false, workout_id: null}, {mode: diagnostics, status: not_done, progress: null, unit_id: 1085, time: 10 - 20 мин, count_questions: null, status_questions: false, workout_id: null}]}}
INFO [console] shrinkOffset: 17.221527777777737, progress: 0.08851005465818221
INFO [console] shrinkOffset: 25.59930555555559, progress: 0.13156764969815649
INFO [console] shrinkOffset: 32.84340277777778, progress: 0.1687986926904879
INFO [console] shrinkOffset: 39.59895833333337, progress: 0.20351887542829195
INFO [console] shrinkOffset: 51.6875, progress: 0.26564794419970633
INFO [console] shrinkOffset: 57.220486111111086, progress: 0.2940847303801598
INFO [console] shrinkOffset: 66.64270833333319, progress: 0.34251024840920147
INFO [console] shrinkOffset: 75.50902777777776, progress: 0.3880787037037036
INFO [console] shrinkOffset: 79.50902777777776, progress: 0.40863670664056123
INFO [console] shrinkOffset: 86.73090277777783, progress: 0.4457535385054661
INFO [console] shrinkOffset: 92.55312500000014, progress: 0.475676853891337
INFO [console] shrinkOffset: 96.84166666666681, progress: 0.4977178169358794
INFO [console] shrinkOffset: 101.88611111111129, progress: 0.5236437428618055
INFO [console] shrinkOffset: 105.68611111111125, progress: 0.5431738456518199
INFO [console] shrinkOffset: 108.64131944444443, progress: 0.5583621410507423
INFO [console] shrinkOffset: 109.59687500000007, progress: 0.5632732195301032
INFO [console] shrinkOffset: 110.93020833333344, progress: 0.5701258871757225
INFO [console] shrinkOffset: 111.39687500000002, progress: 0.5725243208516888
INFO [console] shrinkOffset: 112.93020833333333, progress: 0.5804048886441507
INFO [console] shrinkOffset: 113.48576388888887, progress: 0.5832601668298254
INFO [console] [DIO] *** Request ***
INFO [console] [DIO] uri: https://rehabilitation.most.team/api/v1/patient/workout/exercises?unit_id=1086&rehabilitation_day_id=3102&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 690|IvMAyPHC2p9yEjrZTSKoSzRfuY88QxeVITcrwz4Nae9efa62
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=1086&rehabilitation_day_id=3102&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: Fri, 18 Sep 2026 12:37:23 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-09-18T12:37:23.060527Z","request_id":"29583fb3-97dd-40e4-87a2-9be0de22d7dc","version":"v1"},"data":{"unit_id":1086,"workout_duration_start":5,"workout_duration_end":10,"body_side":"left","exercises":[{"id":35,"sequence_number":1,"name":"[OLD]Сгибание и разгибание в голеностопных суставах","image":"https://rehabilitation.most.team/storage/exercise/photos/01KQ9W7XPDJ63N5ZHWXP8PT0AK.png","by_body_side":"not_by_side","execution_order_type":null,"approaches_count":2,"execution_count":10,"execution_time":null,"instruction":{"exercise_name":"[OLD]Сгибание и разгибание в голеностопных суставах","video":"https://rehabilitation.most.team/storage/exercise/videos/01KQ9W7XPHKNMR9R7HF5YSZY9E.mov","inventory":null,"warning":"Во время выполнения колени должны оставаться выпрямленными, стопы не должны разворачиваться внутрь или наружу (большой палец направлен строго вверх)","general_description":"Исходное положение - лёжа на спине боком к камере, ноги выпрямлены в коленях. Выполнять движения стопами на себя и от себя в максимально доступной амплитуде.","steps":[{"exercise_id":35,"sequence_number":1,"step_text":"Примите положение лёжа на спине (на полу, коврике или тренировочной скамье), боком к камере"},{"exercise_id":35,"sequence_number":2,"step_text":"Выпрямите обе ноги в коленях"},{"exercise_id":35,"sequence_number":3,"step_text":"Стопы расположите параллельно друг другу на ширине таза"},{"exercise_id":35,"sequence_number":4,"step_text":"Руки свободно лежат вдоль туловища ладонями вниз или слегка разведены в стороны для устойчивости"},{"exercise_id":35,"sequence_number":5,"step_text":"Сохраняя прямое, вытянутое положение обеих ног в коленных суставах, начните выполнять одновременное движение стопами"},{"exercise_id":35,"sequence_number":6,"step_text":"На себя: Плавно потяните носки стоп максимально на себя (тыльное сгибание), ощущая растяжение в задней поверхности голени и подколенной области"},{"exercise_id":35,"sequence_number":7,"step_text":"От себя: Затем так же плавно потяните носки стоп максимально от себя (подошвенное сгибание), как будто хотите встать на \"цыпочки\", ощущая напряжение в икрах"},{"exercise_id":35,"sequence_number":8,"step_text":"Движение должно быть ритмичным, без рывков, в спокойном темпе"}],"measurement":null}},{"id":97,"sequence_number":2,"name":"[тестовый] Подъём прямой ноги в сторону - В и.п. лёжа на боку","image":"https://rehabilitation.most.team/storage/exercise/photos/01M07H082ZHTXW5YEE3WYQ188J.png","by_body_side":"by_side","execution_order_type":"isolated","approaches_count":2,"execution_count":10,"execution_time":null,"instruction":{"exercise_name":"[тестовый] Подъём прямой ноги в сторону - В и.п. лёжа на боку","video":"https://rehabilitation.most.team/storage/exercise/videos/01M07H0833AV7J7QJSJ7MK1402.mov","inventory":null,"warning":"Верхняя нога не должна сильно сгибаться в бедре, т.е. отклоняться вперёд к животу","general_description":"Лёжа на боку отвести верхнюю ногу в сторону (поднять). Верхняя нога не должна сильно сгибаться в бедре, т.е. отклоняться вперёд к животу. Представьте, что вы лежите на боку и прижимаетесь спиной к стене, а далее скользите пяткой верхней ноги по стене вверх. Цель – тренировка мышц абдукторов/аддукторов бедра.","steps":[{"exercise_id":97,"sequence_number":1,"step_text":"Лягте на бок так, чтобы рабочая нога была сверху"},{"exercise_id":97,"sequence_number":2,"step_text":"Убедитесь, что вы лежите ровно. Голова может лежать на руке или на подушке"},{"exercise_id":97,"sequence_number":3,"step_text":"Нижнюю ногу слегка согните в колене и тазобедренном суставе для устойчивости"},{"exercise_id":97,"sequence_number":4,"step_text":"Верхнюю ногу полностью выпрямите. Она должна находиться строго над нижней ногой, образуя одну линию с туловищем"},{"exercise_id":97,"sequence_number":5,"step_text":"Положите верхнюю руку на талию или на матрас перед собой для равновесия"},{"exercise_id":97,"sequence_number":6,"step_text":"На выдохе: Медленно поднимите (отведите) прямую ногу вверх. Движение должно происходить строго в плоскости тела, как будто вы отводите ногу в сторону. Нога не должна сгибаться в тазобедренном суставе и отклоняться вперёд по направлению к животу или назад по направлению к спине"},{"exercise_id":97,"sequence_number":7,"step_text":"В верхней точке задержитесь на 1-2 секунды, сохраняя ногу прямой и чувствуя напряжение в боковой поверхности бедра и ягодице"},{"exercise_id":97,"sequence_number":8,"step_text":"На вдохе: Плавно, без рывка, опустите ногу в исходное положение. Старайтесь не класть ногу полностью на нижнюю, а остановитесь чуть выше, чтобы сохранить напряжение в мышцах"},{"exercise_id":97,"sequence_number":9,"step_text":"Повторите необходимое количество раз "}],"measurement":null}},{"id":85,"sequence_number":3,"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":"Выполните поднятие на носки необходимое количество раз"}],"measurement":null}},{"id":47,"sequence_number":4,"name":"[OLD]Растяжка мышц задней поверхности бедра - В и.п. стоя на одной ноге","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":"[OLD]Растяжка мышц задней поверхности бедра - В и.п. стоя на одной ноге","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":"В точке максимального комфортного натяжения в задней поверхности бедра и под коленями зафиксируйте положение. Удерживайте его заданное время"}],"measurement":null}}]}}
INFO [console] [DIO]
INFO [console] ✅ RAW RESPONSE: {success: true, meta: {timestamp: 2026-09-18T12:37:23.060527Z, request_id: 29583fb3-97dd-40e4-87a2-9be0de22d7dc, version: v1}, data: {unit_id: 1086, workout_duration_start: 5, workout_duration_end: 10, body_side: left, exercises: [{id: 35, sequence_number: 1, name: [OLD]Сгибание и разгибание в голеностопных суставах, image: https://rehabilitation.most.team/storage/exercise/photos/01KQ9W7XPDJ63N5ZHWXP8PT0AK.png, by_body_side: not_by_side, execution_order_type: null, approaches_count: 2, execution_count: 10, execution_time: null, instruction: {exercise_name: [OLD]Сгибание и разгибание в голеностопных суставах, video: https://rehabilitation.most.team/storage/exercise/videos/01KQ9W7XPHKNMR9R7HF5YSZY9E.mov, inventory: null, warning: Во время выполнения колени должны оставаться выпрямленными, стопы не должны разворачиваться внутрь или наружу (большой палец направлен строго вверх), general_description: Исходное положение - лёжа на спине боком к камере, ноги выпрямлены в коленя
INFO [console] х. Выполнять движения стопами на себя и от себя в максимально доступной амплитуде., steps: [{exercise_id: 35, sequence_number: 1, step_text: Примите положение лёжа на спине (на полу, коврике или тренировочной скамье), боком к камере}, {exercise_id: 35, sequence_number: 2, step_text: Выпрямите обе ноги в коленях}, {exercise_id: 35, sequence_number: 3, step_text: Стопы расположите параллельно друг другу на ширине таза}, {exercise_id: 35, sequence_number: 4, step_text: Руки свободно лежат вдоль туловища ладонями вниз или слегка разведены в стороны для устойчивости}, {exercise_id: 35, sequence_number: 5, step_text: Сохраняя прямое, вытянутое положение обеих ног в коленных суставах, начните выполнять одновременное движение стопами}, {exercise_id: 35, sequence_number: 6, step_text: На себя: Плавно потяните носки стоп максимально на себя (тыльное сгибание), ощущая растяжение в задней поверхности голени и подколенной области}, {exercise_id: 35, sequence_number: 7, step_text: От себя: Затем так
INFO [console] же плавно потяните носки стоп максимально от себя (подошвенное сгибание), как будто хотите встать на "цыпочки", ощущая напряжение в икрах}, {exercise_id: 35, sequence_number: 8, step_text: Движение должно быть ритмичным, без рывков, в спокойном темпе}], measurement: null}}, {id: 97, sequence_number: 2, name: [тестовый] Подъём прямой ноги в сторону - В и.п. лёжа на боку, image: https://rehabilitation.most.team/storage/exercise/photos/01M07H082ZHTXW5YEE3WYQ188J.png, by_body_side: by_side, execution_order_type: isolated, approaches_count: 2, execution_count: 10, execution_time: null, instruction: {exercise_name: [тестовый] Подъём прямой ноги в сторону - В и.п. лёжа на боку, video: https://rehabilitation.most.team/storage/exercise/videos/01M07H0833AV7J7QJSJ7MK1402.mov, inventory: null, warning: Верхняя нога не должна сильно сгибаться в бедре, т.е. отклоняться вперёд к животу, general_description: Лёжа на боку отвести верхнюю ногу в сторону (поднять). Верхняя нога не должна сильно сгибатьс
INFO [console] я в бедре, т.е. отклоняться вперёд к животу. Представьте, что вы лежите на боку и прижимаетесь спиной к стене, а далее скользите пяткой верхней ноги по стене вверх. Цель – тренировка мышц абдукторов/аддукторов бедра., steps: [{exercise_id: 97, sequence_number: 1, step_text: Лягте на бок так, чтобы рабочая нога была сверху}, {exercise_id: 97, sequence_number: 2, step_text: Убедитесь, что вы лежите ровно. Голова может лежать на руке или на подушке}, {exercise_id: 97, sequence_number: 3, step_text: Нижнюю ногу слегка согните в колене и тазобедренном суставе для устойчивости}, {exercise_id: 97, sequence_number: 4, step_text: Верхнюю ногу полностью выпрямите. Она должна находиться строго над нижней ногой, образуя одну линию с туловищем}, {exercise_id: 97, sequence_number: 5, step_text: Положите верхнюю руку на талию или на матрас перед собой для равновесия}, {exercise_id: 97, sequence_number: 6, step_text: На выдохе: Медленно поднимите (отведите) прямую ногу вверх. Движение должно происходи
INFO [console] ть строго в плоскости тела, как будто вы отводите ногу в сторону. Нога не должна сгибаться в тазобедренном суставе и отклоняться вперёд по направлению к животу или назад по направлению к спине}, {exercise_id: 97, sequence_number: 7, step_text: В верхней точке задержитесь на 1-2 секунды, сохраняя ногу прямой и чувствуя напряжение в боковой поверхности бедра и ягодице}, {exercise_id: 97, sequence_number: 8, step_text: На вдохе: Плавно, без рывка, опустите ногу в исходное положение. Старайтесь не класть ногу полностью на нижнюю, а остановитесь чуть выше, чтобы сохранить напряжение в мышцах}, {exercise_id: 97, sequence_number: 9, step_text: Повторите необходимое количество раз }], measurement: null}}, {id: 85, sequence_number: 3, 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
INFO [console] : {exercise_name: Тренировка икроножных мышц стоя, video: https://rehabilitation.most.team/storage/exercise/videos/01KRJHJR20X1FNE739BG0QDYN4.mov, inventory: Опора (стул, подоконник, стена), warning: Следите за положением пяток и стоп. Пятки не должны заваливаться внутрь (это признак неправильной нагрузки). Стопы должны оставаться параллельными на протяжении всего движения, для более наглядного контроля вы можете положить кубик для йоги между стопами Следите, чтобы спина была прямая Не уводите таз вперед/назад Колени держите выпрямленными, general_description: В исходном положении стоя, ноги на ширине таза, руками опереться на спинку стула или стол, выполнить подъём на носки. Следить за тем, чтобы пятки не уходили внутрь, и стопы оставались параллельными. Цель – тренировка мышц голени., steps: [{exercise_id: 85, sequence_number: 1, step_text: Встаньте прямо, лицом к устойчивой опоре (спинка стула, стол, подоконник, стена). Вы должны находиться боком оперированной ноги к камере}, {exerc
INFO [console] ise_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: Выполните поднятие на носки необходимое количество раз}], measurement: null}}, {id: 47, sequence_num
INFO [console] ber: 4, name: [OLD]Растяжка мышц задней поверхности бедра - В и.п. стоя на одной ноге, 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: [OLD]Растяжка мышц задней поверхности бедра - В и.п. стоя на одной ноге, 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: В точке максимального комфортного натяжения в задней поверхности бедра и под коленями зафиксируйте положение. Удерживайте его заданное время}], measurement: null}}]}}
INFO [console] [DIO] *** Request ***
INFO [console] [DIO] uri: https://rehabilitation.most.team/api/v1/patient/workout/detailed-exercises?unit_id=1086&rehabilitation_day_id=3102&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 690|IvMAyPHC2p9yEjrZTSKoSzRfuY88QxeVITcrwz4Nae9efa62
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=1086&rehabilitation_day_id=3102&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: Fri, 18 Sep 2026 12:37:24 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-09-18T12:37:24.627631Z","request_id":"c30b5eae-422a-4ea6-8fe8-d9f9bcdfa9c4","version":"v1"},"data":{"unit_id":1086,"workout_duration_start":5,"workout_duration_end":10,"body_side":"left","exercises":[{"id":35,"sequence_number":1,"is_monitored":true,"name":"[OLD]Сгибание и разгибание в голеностопных суставах","image":"https://rehabilitation.most.team/storage/exercise/photos/01KQ9W7XPDJ63N5ZHWXP8PT0AK.png","by_body_side":"not_by_side","execution_order_type":null,"approaches_count":2,"execution_count":10,"execution_time":null,"instruction":{"exercise_name":"[OLD]Сгибание и разгибание в голеностопных суставах","video":"https://rehabilitation.most.team/storage/exercise/videos/01KQ9W7XPHKNMR9R7HF5YSZY9E.mov","inventory":null,"warning":"Во время выполнения колени должны оставаться выпрямленными, стопы не должны разворачиваться внутрь или наружу (большой палец направлен строго вверх)","general_description":"Исходное положение - лёжа на спине боком к камере, ноги выпрямлены в коленях. Выполнять движения стопами на себя и от себя в максимально доступной амплитуде.","steps":[{"exercise_id":35,"sequence_number":1,"step_text":"Примите положение лёжа на спине (на полу, коврике или тренировочной скамье), боком к камере"},{"exercise_id":35,"sequence_number":2,"step_text":"Выпрямите обе ноги в коленях"},{"exercise_id":35,"sequence_number":3,"step_text":"Стопы расположите параллельно друг другу на ширине таза"},{"exercise_id":35,"sequence_number":4,"step_text":"Руки свободно лежат вдоль туловища ладонями вниз или слегка разведены в стороны для устойчивости"},{"exercise_id":35,"sequence_number":5,"step_text":"Сохраняя прямое, вытянутое положение обеих ног в коленных суставах, начните выполнять одновременное движение стопами"},{"exercise_id":35,"sequence_number":6,"step_text":"На себя: Плавно потяните носки стоп максимально на себя (тыльное сгибание), ощущая растяжение в задней поверхности голени и подколенной области"},{"exercise_id":35,"sequence_number":7,"step_text":"От себя: Затем так же плавно потяните носки стоп максимально от себя (подошвенное сгибание), как будто хотите встать на \"цыпочки\", ощущая напряжение в икрах"},{"exercise_id":35,"sequence_number":8,"step_text":"Движение должно быть ритмичным, без рывков, в спокойном темпе"}],"measurement":null},"camera_orientation":"horizontal","neural_network_type":"mediapipe","base_main_command":"Сгибайте и разгибайте стопы","left_main_command":null,"calibration_parameters":[{"id":41,"name":"Калибровка угла в колене","calibration_parameter_type":"angle","fixation_type":"max_value","fixation_order":null,"deviation_type":"upward","deviation_critical":10,"deviation_uncritical":null,"has_division_by_side":true,"is_monitored":false,"components":[{"id":53,"component_side":"right","segment_type":null,"parts":[{"id":126,"sequence_number":1,"body_point":{"id":25,"mediapipe_index":24,"movenet_index":12},"line_type":null,"part_type":"point"},{"id":127,"sequence_number":2,"body_point":{"id":27,"mediapipe_index":26,"movenet_index":14},"line_type":null,"part_type":"point"},{"id":128,"sequence_number":3,"body_point":{"id":29,"mediapipe_index":28,"movenet_index":16},"line_type":null,"part_type":"point"}]},{"id":54,"component_side":"left","segment_type":null,"parts":[{"id":129,"sequence_number":1,"body_point":{"id":24,"mediapipe_index":23,"movenet_index":11},"line_type":null,"part_type":"point"},{"id":130,"sequence_number":2,"body_point":{"id":26,"mediapipe_index":25,"movenet_index":13},"line_type":null,"part_type":"point"},{"id":131,"sequence_number":3,"body_point":{"id":28,"mediapipe_index":27,"movenet_index":15},"line_type":null,"part_type":"point"}]}],"commands":[{"id":54,"command_side":"right","error_message":"Держите колени выпрямленными","error_audio":"https://rehabilitation.most.team/storage/exercise/audio-commands/01M2SM4K6G4N63ERBK7A3GMC7Q.mp3"},{"id":55,"command_side":"left","error_message":"Держите колени выпрямленными","error_audio":"https://rehabilitation.most.team/storage/exercise/audio-commands/01M2SM4K6J94Q8G92FW3EG2MHJ.mp3"}],"videos":[]},{"id":42,"name":"Калибровка амплитуды рабочего угла","calibration_parameter_type":"angle_amplitude","fixation_type":"alternate","fixation_order":"min_at_first","deviation_type":"upward","deviation_critical":20,"deviation_uncritical":10,"has_division_by_side":true,"is_monitored":true,"components":[{"id":55,"component_side":"right","segment_type":null,"parts":[{"id":132,"sequence_number":1,"body_point":{"id":27,"mediapipe_index":26,"movenet_index":14},"line_type":null,"part_type":"point"},{"id":133,"sequence_number":2,"body_point":{"id":29,"mediapipe_index":28,"movenet_index":16},"line_type":null,"part_type":"point"},{"id":134,"sequence_number":3,"body_point":{"id":33,"mediapipe_index":32,"movenet_index":null},"line_type":null,"part_type":"point"}]},{"id":56,"component_side":"left","segment_type":null,"parts":[{"id":135,"sequence_number":1,"body_point":{"id":26,"mediapipe_index":25,"movenet_index":13},"line_type":null,"part_type":"point"},{"id":136,"sequence_number":2,"body_point":{"id":28,"mediapipe_index":27,"movenet_index":15},"line_type":null,"part_type":"point"},{"id":137,"sequence_number":3,"body_point":{"id":32,"mediapipe_index":31,"movenet_index":null},"line_type":null,"part_type":"point"}]}],"commands":[{"id":56,"command_side":"right","error_message":"Вращайте стопы в большей амплитуде","error_audio":"https://rehabilitation.most.team/storage/exercise/audio-commands/01M2SM4K6KTZ7EFDZ9B15DFXR2.mp3"},{"id":57,"command_side":"left","error_message":"Вращайте стопы в большей амплитуде","error_audio":"https://rehabilitation.most.team/storage/exercise/audio-commands/01M2SM4K6MXVWWB1BJ805RWCG1.mp3"},{"id":58,"command_side":"right","error_message":"Вращайте стопы в большей амплитуде","error_audio":"https://rehabilitation.most.team/storage/exercise/audio-commands/01M2SM4K6N21GHA8N2KRDT30NG.mp3"},{"id":59,"command_side":"left","error_message":"Вращайте стопы в большей амплитуде","error_audio":"https://rehabilitation.most.team/storage/exercise/audio-commands/01M2SM4K6PVE9W6N8T5JCD72XB.mp3"}],"videos":[{"video_url":"https://rehabilitation.most.team/storage/exercise/calibration-videos/01M2SM4K6QZ81F8KS9ZP7CSQ0R.mp4","body_side":"right"},{"video_url":"https://rehabilitation.most.team/storage/exercise/calibration-videos/01M2SM4K8YXWA9DB5YA3V6VJHN.mp4","body_side":"left"}]}],"calibration_videos":[{"video_url":"https://rehabilitation.most.team/storage/exercise/calibration-videos/01M2SM4KB0ETSNMQ4PJJPMCG1Y.mp4","body_side":"right"},{"video_url":"https://rehabilitation.most.team/storage/exercise/calibration-videos/01M2SM4KD1AGX9685GQWVAN6F2.mp4","body_side":"left"}]},{"id":97,"sequence_number":2,"is_monitored":true,"name":"[тестовый] Подъём прямой ноги в сторону - В и.п. лёжа на боку","image":"https://rehabilitation.most.team/storage/exercise/photos/01M07H082ZHTXW5YEE3WYQ188J.png","by_body_side":"by_side","execution_order_type":"isolated","approaches_count":2,"execution_count":10,"execution_time":null,"instruction":{"exercise_name":"[тестовый] Подъём прямой ноги в сторону - В и.п. лёжа на боку","video":"https://rehabilitation.most.team/storage/exercise/videos/01M07H0833AV7J7QJSJ7MK1402.mov","inventory":null,"warning":"Верхняя нога не должна сильно сгибаться в бедре, т.е. отклоняться вперёд к животу","general_description":"Лёжа на боку отвести верхнюю ногу в сторону (поднять). Верхняя нога не должна сильно сгибаться в бедре, т.е. отклоняться вперёд к животу. Представьте, что вы лежите на боку и прижимаетесь спиной к стене, а далее скользите пяткой верхней ноги по стене вверх. Цель – тренировка мышц абдукторов/аддукторов бедра.","steps":[{"exercise_id":97,"sequence_number":1,"step_text":"Лягте на бок так, чтобы рабочая нога была сверху"},{"exercise_id":97,"sequence_number":2,"step_text":"Убедитесь, что вы лежите ровно. Голова может лежать на руке или на подушке"},{"exercise_id":97,"sequence_number":3,"step_text":"Нижнюю ногу слегка согните в колене и тазобедренном суставе для устойчивости"},{"exercise_id":97,"sequence_number":4,"step_text":"Верхнюю ногу полностью выпрямите. Она должна находиться строго над нижней ногой, образуя одну линию с туловищем"},{"exercise_id":97,"sequence_number":5,"step_text":"Положите верхнюю руку на талию или на матрас перед собой для равновесия"},{"exercise_id":97,"sequence_number":6,"step_text":"На выдохе: Медленно поднимите (отведите) прямую ногу вверх. Движение должно происходить строго в плоскости тела, как будто вы отводите ногу в сторону. Нога не должна сгибаться в тазобедренном суставе и отклоняться вперёд по направлению к животу или назад по направлению к спине"},{"exercise_id":97,"sequence_number":7,"step_text":"В верхней точке задержитесь на 1-2 секунды, сохраняя ногу прямой и чувствуя напряжение в боковой поверхности бедра и ягодице"},{"exercise_id":97,"sequence_number":8,"step_text":"На вдохе: Плавно, без рывка, опустите ногу в исходное положение. Старайтесь не класть ногу полностью на нижнюю, а остановитесь чуть выше, чтобы сохранить напряжение в мышцах"},{"exercise_id":97,"sequence_number":9,"step_text":"Повторите необходимое количество раз "}],"measurement":null},"camera_orientation":"horizontal","neural_network_type":"mediapipe","base_main_command":"Поднимайте и опускайте правую ногу","left_main_command":null,"calibration_parameters":[{"id":146,"name":"Калибровка сегмента ноги","calibration_parameter_type":"one_segment","fixation_type":"max_value","fixation_order":null,"deviation_type":null,"deviation_critical":10,"deviation_uncritical":null,"has_division_by_side":true,"is_monitored":false,"components":[{"id":215,"component_side":"right","segment_type":null,"parts":[{"id":582,"sequence_number":1,"body_point":{"id":25,"mediapipe_index":24,"movenet_index":12},"line_type":null,"part_type":"point"},{"id":583,"sequence_number":2,"body_point":{"id":29,"mediapipe_index":28,"movenet_index":16},"line_type":null,"part_type":"point"}]},{"id":216,"component_side":"left","segment_type":null,"parts":[{"id":584,"sequence_number":1,"body_point":{"id":24,"mediapipe_index":23,"movenet_index":11},"line_type":null,"part_type":"point"},{"id":585,"sequence_number":2,"body_point":{"id":28,"mediapipe_index":27,"movenet_index":15},"line_type":null,"part_type":"point"}]}],"commands":[{"id":232,"command_side":"right","error_message":"Не заваливайте ногу в сторону","error_audio":null},{"id":233,"command_side":"left","error_message":"Не заваливайте ногу в сторону","error_audio":null}],"videos":[]},{"id":147,"name":"Калибровка рабочего угла (угол между прямой таза и ногой)","calibration_parameter_type":"angle_amplitude","fixation_type":"alternate","fixation_order":"min_at_first","deviation_type":null,"deviation_critical":20,"deviation_uncritical":10,"has_division_by_side":true,"is_monitored":true,"components":[{"id":217,"component_side":"right","segment_type":null,"parts":[{"id":586,"sequence_number":1,"body_point":{"id":27,"mediapipe_index":26,"movenet_index":14},"line_type":null,"part_type":"point"},{"id":587,"sequence_number":2,"body_point":{"id":25,"mediapipe_index":24,"movenet_index":12},"line_type":null,"part_type":"point"},{"id":588,"sequence_number":3,"body_point":null,"line_type":"vertical","part_type":"line"}]},{"id":218,"component_side":"left","segment_type":null,"parts":[{"id":589,"sequence_number":1,"body_point":{"id":26,"mediapipe_index":25,"movenet_index":13},"line_type":null,"part_type":"point"},{"id":590,"sequence_number":2,"body_point":{"id":24,"mediapipe_index":23,"movenet_index":11},"line_type":null,"part_type":"point"},{"id":591,"sequence_number":3,"body_point":null,"line_type":"vertical","part_type":"line"}]}],"commands":[{"id":234,"command_side":"right","error_message":"Поднимайте ногу на необходимый уровень","error_audio":null},{"id":235,"command_side":"left","error_message":"Поднимайте ногу на необходимый уровень","error_audio":null},{"id":236,"command_side":"right","error_message":"Поднимайте ногу на необходимый уровень","error_audio":null},{"id":237,"command_side":"left","error_message":"Поднимайте ногу на необходимый уровень","error_audio":null}],"videos":[]}],"calibration_videos":[]},{"id":85,"sequence_number":3,"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":"Выполните поднятие на носки необходимое количество раз"}],"measurement":null},"camera_orientation":"vertical","neural_network_type":"mediapipe","base_main_command":"Поднимайтесь и опускайтесь на носках","left_main_command":null,"calibration_parameters":[{"id":107,"name":" Калибровка угла в колене","calibration_parameter_type":"angle","fixation_type":"max_value","fixation_order":null,"deviation_type":null,"deviation_critical":10,"deviation_uncritical":null,"has_division_by_side":true,"is_monitored":false,"components":[{"id":147,"component_side":"right","segment_type":null,"parts":[{"id":394,"sequence_number":1,"body_point":{"id":25,"mediapipe_index":24,"movenet_index":12},"line_type":null,"part_type":"point"},{"id":395,"sequence_number":2,"body_point":{"id":27,"mediapipe_index":26,"movenet_index":14},"line_type":null,"part_type":"point"},{"id":396,"sequence_number":3,"body_point":{"id":29,"mediapipe_index":28,"movenet_index":16},"line_type":null,"part_type":"point"}]},{"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":158,"command_side":"right","error_message":"Держите рабочее колено выпрямленным","error_audio":null},{"id":159,"command_side":"left","error_message":"Держите рабочее колено выпрямленным","error_audio":null}],"videos":[]},{"id":108,"name":"Калибровка угла в тазе","calibration_parameter_type":"angle","fixation_type":"max_value","fixation_order":null,"deviation_type":null,"deviation_critical":10,"deviation_uncritical":null,"has_division_by_side":true,"is_monitored":false,"components":[{"id":149,"component_side":"right","segment_type":null,"parts":[{"id":400,"sequence_number":1,"body_point":{"id":13,"mediapipe_index":12,"movenet_index":6},"line_type":null,"part_type":"point"},{"id":401,"sequence_number":2,"body_point":{"id":25,"mediapipe_index":24,"movenet_index":12},"line_type":null,"part_type":"point"},{"id":402,"sequence_number":3,"body_point":{"id":29,"mediapipe_index":28,"movenet_index":16},"line_type":null,"part_type":"point"}]},{"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":160,"command_side":"right","error_message":"Держите спину прямой","error_audio":null},{"id":161,"command_side":"left","error_message":"Держите спину прямой","error_audio":null}],"videos":[]},{"id":109,"name":"Калибровка амплитуды рабочего угла","calibration_parameter_type":"angle_amplitude","fixation_type":"alternate","fixation_order":"min_at_first","deviation_type":null,"deviation_critical":20,"deviation_uncritical":10,"has_division_by_side":true,"is_monitored":true,"components":[{"id":151,"component_side":"right","segment_type":null,"parts":[{"id":406,"sequence_number":1,"body_point":{"id":27,"mediapipe_index":26,"movenet_index":14},"line_type":null,"part_type":"point"},{"id":407,"sequence_number":2,"body_point":{"id":29,"mediapipe_index":28,"movenet_index":16},"line_type":null,"part_type":"point"},{"id":408,"sequence_number":3,"body_point":{"id":33,"mediapipe_index":32,"movenet_index":null},"line_type":null,"part_type":"point"}]},{"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":162,"command_side":"right","error_message":"Поднимайтесь на необходимую высоту","error_audio":null},{"id":163,"command_side":"left","error_message":"Поднимайтесь на необходимую высоту","error_audio":null},{"id":164,"command_side":"right","error_message":"Поднимайтесь на необходимую высоту","error_audio":null},{"id":165,"command_side":"left","error_message":"Поднимайтесь на необходимую высоту","error_audio":null}],"videos":[]}],"calibration_videos":[]},{"id":47,"sequence_number":4,"is_monitored":true,"name":"[OLD]Растяжка мышц задней поверхности бедра - В и.п. стоя на одной ноге","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":"[OLD]Растяжка мышц задней поверхности бедра - В и.п. стоя на одной ноге","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":"В точке максимального комфортного натяжения в задней поверхности бедра и под коленями зафиксируйте положение. Удерживайте его заданное время"}],"measurement":null},"camera_orientation":"vertical","neural_network_type":"mediapipe","base_main_command":"Наклонитесь к правой ноге","left_main_command":null,"calibration_parameters":[{"id":64,"name":"Калибровка угла в колене","calibration_parameter_type":"angle","fixation_type":"max_value","fixation_order":null,"deviation_type":"upward","deviation_critical":10,"deviation_uncritical":null,"has_division_by_side":true,"is_monitored":false,"components":[{"id":99,"component_side":"right","segment_type":null,"parts":[{"id":256,"sequence_number":1,"body_point":{"id":25,"mediapipe_index":24,"movenet_index":12},"line_type":null,"part_type":"point"},{"id":257,"sequence_number":2,"body_point":{"id":27,"mediapipe_index":26,"movenet_index":14},"line_type":null,"part_type":"point"},{"id":258,"sequence_number":3,"body_point":{"id":29,"mediapipe_index":28,"movenet_index":16},"line_type":null,"part_type":"point"}]},{"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":120,"command_side":"right","error_message":"Держите колено выпрямленным","error_audio":"https://rehabilitation.most.team/storage/exercise/audio-commands/01M2SM07RZWGYBA7ARDC81R4E7.mp3"},{"id":121,"command_side":"left","error_message":"Держите колено выпрямленным","error_audio":"https://rehabilitation.most.team/storage/exercise/audio-commands/01M2SM07S2QYS3KHV7GTP1RR69.mp3"}],"videos":[]},{"id":106,"name":"Калибровка рабочего угла","calibration_parameter_type":"angle","fixation_type":"min_value","fixation_order":null,"deviation_type":"upward","deviation_critical":20,"deviation_uncritical":10,"has_division_by_side":true,"is_monitored":true,"components":[{"id":145,"component_side":"right","segment_type":null,"parts":[{"id":388,"sequence_number":1,"body_point":{"id":13,"mediapipe_index":12,"movenet_index":6},"line_type":null,"part_type":"point"},{"id":389,"sequence_number":2,"body_point":{"id":25,"mediapipe_index":24,"movenet_index":12},"line_type":null,"part_type":"point"},{"id":390,"sequence_number":3,"body_point":{"id":29,"mediapipe_index":28,"movenet_index":16},"line_type":null,"part_type":"point"}]},{"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":156,"command_side":"right","error_message":"Опускайте корпус ниже","error_audio":"https://rehabilitation.most.team/storage/exercise/audio-commands/01M2SM07S3EDRCHQ9E234AQAYF.mp3"},{"id":157,"command_side":"left","error_message":"Опускайте корпус ниже","error_audio":"https://rehabilitation.most.team/storage/exercise/audio-commands/01M2SM07S4VM5J29MBFBCZW8X6.mp3"}],"videos":[{"video_url":"https://rehabilitation.most.team/storage/exercise/calibration-videos/01M2SM07S53VNQ828P1AYA22FX.mp4","body_side":"right"},{"video_url":"https://rehabilitation.most.team/storage/exercise/calibration-videos/01M2SM07WARDRBB2TPYHK7SVV6.mp4","body_side":"left"}]}],"calibration_videos":[{"video_url":"https://rehabilitation.most.team/storage/exercise/calibration-videos/01M2SM080MH53RPSJYR4B42W96.mp4","body_side":"right"},{"video_url":"https://rehabilitation.most.team/storage/exercise/calibration-videos/01M2SM082WPWEQTFRNMSZ8W7XW.mp4","body_side":"left"}]}]}}
INFO [console] ✅ RAW RESPONSE: {success: true, meta: {timestamp: 2026-09-18T12:37:24.627631Z, request_id: c30b5eae-422a-4ea6-8fe8-d9f9bcdfa9c4, version: v1}, data: {unit_id: 1086, workout_duration_start: 5, workout_duration_end: 10, body_side: left, exercises: [{id: 35, sequence_number: 1, is_monitored: true, name: [OLD]Сгибание и разгибание в голеностопных суставах, image: https://rehabilitation.most.team/storage/exercise/photos/01KQ9W7XPDJ63N5ZHWXP8PT0AK.png, by_body_side: not_by_side, execution_order_type: null, approaches_count: 2, execution_count: 10, execution_time: null, instruction: {exercise_name: [OLD]Сгибание и разгибание в голеностопных суставах, video: https://rehabilitation.most.team/storage/exercise/videos/01KQ9W7XPHKNMR9R7HF5YSZY9E.mov, inventory: null, warning: Во время выполнения колени должны оставаться выпрямленными, стопы не должны разворачиваться внутрь или наружу (большой палец направлен строго вверх), general_description: Исходное положение - лёжа на спине боком к камере, ноги
INFO [console] выпрямлены в коленях. Выполнять движения стопами на себя и от себя в максимально доступной амплитуде., steps: [{exercise_id: 35, sequence_number: 1, step_text: Примите положение лёжа на спине (на полу, коврике или тренировочной скамье), боком к камере}, {exercise_id: 35, sequence_number: 2, step_text: Выпрямите обе ноги в коленях}, {exercise_id: 35, sequence_number: 3, step_text: Стопы расположите параллельно друг другу на ширине таза}, {exercise_id: 35, sequence_number: 4, step_text: Руки свободно лежат вдоль туловища ладонями вниз или слегка разведены в стороны для устойчивости}, {exercise_id: 35, sequence_number: 5, step_text: Сохраняя прямое, вытянутое положение обеих ног в коленных суставах, начните выполнять одновременное движение стопами}, {exercise_id: 35, sequence_number: 6, step_text: На себя: Плавно потяните носки стоп максимально на себя (тыльное сгибание), ощущая растяжение в задней поверхности голени и подколенной области}, {exercise_id: 35, sequence_number: 7, step_text
INFO [console] : От себя: Затем так же плавно потяните носки стоп максимально от себя (подошвенное сгибание), как будто хотите встать на "цыпочки", ощущая напряжение в икрах}, {exercise_id: 35, sequence_number: 8, step_text: Движение должно быть ритмичным, без рывков, в спокойном темпе}], measurement: null}, camera_orientation: horizontal, neural_network_type: mediapipe, base_main_command: Сгибайте и разгибайте стопы, left_main_command: null, calibration_parameters: [{id: 41, name: Калибровка угла в колене, calibration_parameter_type: angle, fixation_type: max_value, fixation_order: null, deviation_type: upward, deviation_critical: 10, deviation_uncritical: null, has_division_by_side: true, is_monitored: false, components: [{id: 53, component_side: right, segment_type: null, parts: [{id: 126, sequence_number: 1, body_point: {id: 25, mediapipe_index: 24, movenet_index: 12}, line_type: null, part_type: point}, {id: 127, sequence_number: 2, body_point: {id: 27, mediapipe_index: 26, movenet_index: 14}, l
INFO [console] ine_type: null, part_type: point}, {id: 128, sequence_number: 3, body_point: {id: 29, mediapipe_index: 28, movenet_index: 16}, line_type: null, part_type: point}]}, {id: 54, component_side: left, segment_type: null, parts: [{id: 129, sequence_number: 1, body_point: {id: 24, mediapipe_index: 23, movenet_index: 11}, line_type: null, part_type: point}, {id: 130, sequence_number: 2, body_point: {id: 26, mediapipe_index: 25, movenet_index: 13}, line_type: null, part_type: point}, {id: 131, sequence_number: 3, body_point: {id: 28, mediapipe_index: 27, movenet_index: 15}, line_type: null, part_type: point}]}], commands: [{id: 54, command_side: right, error_message: Держите колени выпрямленными, error_audio: https://rehabilitation.most.team/storage/exercise/audio-commands/01M2SM4K6G4N63ERBK7A3GMC7Q.mp3}, {id: 55, command_side: left, error_message: Держите колени выпрямленными, error_audio: https://rehabilitation.most.team/storage/exercise/audio-commands/01M2SM4K6J94Q8G92FW3EG2MHJ.mp3}], videos
INFO [console] : []}, {id: 42, name: Калибровка амплитуды рабочего угла, calibration_parameter_type: angle_amplitude, fixation_type: alternate, fixation_order: min_at_first, deviation_type: upward, deviation_critical: 20, deviation_uncritical: 10, has_division_by_side: true, is_monitored: true, components: [{id: 55, component_side: right, segment_type: null, parts: [{id: 132, sequence_number: 1, body_point: {id: 27, mediapipe_index: 26, movenet_index: 14}, line_type: null, part_type: point}, {id: 133, sequence_number: 2, body_point: {id: 29, mediapipe_index: 28, movenet_index: 16}, line_type: null, part_type: point}, {id: 134, sequence_number: 3, body_point: {id: 33, mediapipe_index: 32, movenet_index: null}, line_type: null, part_type: point}]}, {id: 56, component_side: left, segment_type: null, parts: [{id: 135, sequence_number: 1, body_point: {id: 26, mediapipe_index: 25, movenet_index: 13}, line_type: null, part_type: point}, {id: 136, sequence_number: 2, body_point: {id: 28, mediapipe_index: 27,
INFO [console] movenet_index: 15}, line_type: null, part_type: point}, {id: 137, sequence_number: 3, body_point: {id: 32, mediapipe_index: 31, movenet_index: null}, line_type: null, part_type: point}]}], commands: [{id: 56, command_side: right, error_message: Вращайте стопы в большей амплитуде, error_audio: https://rehabilitation.most.team/storage/exercise/audio-commands/01M2SM4K6KTZ7EFDZ9B15DFXR2.mp3}, {id: 57, command_side: left, error_message: Вращайте стопы в большей амплитуде, error_audio: https://rehabilitation.most.team/storage/exercise/audio-commands/01M2SM4K6MXVWWB1BJ805RWCG1.mp3}, {id: 58, command_side: right, error_message: Вращайте стопы в большей амплитуде, error_audio: https://rehabilitation.most.team/storage/exercise/audio-commands/01M2SM4K6N21GHA8N2KRDT30NG.mp3}, {id: 59, command_side: left, error_message: Вращайте стопы в большей амплитуде, error_audio: https://rehabilitation.most.team/storage/exercise/audio-commands/01M2SM4K6PVE9W6N8T5JCD72XB.mp3}], videos: [{video_url: https://reh
INFO [console] abilitation.most.team/storage/exercise/calibration-videos/01M2SM4K6QZ81F8KS9ZP7CSQ0R.mp4, body_side: right}, {video_url: https://rehabilitation.most.team/storage/exercise/calibration-videos/01M2SM4K8YXWA9DB5YA3V6VJHN.mp4, body_side: left}]}], calibration_videos: [{video_url: https://rehabilitation.most.team/storage/exercise/calibration-videos/01M2SM4KB0ETSNMQ4PJJPMCG1Y.mp4, body_side: right}, {video_url: https://rehabilitation.most.team/storage/exercise/calibration-videos/01M2SM4KD1AGX9685GQWVAN6F2.mp4, body_side: left}]}, {id: 97, sequence_number: 2, is_monitored: true, name: [тестовый] Подъём прямой ноги в сторону - В и.п. лёжа на боку, image: https://rehabilitation.most.team/storage/exercise/photos/01M07H082ZHTXW5YEE3WYQ188J.png, by_body_side: by_side, execution_order_type: isolated, approaches_count: 2, execution_count: 10, execution_time: null, instruction: {exercise_name: [тестовый] Подъём прямой ноги в сторону - В и.п. лёжа на боку, video: https://rehabilitation.most.team/storag
INFO [console] e/exercise/videos/01M07H0833AV7J7QJSJ7MK1402.mov, inventory: null, warning: Верхняя нога не должна сильно сгибаться в бедре, т.е. отклоняться вперёд к животу, general_description: Лёжа на боку отвести верхнюю ногу в сторону (поднять). Верхняя нога не должна сильно сгибаться в бедре, т.е. отклоняться вперёд к животу. Представьте, что вы лежите на боку и прижимаетесь спиной к стене, а далее скользите пяткой верхней ноги по стене вверх. Цель – тренировка мышц абдукторов/аддукторов бедра., steps: [{exercise_id: 97, sequence_number: 1, step_text: Лягте на бок так, чтобы рабочая нога была сверху}, {exercise_id: 97, sequence_number: 2, step_text: Убедитесь, что вы лежите ровно. Голова может лежать на руке или на подушке}, {exercise_id: 97, sequence_number: 3, step_text: Нижнюю ногу слегка согните в колене и тазобедренном суставе для устойчивости}, {exercise_id: 97, sequence_number: 4, step_text: Верхнюю ногу полностью выпрямите. Она должна находиться строго над нижней ногой, образуя одну лини
INFO [console] ю с туловищем}, {exercise_id: 97, sequence_number: 5, step_text: Положите верхнюю руку на талию или на матрас перед собой для равновесия}, {exercise_id: 97, sequence_number: 6, step_text: На выдохе: Медленно поднимите (отведите) прямую ногу вверх. Движение должно происходить строго в плоскости тела, как будто вы отводите ногу в сторону. Нога не должна сгибаться в тазобедренном суставе и отклоняться вперёд по направлению к животу или назад по направлению к спине}, {exercise_id: 97, sequence_number: 7, step_text: В верхней точке задержитесь на 1-2 секунды, сохраняя ногу прямой и чувствуя напряжение в боковой поверхности бедра и ягодице}, {exercise_id: 97, sequence_number: 8, step_text: На вдохе: Плавно, без рывка, опустите ногу в исходное положение. Старайтесь не класть ногу полностью на нижнюю, а остановитесь чуть выше, чтобы сохранить напряжение в мышцах}, {exercise_id: 97, sequence_number: 9, step_text: Повторите необходимое количество раз }], measurement: null}, camera_orientation: h
INFO [console] orizontal, neural_network_type: mediapipe, base_main_command: Поднимайте и опускайте правую ногу, left_main_command: null, calibration_parameters: [{id: 146, name: Калибровка сегмента ноги, calibration_parameter_type: one_segment, fixation_type: max_value, fixation_order: null, deviation_type: null, deviation_critical: 10, deviation_uncritical: null, has_division_by_side: true, is_monitored: false, components: [{id: 215, component_side: right, segment_type: null, parts: [{id: 582, sequence_number: 1, body_point: {id: 25, mediapipe_index: 24, movenet_index: 12}, line_type: null, part_type: point}, {id: 583, sequence_number: 2, body_point: {id: 29, mediapipe_index: 28, movenet_index: 16}, line_type: null, part_type: point}]}, {id: 216, component_side: left, segment_type: null, parts: [{id: 584, sequence_number: 1, body_point: {id: 24, mediapipe_index: 23, movenet_index: 11}, line_type: null, part_type: point}, {id: 585, sequence_number: 2, body_point: {id: 28, mediapipe_index: 27, movene
INFO [console] t_index: 15}, line_type: null, part_type: point}]}], commands: [{id: 232, command_side: right, error_message: Не заваливайте ногу в сторону, error_audio: null}, {id: 233, command_side: left, error_message: Не заваливайте ногу в сторону, error_audio: null}], videos: []}, {id: 147, name: Калибровка рабочего угла (угол между прямой таза и ногой), calibration_parameter_type: angle_amplitude, fixation_type: alternate, fixation_order: min_at_first, deviation_type: null, deviation_critical: 20, deviation_uncritical: 10, has_division_by_side: true, is_monitored: true, components: [{id: 217, component_side: right, segment_type: null, parts: [{id: 586, sequence_number: 1, body_point: {id: 27, mediapipe_index: 26, movenet_index: 14}, line_type: null, part_type: point}, {id: 587, sequence_number: 2, body_point: {id: 25, mediapipe_index: 24, movenet_index: 12}, line_type: null, part_type: point}, {id: 588, sequence_number: 3, body_point: null, line_type: vertical, part_type: line}]}, {id: 218, comp
INFO [console] onent_side: left, segment_type: null, parts: [{id: 589, sequence_number: 1, body_point: {id: 26, mediapipe_index: 25, movenet_index: 13}, line_type: null, part_type: point}, {id: 590, sequence_number: 2, body_point: {id: 24, mediapipe_index: 23, movenet_index: 11}, line_type: null, part_type: point}, {id: 591, sequence_number: 3, body_point: null, line_type: vertical, part_type: line}]}], commands: [{id: 234, command_side: right, error_message: Поднимайте ногу на необходимый уровень, error_audio: null}, {id: 235, command_side: left, error_message: Поднимайте ногу на необходимый уровень, error_audio: null}, {id: 236, command_side: right, error_message: Поднимайте ногу на необходимый уровень, error_audio: null}, {id: 237, command_side: left, error_message: Поднимайте ногу на необходимый уровень, error_audio: null}], videos: []}], calibration_videos: []}, {id: 85, sequence_number: 3, is_monitored: true, name: Тренировка икроножных мышц стоя, image: https://rehabilitation.most.team/storage
INFO [console] /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: Следите за положением пяток и стоп. Пятки не должны заваливаться внутрь (это признак неправильной нагрузки). Стопы должны оставаться параллельными на протяжении всего движения, для более наглядного контроля вы можете положить кубик для йоги между стопами Следите, чтобы спина была прямая Не уводите таз вперед/назад Колени держите выпрямленными, general_description: В исходном положении стоя, ноги на ширине таза, руками опереться на спинку стула или стол, выполнить подъём на носки. Следить за тем, чтобы пятки не уходили внутрь, и стопы оставались параллельными. Цель – тренировка мышц голени., steps: [{exercise_id: 85
INFO [console] , 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: Также под контролем медленно опустите пятки на пол, возвра
INFO [console] щаясь в исходное положение}, {exercise_id: 85, sequence_number: 8, step_text: Выполните поднятие на носки необходимое количество раз}], measurement: null}, camera_orientation: vertical, neural_network_type: mediapipe, base_main_command: Поднимайтесь и опускайтесь на носках, left_main_command: null, calibration_parameters: [{id: 107, name: Калибровка угла в колене, calibration_parameter_type: angle, fixation_type: max_value, fixation_order: null, deviation_type: null, deviation_critical: 10, deviation_uncritical: null, has_division_by_side: true, is_monitored: false, components: [{id: 147, component_side: right, segment_type: null, parts: [{id: 394, sequence_number: 1, body_point: {id: 25, mediapipe_index: 24, movenet_index: 12}, line_type: null, part_type: point}, {id: 395, sequence_number: 2, body_point: {id: 27, mediapipe_index: 26, movenet_index: 14}, line_type: null, part_type: point}, {id: 396, sequence_number: 3, body_point: {id: 29, mediapipe_index: 28, movenet_index: 16}, line
INFO [console] _type: null, part_type: point}]}, {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: 158, command_side: right, error_message: Держите рабочее колено выпрямленным, error_audio: null}, {id: 159, command_side: left, error_message: Держите рабочее колено выпрямленным, error_audio: null}], videos: []}, {id: 108, name: Калибровка угла в тазе, calibration_parameter_type: angle, fixation_type: max_value, fixation_order: null, deviation_type: null, deviation_critical: 10, deviation_uncritical: null, has_division_by_side: true, is_monitored: false, components: [{id: 149, component_side: righ
INFO [console] t, segment_type: null, parts: [{id: 400, sequence_number: 1, body_point: {id: 13, mediapipe_index: 12, movenet_index: 6}, line_type: null, part_type: point}, {id: 401, sequence_number: 2, body_point: {id: 25, mediapipe_index: 24, movenet_index: 12}, line_type: null, part_type: point}, {id: 402, sequence_number: 3, body_point: {id: 29, mediapipe_index: 28, movenet_index: 16}, line_type: null, part_type: point}]}, {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: 160, command_side: right, error_message: Держите спину прямой, error_audio: null}, {id: 161, command_side: left, error_mes
INFO [console] sage: Держите спину прямой, error_audio: null}], videos: []}, {id: 109, name: Калибровка амплитуды рабочего угла, calibration_parameter_type: angle_amplitude, fixation_type: alternate, fixation_order: min_at_first, deviation_type: null, deviation_critical: 20, deviation_uncritical: 10, has_division_by_side: true, is_monitored: true, components: [{id: 151, component_side: right, segment_type: null, parts: [{id: 406, sequence_number: 1, body_point: {id: 27, mediapipe_index: 26, movenet_index: 14}, line_type: null, part_type: point}, {id: 407, sequence_number: 2, body_point: {id: 29, mediapipe_index: 28, movenet_index: 16}, line_type: null, part_type: point}, {id: 408, sequence_number: 3, body_point: {id: 33, mediapipe_index: 32, movenet_index: null}, line_type: null, part_type: point}]}, {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, seque
INFO [console] nce_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: 162, command_side: right, error_message: Поднимайтесь на необходимую высоту, error_audio: null}, {id: 163, command_side: left, error_message: Поднимайтесь на необходимую высоту, error_audio: null}, {id: 164, command_side: right, error_message: Поднимайтесь на необходимую высоту, error_audio: null}, {id: 165, command_side: left, error_message: Поднимайтесь на необходимую высоту, error_audio: null}], videos: []}], calibration_videos: []}, {id: 47, sequence_number: 4, is_monitored: true, name: [OLD]Растяжка мышц задней поверхности бедра - В и.п. стоя на одной ноге, image: https://rehabilitation.most.team/storage/exercise/photos/01KQCHWY0J06QHXQ4P2BH5VD3A.png, by_body_side: by_side, execution_order_type: isolated, approaches_count:
INFO [console] 2, execution_count: null, execution_time: 20, instruction: {exercise_name: [OLD]Растяжка мышц задней поверхности бедра - В и.п. стоя на одной ноге, video: https://rehabilitation.most.team/storage/exercise/videos/01KQCHWY0PXRQ1HM420M2W892Q.mov, inventory: Возвышенность (стул и т.п.), warning: Не допускайте разворота/заваливания поднятой ноги, general_description: Стоя на одной ноге, другая нога выпрямлена в колене и расположена на возвышенности (стул, скамейка, ступенька). Корпус наклонён вперёд, руки тянутся к стопе поднятой ноги. Удерживать это положение заданное количество времени. Важно: колено поднятой ноги должно оставаться выпрямленным; стопа и колено поднятой ноги не должны "заваливаться" наружу (отсутствие ротации); наклон выполняется за счёт сгибания в тазобедренном суставе, а не округления спины; дыхание свободное, без задержек; ощущение растяжения должно быть комфортным, без острой боли., steps: [{exercise_id: 47, sequence_number: 1, step_text: Встаньте боком растягиваем
INFO [console] ой ноги к камере}, {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: В точке максимального комфортного натяжения в задней поверхности бедра и под коленями зафиксируйте положение. Удерживайте его заданное время}], measurement: null}, camera_orientation: vertical, neural_network_type: mediapipe, base_main_command: Наклонитесь к правой ноге, left_main_command: null, calibration_parameters: [{id: 64, name: Калибровка угла в колене, calibration_parameter_type: angle, fixation_type: max_value, fixation_order: null, deviation_type: upward, devia
INFO [console] tion_critical: 10, deviation_uncritical: null, has_division_by_side: true, is_monitored: false, components: [{id: 99, component_side: right, segment_type: null, parts: [{id: 256, sequence_number: 1, body_point: {id: 25, mediapipe_index: 24, movenet_index: 12}, line_type: null, part_type: point}, {id: 257, sequence_number: 2, body_point: {id: 27, mediapipe_index: 26, movenet_index: 14}, line_type: null, part_type: point}, {id: 258, sequence_number: 3, body_point: {id: 29, mediapipe_index: 28, movenet_index: 16}, line_type: null, part_type: point}]}, {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}]}]
INFO [console] , commands: [{id: 120, command_side: right, error_message: Держите колено выпрямленным, error_audio: https://rehabilitation.most.team/storage/exercise/audio-commands/01M2SM07RZWGYBA7ARDC81R4E7.mp3}, {id: 121, command_side: left, error_message: Держите колено выпрямленным, error_audio: https://rehabilitation.most.team/storage/exercise/audio-commands/01M2SM07S2QYS3KHV7GTP1RR69.mp3}], videos: []}, {id: 106, name: Калибровка рабочего угла, calibration_parameter_type: angle, fixation_type: min_value, fixation_order: null, deviation_type: upward, deviation_critical: 20, deviation_uncritical: 10, has_division_by_side: true, is_monitored: true, components: [{id: 145, component_side: right, segment_type: null, parts: [{id: 388, sequence_number: 1, body_point: {id: 13, mediapipe_index: 12, movenet_index: 6}, line_type: null, part_type: point}, {id: 389, sequence_number: 2, body_point: {id: 25, mediapipe_index: 24, movenet_index: 12}, line_type: null, part_type: point}, {id: 390, sequence_number:
INFO [console] 3, body_point: {id: 29, mediapipe_index: 28, movenet_index: 16}, line_type: null, part_type: point}]}, {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: 156, command_side: right, error_message: Опускайте корпус ниже, error_audio: https://rehabilitation.most.team/storage/exercise/audio-commands/01M2SM07S3EDRCHQ9E234AQAYF.mp3}, {id: 157, command_side: left, error_message: Опускайте корпус ниже, error_audio: https://rehabilitation.most.team/storage/exercise/audio-commands/01M2SM07S4VM5J29MBFBCZW8X6.mp3}], videos: [{video_url: https://rehabilitation.most.team/storage/exercise/calibrat
INFO [console] ion-videos/01M2SM07S53VNQ828P1AYA22FX.mp4, body_side: right}, {video_url: https://rehabilitation.most.team/storage/exercise/calibration-videos/01M2SM07WARDRBB2TPYHK7SVV6.mp4, body_side: left}]}], calibration_videos: [{video_url: https://rehabilitation.most.team/storage/exercise/calibration-videos/01M2SM080MH53RPSJYR4B42W96.mp4, body_side: right}, {video_url: https://rehabilitation.most.team/storage/exercise/calibration-videos/01M2SM082WPWEQTFRNMSZ8W7XW.mp4, body_side: left}]}]}}
FATAL [zone] Unhandled asynchronous error
type 'Null' is not a subtype of type 'num' in type cast
#0      _$CalibrationParameterDtoFromJson (package:testapp/features/training/models/dto/training/calibration_parameter_dto.g.dart:14)
#1      new CalibrationParameterDto.fromJson (package:testapp/features/training/models/dto/training/calibration_parameter_dto.dart:43)
#2      _$WorkoutDetailedExerciseDtoFromJson.<anonymous closure> (package:testapp/features/training/models/dto/training/workout_detailed_exercise_dto.g.dart:37)
#3      MappedIterable.elementAt (dart:_internal/iterable.dart:403)
#4      ListIterator.moveNext (dart:_internal/iterable.dart:372)
#5      new _GrowableList._ofEfficientLengthIterable (dart:core-patch/growable_array.dart:194)
#6      new _GrowableList.of (dart:core-patch/growable_array.dart:154)
#7      new List.of (dart:core-patch/array_patch.dart:39)
#8      SetBase.toList (dart:collection/set.dart:119)
#9      _$WorkoutDetailedExerciseDtoFromJson (package:testapp/features/training/models/dto/training/workout_detailed_exercise_dto.g.dart:38)
#10     new WorkoutDetailedExerciseDto.fromJson (package:testapp/features/training/models/dto/training/workout_detailed_exercise_dto.dart:46)
#11     _$WorkoutDetailedDtoFromJson.<anonymous closure> (package:testapp/features/training/models/dto/training/workout_detailed_dto.g.dart:16)
#12     MappedIterable.elementAt (dart:_internal/iterable.dart:403)
#13     ListIterator.moveNext (dart:_internal/iterable.dart:372)
#14     new _GrowableList._ofEfficientLengthIterable (dart:core-patch/growable_array.dart:194)
#15     new _GrowableList.of (dart:core-patch/growable_array.dart:154)
#16     new List.of (dart:core-patch/array_patch.dart:39)
#17     SetBase.toList (dart:collection/set.dart:119)
#18     _$WorkoutDetailedDtoFromJson (package:testapp/features/training/models/dto/training/workout_detailed_dto.g.dart:18)
#19     new WorkoutDetailedDto.fromJson (package:testapp/features/training/models/dto/training/workout_detailed_dto.dart:20)
#20     WorkoutRepositoryImpl.getWorkout.<anonymous closure> (package:testapp/features/training/data/repository/workout_repository_impl.dart:72)
#21     _$nullableGenericFromJson (package:testapp/core/data/models/response/response_api.g.dart:38)
#22     _$ResponseApiFromJson (package:testapp/core/data/models/response/response_api.g.dart:14)
#23     new ResponseApi.fromJson (package:testapp/core/data/models/response/response_api.dart:27)
#24     BaseRepository.apiCall (package:testapp/core/data/repository/base_repository.dart:29)
<asynchronous suspension>
#25     WorkoutRepositoryImpl.getWorkout (package:testapp/features/training/data/repository/workout_repository_impl.dart:63)
<asynchronous suspension>
#26     TrainingCoordinatorBloc._onLoadTraining (package:testapp/features/training/presentation/bloc/conducting_training/%20training_coordinator/training_coordinator_bloc.dart:58)
<asynchronous suspension>
#27     Bloc.on.<anonymous closure>.handleEvent (package:bloc/src/bloc.dart:226)
<asynchronous suspension>
INFO [console] [DIO]
$
250 строкUTF-8LIVE