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

rehabapp_2026-09-18_18-35-02

Подключение…
Rehab Logger console · история загружается порциями по 250 записей
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 765|iySyiFOD7zBiilzALht5x6tz49auAWrUHSDDcrOS5d80abe5
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/statistics/range-of-motion
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:35:04 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] *** 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] , has_division_by_side: true, is_monitored: false, components: [{id: 61, component_side: right, segment_type: null, parts: [{id: 150, sequence_number: 1, body_point: {id: 25, mediapipe_index: 24, movenet_index: 12}, line_type: null, part_type: point}, {id: 151, sequence_number: 2, body_point: {id: 27, mediapipe_index: 26, movenet_index: 14}, line_type: null, part_type: point}, {id: 152, sequence_number: 3, body_point: {id: 29, mediapipe_index: 28, movenet_index: 16}, line_type: null, part_type: point}]}, {id: 62, component_side: left, segment_type: null, parts: [{id: 153, sequence_number: 1, body_point: {id: 24, mediapipe_index: 23, movenet_index: 11}, line_type: null, part_type: point}, {id: 154, sequence_number: 2, body_point: {id: 26, mediapipe_index: 25, movenet_index: 13}, line_type: null, part_type: point}, {id: 155, sequence_number: 3, body_point: {id: 28, mediapipe_index: 27, movenet_index: 15}, line_type: null, part_type: point}]}], commands: [{id: 66, command_side: right, err
INFO [console] or_message: Держите колени выпрямленными, error_audio: null}, {id: 67, command_side: left, error_message: Держите колени выпрямленными, error_audio: null}], videos: []}, {id: 46, name: Калибровка угла в голеностопе, calibration_parameter_type: angle, fixation_type: min_value, fixation_order: null, deviation_type: null, deviation_critical: 10, deviation_uncritical: null, has_division_by_side: true, is_monitored: false, components: [{id: 63, component_side: right, segment_type: null, parts: [{id: 156, sequence_number: 1, body_point: {id: 27, mediapipe_index: 26, movenet_index: 14}, line_type: null, part_type: point}, {id: 157, sequence_number: 2, body_point: {id: 29, mediapipe_index: 28, movenet_index: 16}, line_type: null, part_type: point}, {id: 158, sequence_number: 3, body_point: {id: 33, mediapipe_index: 32, movenet_index: null}, line_type: null, part_type: point}]}, {id: 64, component_side: left, segment_type: null, parts: [{id: 159, sequence_number: 1, body_point: {id: 26, mediapi
INFO [console] pe_index: 25, movenet_index: 13}, line_type: null, part_type: point}, {id: 160, sequence_number: 2, body_point: {id: 28, mediapipe_index: 27, movenet_index: 15}, line_type: null, part_type: point}, {id: 161, sequence_number: 3, body_point: {id: 32, mediapipe_index: 31, movenet_index: null}, line_type: null, part_type: point}]}], commands: [{id: 68, command_side: right, error_message: Потяните стопы на себя, error_audio: null}, {id: 69, command_side: left, error_message: Потяните стопы на себя, error_audio: null}], videos: []}], calibration_videos: []}]}}
INFO [console] ndex: 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: Поднимайтес
INFO [console] ь на необходимую высоту, error_audio: null}], videos: []}], calibration_videos: []}, {id: 37, sequence_number: 2, is_monitored: false, name: Изометрическое напряжение квадрицепсов и ягодичных мышц, image: https://rehabilitation.most.team/storage/exercise/photos/01KQ9YTKC29DWK6945XXFY6GXC.png, by_body_side: not_by_side, execution_order_type: null, approaches_count: 2, execution_count: null, execution_time: 20, instruction: {exercise_name: Изометрическое напряжение квадрицепсов и ягодичных мышц, video: https://rehabilitation.most.team/storage/exercise/videos/01KQ9YTKC7WDDRBTWDGN57582Q.mov, inventory: null, warning: null, general_description: И.п. лёжа на спине. Ноги максимально выпрямлены в коленных суставах. Потянуть обе стопы сильно на себя и “втянуть в себя ягодицы”. Почувствовать напряжение в передней части бёдер и ягодиц, удерживать это положение заданное количество времени. Цель – общая активация мышц бёдер, тренировка контроля мышечных усилий., steps: [{exercise_id: 37, sequence_n
INFO [console] umber: 1, step_text: Лягте на спину на твердую ровную поверхность (коврик, пол)}, {exercise_id: 37, sequence_number: 2, step_text: Ноги полностью выпрямлены, колени прижаты к полу}, {exercise_id: 37, sequence_number: 3, step_text: Стопы расположены на ширине плеч или немного уже}, {exercise_id: 37, sequence_number: 4, step_text: Руки лежат вдоль туловища ладонями вниз или на животе для самоконтроля дыхания}, {exercise_id: 37, sequence_number: 5, step_text: Сильно потяните стопы на себя, напрягите ягодицы и мышцы бедер}, {exercise_id: 37, sequence_number: 6, step_text: Удерживайте напряжение всё необходимое время}], measurement: null}, camera_orientation: horizontal, neural_network_type: mediapipe, base_main_command: Напрягайте бедра и ягодицы, left_main_command: null, calibration_parameters: [{id: 45, name: Калибровка угла в колене, calibration_parameter_type: angle, fixation_type: max_value, fixation_order: null, deviation_type: null, deviation_critical: 10, deviation_uncritical: null
INFO [console] , 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:
INFO [console] 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, seque
INFO [console] nce_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_i
INFO [console] ✅ RAW RESPONSE: {success: true, meta: {timestamp: 2026-09-18T12:35:10.046877Z, request_id: bfdbfba9-467c-4c98-9b1e-e1e61c1cd7dd, version: v1}, data: {unit_id: 1086, 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: Выполните поднятие на носки необходимое количество раз}], 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
INFO [console] [DIO] server: openresty
INFO [console] [DIO] Response Text:
INFO [console] [DIO] {"success":true,"meta":{"timestamp":"2026-09-18T12:35:10.046877Z","request_id":"bfdbfba9-467c-4c98-9b1e-e1e61c1cd7dd","version":"v1"},"data":{"unit_id":1086,"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":"Выполните поднятие на носки необходимое количество раз"}],"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":37,"sequence_number":2,"is_monitored":false,"name":"Изометрическое напряжение квадрицепсов и ягодичных мышц","image":"https://rehabilitation.most.team/storage/exercise/photos/01KQ9YTKC29DWK6945XXFY6GXC.png","by_body_side":"not_by_side","execution_order_type":null,"approaches_count":2,"execution_count":null,"execution_time":20,"instruction":{"exercise_name":"Изометрическое напряжение квадрицепсов и ягодичных мышц","video":"https://rehabilitation.most.team/storage/exercise/videos/01KQ9YTKC7WDDRBTWDGN57582Q.mov","inventory":null,"warning":null,"general_description":"И.п. лёжа на спине. Ноги максимально выпрямлены в коленных суставах. Потянуть обе стопы сильно на себя и “втянуть в себя ягодицы”. Почувствовать напряжение в передней части бёдер и ягодиц, удерживать это положение заданное количество времени. Цель – общая активация мышц бёдер, тренировка контроля мышечных усилий.","steps":[{"exercise_id":37,"sequence_number":1,"step_text":"Лягте на спину на твердую ровную поверхность (коврик, пол)"},{"exercise_id":37,"sequence_number":2,"step_text":"Ноги полностью выпрямлены, колени прижаты к полу"},{"exercise_id":37,"sequence_number":3,"step_text":"Стопы расположены на ширине плеч или немного уже"},{"exercise_id":37,"sequence_number":4,"step_text":"Руки лежат вдоль туловища ладонями вниз или на животе для самоконтроля дыхания"},{"exercise_id":37,"sequence_number":5,"step_text":"Сильно потяните стопы на себя, напрягите ягодицы и мышцы бедер"},{"exercise_id":37,"sequence_number":6,"step_text":"Удерживайте напряжение всё необходимое время"}],"measurement":null},"camera_orientation":"horizontal","neural_network_type":"mediapipe","base_main_command":"Напрягайте бедра и ягодицы","left_main_command":null,"calibration_parameters":[{"id":45,"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":61,"component_side":"right","segment_type":null,"parts":[{"id":150,"sequence_number":1,"body_point":{"id":25,"mediapipe_index":24,"movenet_index":12},"line_type":null,"part_type":"point"},{"id":151,"sequence_number":2,"body_point":{"id":27,"mediapipe_index":26,"movenet_index":14},"line_type":null,"part_type":"point"},{"id":152,"sequence_number":3,"body_point":{"id":29,"mediapipe_index":28,"movenet_index":16},"line_type":null,"part_type":"point"}]},{"id":62,"component_side":"left","segment_type":null,"parts":[{"id":153,"sequence_number":1,"body_point":{"id":24,"mediapipe_index":23,"movenet_index":11},"line_type":null,"part_type":"point"},{"id":154,"sequence_number":2,"body_point":{"id":26,"mediapipe_index":25,"movenet_index":13},"line_type":null,"part_type":"point"},{"id":155,"sequence_number":3,"body_point":{"id":28,"mediapipe_index":27,"movenet_index":15},"line_type":null,"part_type":"point"}]}],"commands":[{"id":66,"command_side":"right","error_message":"Держите колени выпрямленными","error_audio":null},{"id":67,"command_side":"left","error_message":"Держите колени выпрямленными","error_audio":null}],"videos":[]},{"id":46,"name":"Калибровка угла в голеностопе","calibration_parameter_type":"angle","fixation_type":"min_value","fixation_order":null,"deviation_type":null,"deviation_critical":10,"deviation_uncritical":null,"has_division_by_side":true,"is_monitored":false,"components":[{"id":63,"component_side":"right","segment_type":null,"parts":[{"id":156,"sequence_number":1,"body_point":{"id":27,"mediapipe_index":26,"movenet_index":14},"line_type":null,"part_type":"point"},{"id":157,"sequence_number":2,"body_point":{"id":29,"mediapipe_index":28,"movenet_index":16},"line_type":null,"part_type":"point"},{"id":158,"sequence_number":3,"body_point":{"id":33,"mediapipe_index":32,"movenet_index":null},"line_type":null,"part_type":"point"}]},{"id":64,"component_side":"left","segment_type":null,"parts":[{"id":159,"sequence_number":1,"body_point":{"id":26,"mediapipe_index":25,"movenet_index":13},"line_type":null,"part_type":"point"},{"id":160,"sequence_number":2,"body_point":{"id":28,"mediapipe_index":27,"movenet_index":15},"line_type":null,"part_type":"point"},{"id":161,"sequence_number":3,"body_point":{"id":32,"mediapipe_index":31,"movenet_index":null},"line_type":null,"part_type":"point"}]}],"commands":[{"id":68,"command_side":"right","error_message":"Потяните стопы на себя","error_audio":null},{"id":69,"command_side":"left","error_message":"Потяните стопы на себя","error_audio":null}],"videos":[]}],"calibration_videos":[]}]}}
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] connection: keep-alive
INFO [console] [DIO] cache-control: no-cache, private
INFO [console] [DIO] date: Fri, 18 Sep 2026 12:35:10 GMT
INFO [console] [DIO] headers:
INFO [console] [DIO] x-served-by: rehabilitation.most.team
INFO [console] [DIO] access-control-allow-credentials: true
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] 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] Authorization: Bearer 765|iySyiFOD7zBiilzALht5x6tz49auAWrUHSDDcrOS5d80abe5
INFO [console] [DIO] data:
INFO [console] [DIO] null
INFO [console] [DIO] receiveDataWhenStatusError: true
INFO [console] [DIO] extra: {}
INFO [console] [DIO] headers:
INFO [console] [DIO] sendTimeout: null
INFO [console] [DIO] receiveTimeout: 0:00:10.000000
INFO [console] [DIO] transformTimeout: null
INFO [console] [DIO]
INFO [console] [DIO] *** Response ***
INFO [console] [DIO] Authorization: Bearer 765|iySyiFOD7zBiilzALht5x6tz49auAWrUHSDDcrOS5d80abe5
INFO [console] [DIO] data:
INFO [console] [DIO] null
INFO [console] [DIO] receiveDataWhenStatusError: true
INFO [console] [DIO] extra: {}
INFO [console] [DIO] headers:
INFO [console] [DIO] sendTimeout: null
INFO [console] [DIO] receiveTimeout: 0:00:10.000000
INFO [console] [DIO] transformTimeout: null
INFO [console] [DIO] followRedirects: true
INFO [console] [DIO] persistentConnection: true
INFO [console] [DIO] connectTimeout: 0:00:10.000000
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]
INFO [console] [DIO] *** Response ***
INFO [console] [DIO] Authorization: Bearer 765|iySyiFOD7zBiilzALht5x6tz49auAWrUHSDDcrOS5d80abe5
INFO [console] [DIO] data:
INFO [console] [DIO] null
INFO [console] [DIO] receiveDataWhenStatusError: true
INFO [console] [DIO] extra: {}
INFO [console] [DIO] headers:
INFO [console] [DIO] sendTimeout: null
INFO [console] [DIO] receiveTimeout: 0:00:10.000000
INFO [console] [DIO] transformTimeout: null
INFO [console] [DIO] followRedirects: true
INFO [console] [DIO] persistentConnection: true
INFO [console] [DIO] connectTimeout: 0:00:10.000000
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] uri: https://rehabilitation.most.team/api/v1/statistics/exercises/list
INFO [console] [DIO] method: GET
INFO [console] [DIO] responseType: ResponseType.json
INFO [console] [DIO]
INFO [console] ✅ RAW RESPONSE: {success: true, meta: {timestamp: 2026-09-18T12:35:04.980558Z, request_id: 995e413d-f982-47ac-ab43-7800e36a5e12, version: v1}, data: {average_score: null, phases: [{phase_sequence_number: 1, phase_name: Защита и восстановление, weeks: [{week_number: 1, rehabilitation_week_number: 1, score: null, change_from_previous: null, change_direction: null, is_control_week: false}, {week_number: 2, rehabilitation_week_number: 2, score: null, change_from_previous: null, change_direction: null, is_control_week: false}, {week_number: 3, rehabilitation_week_number: 3, score: null, change_from_previous: null, change_direction: null, is_control_week: true}]}]}}
INFO [console] [DIO] *** Request ***
INFO [console] [DIO] server: openresty
INFO [console] [DIO] Response Text:
INFO [console] [DIO] {"success":true,"meta":{"timestamp":"2026-09-18T12:35:04.980558Z","request_id":"995e413d-f982-47ac-ab43-7800e36a5e12","version":"v1"},"data":{"average_score":null,"phases":[{"phase_sequence_number":1,"phase_name":"Защита и восстановление","weeks":[{"week_number":1,"rehabilitation_week_number":1,"score":null,"change_from_previous":null,"change_direction":null,"is_control_week":false},{"week_number":2,"rehabilitation_week_number":2,"score":null,"change_from_previous":null,"change_direction":null,"is_control_week":false},{"week_number":3,"rehabilitation_week_number":3,"score":null,"change_from_previous":null,"change_direction":null,"is_control_week":true}]}]}}
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] connection: keep-alive
INFO [console] [DIO] cache-control: no-cache, private
INFO [console] [DIO] date: Fri, 18 Sep 2026 12:35:04 GMT
INFO [console] [DIO] headers:
INFO [console] [DIO] x-served-by: rehabilitation.most.team
INFO [console] [DIO] access-control-allow-credentials: true
INFO [console] [DIO] uri: https://rehabilitation.most.team/api/v1/statistics/pain
INFO [console] [DIO] statusCode: 200
INFO [console] [DIO] statusMessage: OK
INFO [console] [DIO] null
INFO [console] [DIO]
INFO [console] [DIO] *** Response ***
INFO [console] [DIO] headers:
INFO [console] [DIO] Authorization: Bearer 765|iySyiFOD7zBiilzALht5x6tz49auAWrUHSDDcrOS5d80abe5
INFO [console] [DIO] data:
INFO [console] [DIO] transformTimeout: null
INFO [console] [DIO] receiveDataWhenStatusError: true
INFO [console] [DIO] extra: {}
INFO [console] [DIO] connectTimeout: 0:00:10.000000
INFO [console] [DIO] sendTimeout: null
INFO [console] [DIO] receiveTimeout: 0:00:10.000000
INFO [console] [DIO] responseType: ResponseType.json
INFO [console] [DIO] followRedirects: true
INFO [console] [DIO] persistentConnection: true
INFO [console] [DIO] *** Request ***
INFO [console] [DIO] *** Request ***
INFO [console] [DIO] uri: https://rehabilitation.most.team/api/v1/statistics/pain
INFO [console] [DIO] method: GET
INFO [console] [DIO] {"success":true,"meta":{"timestamp":"2026-09-18T12:35:04.820481Z","request_id":"a8c8c656-c445-4d3a-a027-d7792968ec26","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:35:04.820481Z, request_id: a8c8c656-c445-4d3a-a027-d7792968ec26, 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] content-type: application/json
INFO [console] [DIO] server: openresty
INFO [console] [DIO] Response Text:
INFO [console] [DIO] date: Fri, 18 Sep 2026 12:35:04 GMT
INFO [console] [DIO] transfer-encoding: chunked
INFO [console] [DIO] access-control-allow-origin: http://localhost:3000
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] {"success":true,"meta":{"timestamp":"2026-09-18T12:35:04.801142Z","request_id":"06c1c776-05aa-4f6a-9285-379053bad8f3","version":"v1"},"data":{"average_score":null,"average_interpretation":null,"phases":[{"phase_sequence_number":1,"phase_name":"Защита и восстановление","weeks":[{"phase_week_number":1,"week_number":1,"rehabilitation_week_number":1,"score":null,"interpretation":null,"is_control_week":false},{"phase_week_number":2,"week_number":2,"rehabilitation_week_number":2,"score":null,"interpretation":null,"is_control_week":false},{"phase_week_number":3,"week_number":3,"rehabilitation_week_number":3,"score":null,"interpretation":null,"is_control_week":true}]}]}}
INFO [console] [DIO]
INFO [console] ✅ RAW RESPONSE: {success: true, meta: {timestamp: 2026-09-18T12:35:04.801142Z, request_id: 06c1c776-05aa-4f6a-9285-379053bad8f3, version: v1}, data: {average_score: null, average_interpretation: null, phases: [{phase_sequence_number: 1, phase_name: Защита и восстановление, weeks: [{phase_week_number: 1, week_number: 1, rehabilitation_week_number: 1, score: null, interpretation: null, is_control_week: false}, {phase_week_number: 2, week_number: 2, rehabilitation_week_number: 2, score: null, interpretation: null, is_control_week: false}, {phase_week_number: 3, week_number: 3, rehabilitation_week_number: 3, score: null, interpretation: null, is_control_week: true}]}]}}
INFO [console] shrinkOffset: 400.0, progress: 0.6996501749125437
INFO [console] shrinkOffset: 500.0, progress: 0.8745627186406796
INFO [console] shrinkOffset: 700.0, progress: 1.0
INFO [console] [DIO] transformTimeout: null
INFO [console] [DIO] receiveDataWhenStatusError: true
INFO [console] [DIO] extra: {}
INFO [console] [DIO]
INFO [console] ✅ RAW RESPONSE: {success: true, meta: {timestamp: 2026-09-18T12:35:06.411336Z, request_id: 325e2af9-bae3-4228-9136-ed3618b1b532, 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: 100.0, progress: 0.17491254372813592
INFO [console] [DIO] server: openresty
INFO [console] [DIO] Response Text:
INFO [console] [DIO] {"success":true,"meta":{"timestamp":"2026-09-18T12:35:06.411336Z","request_id":"325e2af9-bae3-4228-9136-ed3618b1b532","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] transfer-encoding: chunked
INFO [console] [DIO] access-control-allow-origin: http://localhost:3000
INFO [console] [DIO] content-type: application/json
INFO [console] [DIO] connection: keep-alive
INFO [console] [DIO] cache-control: no-cache, private
INFO [console] [DIO] date: Fri, 18 Sep 2026 12:35:06 GMT
INFO [console] [DIO] headers:
INFO [console] [DIO] x-served-by: rehabilitation.most.team
INFO [console] [DIO] access-control-allow-credentials: true
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] null
INFO [console] [DIO]
INFO [console] [DIO] *** Response ***
INFO [console] [DIO] headers:
INFO [console] [DIO] Authorization: Bearer 765|iySyiFOD7zBiilzALht5x6tz49auAWrUHSDDcrOS5d80abe5
INFO [console] [DIO] data:
INFO [console] [DIO] transformTimeout: null
INFO [console] [DIO] receiveDataWhenStatusError: true
INFO [console] [DIO] extra: {}
INFO [console] [DIO] connectTimeout: 0:00:10.000000
INFO [console] [DIO] sendTimeout: null
INFO [console] [DIO] receiveTimeout: 0:00:10.000000
INFO [console] [DIO] responseType: ResponseType.json
INFO [console] [DIO] followRedirects: true
INFO [console] [DIO] persistentConnection: true
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] ✅ RAW RESPONSE: {success: true, meta: {timestamp: 2026-09-18T12:35:05.081701Z, request_id: 4385f8fa-984e-421e-96d0-dfc674d514a6, version: v1}, data: []}
INFO [console] shrinkOffset: 0.0, progress: 0.0
INFO [console] shrinkOffset: 0.0, progress: 0.0
INFO [console] [DIO] Response Text:
INFO [console] [DIO] {"success":true,"meta":{"timestamp":"2026-09-18T12:35:05.081701Z","request_id":"4385f8fa-984e-421e-96d0-dfc674d514a6","version":"v1"},"data":[]}
INFO [console] [DIO]
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] cache-control: no-cache, private
INFO [console] [DIO] date: Fri, 18 Sep 2026 12:35:05 GMT
INFO [console] [DIO] transfer-encoding: chunked
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] statusCode: 200
INFO [console] [DIO] statusMessage: OK
INFO [console] [DIO] headers:
INFO [console] [DIO]
INFO [console] [DIO] *** Response ***
INFO [console] [DIO] uri: https://rehabilitation.most.team/api/v1/statistics/exercises/list
INFO [console] [DIO] *** Request ***
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: Выполните поднятие на носки необходимое количество раз}], measurement: null}}, {id: 37, sequence_number: 2, name: Изометрическое напряжение квадрицепсов и ягодичных мышц, image: https://rehabilitation.most.team/storage/exercise/photos/01KQ9YTKC29DWK6945XXFY6GXC.png, by_body_side: not_by_side, execution_order_type: null, approaches_count: 2, execution_count: null, execution_time: 20, instruction: {exercise_name: Изометрическое напряжение квадрицепсов и ягодичных мышц, video: https://rehabilitation.most.team/storage/exercise/videos/01KQ9YTKC7WDDRBTWDGN5758
INFO [console] 2Q.mov, inventory: null, warning: null, general_description: И.п. лёжа на спине. Ноги максимально выпрямлены в коленных суставах. Потянуть обе стопы сильно на себя и “втянуть в себя ягодицы”. Почувствовать напряжение в передней части бёдер и ягодиц, удерживать это положение заданное количество времени. Цель – общая активация мышц бёдер, тренировка контроля мышечных усилий., steps: [{exercise_id: 37, sequence_number: 1, step_text: Лягте на спину на твердую ровную поверхность (коврик, пол)}, {exercise_id: 37, sequence_number: 2, step_text: Ноги полностью выпрямлены, колени прижаты к полу}, {exercise_id: 37, sequence_number: 3, step_text: Стопы расположены на ширине плеч или немного уже}, {exercise_id: 37, sequence_number: 4, step_text: Руки лежат вдоль туловища ладонями вниз или на животе для самоконтроля дыхания}, {exercise_id: 37, sequence_number: 5, step_text: Сильно потяните стопы на себя, напрягите ягодицы и мышцы бедер}, {exercise_id: 37, sequence_number: 6, step_text: Удерживайте
INFO [console] напряжение всё необходимое время}], measurement: null}}]}}
INFO [console] [DIO]
INFO [console] ✅ RAW RESPONSE: {success: true, meta: {timestamp: 2026-09-18T12:35:08.522890Z, request_id: e4f3d991-c3f6-4cf5-847e-50f754121fbe, version: v1}, data: {unit_id: 1086, 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] [DIO] server: openresty
INFO [console] [DIO] Response Text:
INFO [console] [DIO] {"success":true,"meta":{"timestamp":"2026-09-18T12:35:08.522890Z","request_id":"e4f3d991-c3f6-4cf5-847e-50f754121fbe","version":"v1"},"data":{"unit_id":1086,"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":"Выполните поднятие на носки необходимое количество раз"}],"measurement":null}},{"id":37,"sequence_number":2,"name":"Изометрическое напряжение квадрицепсов и ягодичных мышц","image":"https://rehabilitation.most.team/storage/exercise/photos/01KQ9YTKC29DWK6945XXFY6GXC.png","by_body_side":"not_by_side","execution_order_type":null,"approaches_count":2,"execution_count":null,"execution_time":20,"instruction":{"exercise_name":"Изометрическое напряжение квадрицепсов и ягодичных мышц","video":"https://rehabilitation.most.team/storage/exercise/videos/01KQ9YTKC7WDDRBTWDGN57582Q.mov","inventory":null,"warning":null,"general_description":"И.п. лёжа на спине. Ноги максимально выпрямлены в коленных суставах. Потянуть обе стопы сильно на себя и “втянуть в себя ягодицы”. Почувствовать напряжение в передней части бёдер и ягодиц, удерживать это положение заданное количество времени. Цель – общая активация мышц бёдер, тренировка контроля мышечных усилий.","steps":[{"exercise_id":37,"sequence_number":1,"step_text":"Лягте на спину на твердую ровную поверхность (коврик, пол)"},{"exercise_id":37,"sequence_number":2,"step_text":"Ноги полностью выпрямлены, колени прижаты к полу"},{"exercise_id":37,"sequence_number":3,"step_text":"Стопы расположены на ширине плеч или немного уже"},{"exercise_id":37,"sequence_number":4,"step_text":"Руки лежат вдоль туловища ладонями вниз или на животе для самоконтроля дыхания"},{"exercise_id":37,"sequence_number":5,"step_text":"Сильно потяните стопы на себя, напрягите ягодицы и мышцы бедер"},{"exercise_id":37,"sequence_number":6,"step_text":"Удерживайте напряжение всё необходимое время"}],"measurement":null}}]}}
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] connection: keep-alive
INFO [console] [DIO] cache-control: no-cache, private
INFO [console] [DIO] date: Fri, 18 Sep 2026 12:35:08 GMT
INFO [console] [DIO] headers:
INFO [console] [DIO] x-served-by: rehabilitation.most.team
INFO [console] [DIO] access-control-allow-credentials: true
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:44)
#1      new CalibrationParameterDto.fromJson (package:testapp/features/training/models/dto/training/calibration_parameter_dto.dart:43:7)
#2      _$WorkoutDetailedExerciseDtoFromJson.<anonymous closure> (package:testapp/features/training/models/dto/training/workout_detailed_exercise_dto.g.dart:37:43)
#3      MappedListIterable.elementAt (dart:_internal/iterable.dart:443:31)
#4      ListIterator.moveNext (dart:_internal/iterable.dart:372:26)
#5      new _GrowableList._ofEfficientLengthIterable (dart:core-patch/growable_array.dart:194:27)
#6      new _GrowableList.of (dart:core-patch/growable_array.dart:154:28)
#7      new List.of (dart:core-patch/array_patch.dart:39:18)
#8      ListIterable.toList (dart:_internal/iterable.dart:224:7)
#9      _$WorkoutDetailedExerciseDtoFromJson (package:testapp/features/training/models/dto/training/workout_detailed_exercise_dto.g.dart:38:8)
#10     new WorkoutDetailedExerciseDto.fromJson (package:testapp/features/training/models/dto/training/workout_detailed_exercise_dto.dart:46:7)
#11     _$WorkoutDetailedDtoFromJson.<anonymous closure> (package:testapp/features/training/models/dto/training/workout_detailed_dto.g.dart:16:44)
#12     MappedListIterable.elementAt (dart:_internal/iterable.dart:443:31)
#13     ListIterator.moveNext (dart:_internal/iterable.dart:372:26)
#14     new _GrowableList._ofEfficientLengthIterable (dart:core-patch/growable_array.dart:194:27)
#15     new _GrowableList.of (dart:core-patch/growable_array.dart:154:28)
#16     new List.of (dart:core-patch/array_patch.dart:39:18)
#17     ListIterable.toList (dart:_internal/iterable.dart:224:7)
#18     _$WorkoutDetailedDtoFromJson (package:testapp/features/training/models/dto/training/workout_detailed_dto.g.dart:18:12)
#19     new WorkoutDetailedDto.fromJson (package:testapp/features/training/models/dto/training/workout_detailed_dto.dart:20:7)
#20     WorkoutRepositoryImpl.getWorkout.<anonymous closure> (package:testapp/features/training/data/repository/workout_repository_impl.dart:75:30)
#21     _$nullableGenericFromJson (package:testapp/core/data/models/response/response_api.g.dart:38:37)
#22     _$ResponseApiFromJson (package:testapp/core/data/models/response/response_api.g.dart:14:9)
#23     new ResponseApi.fromJson (package:testapp/core/data/models/response/response_api.dart:27:8)
#24     BaseRepository.apiCall (package:testapp/core/data/repository/base_repository.dart:29:24)
<asynchronous suspension>
#25     WorkoutRepositoryImpl.getWorkout (package:testapp/features/training/data/repository/workout_repository_impl.dart:66:22)
<asynchronous suspension>
#26     TrainingCoordinatorBloc._onLoadTraining (package:testapp/features/training/presentation/bloc/conducting_training/%20training_coordinator/training_coordinator_bloc.dart:77:31)
<asynchronous suspension>
#27     Bloc.on.<anonymous closure>.handleEvent (package:bloc/src/bloc.dart:226:13)
<asynchronous suspension>
INFO [console] [DIO]
$
250 строкUTF-8LIVE