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

rehabapp_2026-09-15_15-31-48

Подключение…
Rehab Logger console · история загружается порциями по 250 записей
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] transfer-encoding: chunked
INFO [console] [DIO] access-control-allow-origin: http://localhost:3000
INFO [console] [DIO] content-type: application/json
INFO [console] [DIO]
INFO [console] ✅ RAW RESPONSE: {success: true, meta: {timestamp: 2026-09-15T12:35:16.335243Z, request_id: 26fae67c-7cbb-4ec5-8048-d90244f5c68b, 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: true}]}]}}
INFO [console] [DIO] *** Request ***
INFO [console] [DIO] server: openresty
INFO [console] [DIO] Response Text:
INFO [console] [DIO] {"success":true,"meta":{"timestamp":"2026-09-15T12:35:16.335243Z","request_id":"26fae67c-7cbb-4ec5-8048-d90244f5c68b","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":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: Tue, 15 Sep 2026 12:35:16 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] connection: keep-alive
INFO [console] [DIO] cache-control: no-cache, private
INFO [console] [DIO] date: Tue, 15 Sep 2026 12:35:15 GMT
INFO [console] [DIO]
INFO [console] ✅ RAW RESPONSE: {success: true, meta: {timestamp: 2026-09-15T12:35:16.239581Z, request_id: 596b1aee-53ce-4fed-a2f2-f691111444f7, version: v1}, data: {rehabilitation_day_id: null, phase_id: null, diagnosis_rehab: , start_rehab: null, end_rehab: null, name_rehab_phase: , status: [none], recommendations_count: 0, date: null, training: []}}
INFO [console] [DIO] *** Response ***
INFO [console] [DIO] server: openresty
INFO [console] [DIO] Response Text:
INFO [console] [DIO] {"success":true,"meta":{"timestamp":"2026-09-15T12:35:16.239581Z","request_id":"596b1aee-53ce-4fed-a2f2-f691111444f7","version":"v1"},"data":{"rehabilitation_day_id":null,"phase_id":null,"diagnosis_rehab":"","start_rehab":null,"end_rehab":null,"name_rehab_phase":"","status":["none"],"recommendations_count":0,"date":null,"training":[]}}
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: Tue, 15 Sep 2026 12:35:16 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-15
INFO [console] [DIO] statusCode: 200
INFO [console] [DIO] statusMessage: OK
INFO [console] [DIO] *** Request ***
INFO [console] [DIO]
INFO [console] [DIO] *** Response ***
INFO [console] [DIO]
INFO [console] [DIO] *** Response ***
INFO [console] [DIO] Authorization: Bearer 747|tvBiYT1U8S3gjqqVgtHdobRvpJ0vhqgVXiymMaZr2be149b2
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/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-15T12:35:23.137913Z, request_id: b50577d9-a10e-41b4-b231-2ae125472e2a, 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: true}]}]}}
INFO [console] [DIO] *** Request ***
INFO [console] [DIO] server: openresty
INFO [console] [DIO] Response Text:
INFO [console] [DIO] {"success":true,"meta":{"timestamp":"2026-09-15T12:35:23.137913Z","request_id":"b50577d9-a10e-41b4-b231-2ae125472e2a","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":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: Tue, 15 Sep 2026 12:35:23 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] Authorization: Bearer 747|tvBiYT1U8S3gjqqVgtHdobRvpJ0vhqgVXiymMaZr2be149b2
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 747|tvBiYT1U8S3gjqqVgtHdobRvpJ0vhqgVXiymMaZr2be149b2
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/statistics/pain
INFO [console] [DIO] method: GET
INFO [console] [DIO] responseType: ResponseType.json
INFO [console] [DIO]
INFO [console] ✅ RAW RESPONSE: {success: true, meta: {timestamp: 2026-09-15T12:35:23.034151Z, request_id: 5d6532c0-f5d2-416c-a3ba-d4d36ba5f67f, 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: true}]}]}}
INFO [console] [DIO] *** Request ***
INFO [console] [DIO] server: openresty
INFO [console] [DIO] Response Text:
INFO [console] [DIO] {"success":true,"meta":{"timestamp":"2026-09-15T12:35:23.034151Z","request_id":"5d6532c0-f5d2-416c-a3ba-d4d36ba5f67f","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":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: Tue, 15 Sep 2026 12:35:23 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/range-of-motion
INFO [console] [DIO] statusCode: 200
INFO [console] [DIO] statusMessage: OK
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/detailed
INFO [console] [DIO] method: GET
INFO [console] [DIO] responseType: ResponseType.json
INFO [console] [DIO]
INFO [console] [DIO] *** Response ***
INFO [console] [DIO] *** Request ***
INFO [console] [DIO]
INFO [console] [DIO] *** Response ***
INFO [console] [DIO] uri: https://rehabilitation.most.team/api/v1/statistics/week/1
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: Tue, 15 Sep 2026 12:35:52 GMT
INFO [console] [DIO] transfer-encoding: chunked
INFO [console] [DIO] access-control-allow-origin: http://localhost:3000
INFO [console] [DIO] content-type: application/json
INFO [console] [DIO] server: openresty
INFO [console] [DIO] Response Text:
INFO [console] [DIO] {"success":true,"meta":{"timestamp":"2026-09-15T12:35:52.808874Z","request_id":"cde1df39-132d-4198-a5ee-aa6992ff12b9","version":"v1"},"data":{"rehabilitation_name":"Проверочка","rehabilitation_week_number":1,"title":"1 неделя","is_control_week":false,"average_score":null,"average_interpretation":null,"days":[{"rehabilitation_day_id":2600,"day_sequence_number":5,"date":"2026-08-07","score":null,"interpretation":null,"is_control_day":false},{"rehabilitation_day_id":2599,"day_sequence_number":3,"date":"2026-08-05","score":null,"interpretation":null,"is_control_day":false},{"rehabilitation_day_id":2598,"day_sequence_number":1,"date":"2026-08-03","score":null,"interpretation":null,"is_control_day":false}]}}
INFO [console] [DIO] Authorization: Bearer 747|tvBiYT1U8S3gjqqVgtHdobRvpJ0vhqgVXiymMaZr2be149b2
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/statistics/week/1
INFO [console] [DIO] method: GET
INFO [console] [DIO] responseType: ResponseType.json
INFO [console] [DIO]
INFO [console] ✅ RAW RESPONSE: {success: true, meta: {timestamp: 2026-09-15T12:35:52.808874Z, request_id: cde1df39-132d-4198-a5ee-aa6992ff12b9, version: v1}, data: {rehabilitation_name: Проверочка, rehabilitation_week_number: 1, title: 1 неделя, is_control_week: false, average_score: null, average_interpretation: null, days: [{rehabilitation_day_id: 2600, day_sequence_number: 5, date: 2026-08-07, score: null, interpretation: null, is_control_day: false}, {rehabilitation_day_id: 2599, day_sequence_number: 3, date: 2026-08-05, score: null, interpretation: null, is_control_day: false}, {rehabilitation_day_id: 2598, day_sequence_number: 1, date: 2026-08-03, score: null, interpretation: null, is_control_day: false}]}}
INFO [console] [DIO] *** Request ***
INFO [console] [DIO] uri: https://rehabilitation.most.team/api/v1/statistics/days/2600
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 747|tvBiYT1U8S3gjqqVgtHdobRvpJ0vhqgVXiymMaZr2be149b2
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/days/2600
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: Tue, 15 Sep 2026 12:36:10 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-15T12:36:10.495026Z","request_id":"3b7a5fb2-7b99-4ebd-9a58-1e17d147621b","version":"v1"},"data":{"rehabilitation_day_id":2600,"day_sequence_number":5,"date":"2026-08-07","score":null,"interpretation":null,"is_control_day":false,"questionnaire":{"questionnaire_result_id":null,"count_questions":1},"workout":{"unit_id":937,"workout_id":null,"status":"not_done","score":null,"interpretation":null,"workout_duration_start":10,"workout_duration_end":20,"exercises_count":1,"exercises":[{"id":85,"exercise_result_id":null,"sequence_number":1,"name":"Тренировка икроножных мышц стоя","image":"https://rehabilitation.most.team/storage/exercise/photos/01KSM578DSDH215A8W6P26RXEH.png","completion_status":"not_completed","score":null,"interpretation":null,"is_monitored":false,"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":"Выполните поднятие на носки необходимое количество раз"}]}}]}}}
INFO [console] [DIO]
INFO [console] ✅ RAW RESPONSE: {success: true, meta: {timestamp: 2026-09-15T12:36:10.495026Z, request_id: 3b7a5fb2-7b99-4ebd-9a58-1e17d147621b, version: v1}, data: {rehabilitation_day_id: 2600, day_sequence_number: 5, date: 2026-08-07, score: null, interpretation: null, is_control_day: false, questionnaire: {questionnaire_result_id: null, count_questions: 1}, workout: {unit_id: 937, workout_id: null, status: not_done, score: null, interpretation: null, workout_duration_start: 10, workout_duration_end: 20, exercises_count: 1, exercises: [{id: 85, exercise_result_id: null, sequence_number: 1, name: Тренировка икроножных мышц стоя, image: https://rehabilitation.most.team/storage/exercise/photos/01KSM578DSDH215A8W6P26RXEH.png, completion_status: not_completed, score: null, interpretation: null, is_monitored: false, instruction: {exercise_name: Тренировка икроножных мышц стоя, video: https://rehabilitation.most.team/storage/exercise/videos/01KRJHJR20X1FNE739BG0QDYN4.mov, inventory: Опора (стул, подоконник
INFO [console] , стена), warning: Следите за положением пяток и стоп. Пятки не должны заваливаться внутрь (это признак неправильной нагрузки). Стопы должны оставаться параллельными на протяжении всего движения, для более наглядного контроля вы можете положить кубик для йоги между стопами Следите, чтобы спина была прямая Не уводите таз вперед/назад Колени держите выпрямленными, general_description: В исходном положении стоя, ноги на ширине таза, руками опереться на спинку стула или стол, выполнить подъём на носки. Следить за тем, чтобы пятки не уходили внутрь, и стопы оставались параллельными. Цель – тренировка мышц голени., steps: [{exercise_id: 85, sequence_number: 1, step_text: Встаньте прямо, лицом к устойчивой опоре (спинка стула, стол, подоконник, стена). Вы должны находиться боком оперированной ноги к камере}, {exercise_id: 85, sequence_number: 2, step_text: Поставьте ноги на ширине таза (примерно на расстоянии 10-15 см друг от друга). Стопы должны быть параллельны друг другу}, {exercise_id: 85
INFO [console] , 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: Выполните поднятие на носки необходимое количество раз}]}}]}}}
INFO [console] [DIO] *** Request ***
INFO [console] [DIO] uri: https://rehabilitation.most.team/api/v1/statistics/days/2599
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] headers:
INFO [console] [DIO] Authorization: Bearer 747|tvBiYT1U8S3gjqqVgtHdobRvpJ0vhqgVXiymMaZr2be149b2
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/days/2599
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: Tue, 15 Sep 2026 12:36:16 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-15T12:36:16.541796Z","request_id":"8eeb7d7d-58a7-4b29-8931-4b78f9cc6f89","version":"v1"},"data":{"rehabilitation_day_id":2599,"day_sequence_number":3,"date":"2026-08-05","score":null,"interpretation":"excellent","is_control_day":false,"questionnaire":{"questionnaire_result_id":null,"count_questions":1},"workout":{"unit_id":937,"workout_id":109,"status":"completed","score":null,"interpretation":"excellent","workout_duration_start":10,"workout_duration_end":20,"exercises_count":1,"exercises":[{"id":85,"exercise_result_id":200,"sequence_number":1,"name":"Тренировка икроножных мышц стоя","image":"https://rehabilitation.most.team/storage/exercise/photos/01KSM578DSDH215A8W6P26RXEH.png","completion_status":"completed","score":88,"interpretation":"excellent","is_monitored":true,"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":"Выполните поднятие на носки необходимое количество раз"}]}}]}}}
INFO [console] [DIO]
INFO [console] ✅ RAW RESPONSE: {success: true, meta: {timestamp: 2026-09-15T12:36:16.541796Z, request_id: 8eeb7d7d-58a7-4b29-8931-4b78f9cc6f89, version: v1}, data: {rehabilitation_day_id: 2599, day_sequence_number: 3, date: 2026-08-05, score: null, interpretation: excellent, is_control_day: false, questionnaire: {questionnaire_result_id: null, count_questions: 1}, workout: {unit_id: 937, workout_id: 109, status: completed, score: null, interpretation: excellent, workout_duration_start: 10, workout_duration_end: 20, exercises_count: 1, exercises: [{id: 85, exercise_result_id: 200, sequence_number: 1, name: Тренировка икроножных мышц стоя, image: https://rehabilitation.most.team/storage/exercise/photos/01KSM578DSDH215A8W6P26RXEH.png, completion_status: completed, score: 88, interpretation: excellent, is_monitored: true, instruction: {exercise_name: Тренировка икроножных мышц стоя, video: https://rehabilitation.most.team/storage/exercise/videos/01KRJHJR20X1FNE739BG0QDYN4.mov, inventory: Опора (стул, под
INFO [console] оконник, стена), warning: Следите за положением пяток и стоп. Пятки не должны заваливаться внутрь (это признак неправильной нагрузки). Стопы должны оставаться параллельными на протяжении всего движения, для более наглядного контроля вы можете положить кубик для йоги между стопами Следите, чтобы спина была прямая Не уводите таз вперед/назад Колени держите выпрямленными, general_description: В исходном положении стоя, ноги на ширине таза, руками опереться на спинку стула или стол, выполнить подъём на носки. Следить за тем, чтобы пятки не уходили внутрь, и стопы оставались параллельными. Цель – тренировка мышц голени., steps: [{exercise_id: 85, sequence_number: 1, step_text: Встаньте прямо, лицом к устойчивой опоре (спинка стула, стол, подоконник, стена). Вы должны находиться боком оперированной ноги к камере}, {exercise_id: 85, sequence_number: 2, step_text: Поставьте ноги на ширине таза (примерно на расстоянии 10-15 см друг от друга). Стопы должны быть параллельны друг другу}, {exercise
INFO [console] _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: Выполните поднятие на носки необходимое количество раз}]}}]}}}
ERROR [widgets library] Null check operator used on a null value
Null check operator used on a null value
#0      TotalResultWorkout.build (package:testapp/features/training/presentation/widgets/total_result_workout.dart:25:21)
#1      StatelessElement.build (package:flutter/src/widgets/framework.dart:5889:49)
#2      ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5817:15)
#3      Element.rebuild (package:flutter/src/widgets/framework.dart:5529:7)
#4      ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:5799:5)
#5      ComponentElement.mount (package:flutter/src/widgets/framework.dart:5793:5)
#6      Element.inflateWidget (package:flutter/src/widgets/framework.dart:4587:20)
#7      MultiChildRenderObjectElement.inflateWidget (package:flutter/src/widgets/framework.dart:7264:36)
#8      MultiChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:7279:32)
#9      Element.inflateWidget (package:flutter/src/widgets/framework.dart:4587:20)
#10     Element.updateChild (package:flutter/src/widgets/framework.dart:4059:18)
#11     SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:7115:14)
#12     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4587:20)
#13     Element.updateChild (package:flutter/src/widgets/framework.dart:4059:18)
#14     SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:7115:14)
#15     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4587:20)
#16     Element.updateChild (package:flutter/src/widgets/framework.dart:4059:18)
#17     SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:7115:14)
#18     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4587:20)
#19     Element.updateChild (package:flutter/src/widgets/framework.dart:4059:18)
#20     SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:7115:14)
#21     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4587:20)
#22     Element.updateChild (package:flutter/src/widgets/framework.dart:4059:18)
#23     SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:7115:14)
#24     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4587:20)
#25     Element.updateChild (package:flutter/src/widgets/framework.dart:4059:18)
#26     SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:7115:14)
#27     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4587:20)
#28     Element.updateChild (package:flutter/src/widgets/framework.dart:4059:18)
#29     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5841:16)
#30     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5982:11)
#31     Element.rebuild (package:flutter/src/widgets/framework.dart:5529:7)
#32     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:5799:5)
#33     StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:5973:11)
#34     ComponentElement.mount (package:flutter/src/widgets/framework.dart:5793:5)
#35     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4587:20)
#36     Element.updateChild (package:flutter/src/widgets/framework.dart:4059:18)
#37     SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:7115:14)
#38     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4587:20)
#39     Element.updateChild (package:flutter/src/widgets/framework.dart:4059:18)
#40     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5841:16)
#41     Element.rebuild (package:flutter/src/widgets/framework.dart:5529:7)
#42     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:5799:5)
#43     ComponentElement.mount (package:flutter/src/widgets/framework.dart:5793:5)
#44     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4587:20)
#45     Element.updateChild (package:flutter/src/widgets/framework.dart:4059:18)
#46     SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:7115:14)
#47     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4587:20)
#48     Element.updateChild (package:flutter/src/widgets/framework.dart:4059:18)
#49     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5841:16)
#50     Element.rebuild (package:flutter/src/widgets/framework.dart:5529:7)
#51     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:5799:5)
#52     ComponentElement.mount (package:flutter/src/widgets/framework.dart:5793:5)
#53     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4587:20)
#54     Element.updateChild (package:flutter/src/widgets/framework.dart:4059:18)
#55     SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:7115:14)
#56     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4587:20)
#57     Element.updateChild (package:flutter/src/widgets/framework.dart:4059:18)
#58     SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:7115:14)
#59     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4587:20)
#60     Element.updateChild (package:flutter/src/widgets/framework.dart:4059:18)
#61     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5841:16)
#62     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5982:11)
#63     Element.rebuild (package:flutter/src/widgets/framework.dart:5529:7)
#64     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:5799:5)
#65     StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:5973:11)
#66     ComponentElement.mount (package:flutter/src/widgets/framework.dart:5793:5)
#67     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4587:20)
#68     Element.updateChild (package:flutter/src/widgets/framework.dart:4059:18)
#69     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5841:16)
#70     Element.rebuild (package:flutter/src/widgets/framework.dart:5529:7)
#71     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:5799:5)
#72     ComponentElement.mount (package:flutter/src/widgets/framework.dart:5793:5)
#73     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4587:20)
#74     Element.updateChild (package:flutter/src/widgets/framework.dart:4059:18)
#75     SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:7115:14)
#76     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4587:20)
#77     Element.updateChild (package:flutter/src/widgets/framework.dart:4059:18)
#78     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5841:16)
#79     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5982:11)
#80     Element.rebuild (package:flutter/src/widgets/framework.dart:5529:7)
#81     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:5799:5)
#82     StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:5973:11)
#83     ComponentElement.mount (package:flutter/src/widgets/framework.dart:5793:5)
#84     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4587:20)
#85     Element.updateChild (package:flutter/src/widgets/framework.dart:4059:18)
#86     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5841:16)
#87     Element.rebuild (package:flutter/src/widgets/framework.dart:5529:7)
#88     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:5799:5)
#89     ComponentElement.mount (package:flutter/src/widgets/framework.dart:5793:5)
#90     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4587:20)
#91     Element.updateChild (package:flutter/src/widgets/framework.dart:4059:18)
#92     ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5841:16)
#93     StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5982:11)
#94     Element.rebuild (package:flutter/src/widgets/framework.dart:5529:7)
#95     ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:5799:5)
#96     StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:5973:11)
#97     ComponentElement.mount (package:flutter/src/widgets/framework.dart:5793:5)
#98     Element.inflateWidget (package:flutter/src/widgets/framework.dart:4587:20)
#99     Element.updateChild (package:flutter/src/widgets/framework.dart:4059:18)
#100    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5841:16)
#101    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5982:11)
#102    Element.rebuild (package:flutter/src/widgets/framework.dart:5529:7)
#103    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:5799:5)
#104    StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:5973:11)
#105    ComponentElement.mount (package:flutter/src/widgets/framework.dart:5793:5)
#106    Element.inflateWidget (package:flutter/src/widgets/framework.dart:4587:20)
#107    Element.updateChild (package:flutter/src/widgets/framework.dart:4059:18)
#108    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5841:16)
#109    Element.rebuild (package:flutter/src/widgets/framework.dart:5529:7)
#110    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:5799:5)
#111    ComponentElement.mount (package:flutter/src/widgets/framework.dart:5793:5)
#112    Element.inflateWidget (package:flutter/src/widgets/framework.dart:4587:20)
#113    Element.updateChild (package:flutter/src/widgets/framework.dart:4059:18)
#114    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5841:16)
#115    Element.rebuild (package:flutter/src/widgets/framework.dart:5529:7)
#116    ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:5799:5)
#117    ComponentElement.mount (package:flutter/src/widgets/framework.dart:5793:5)
#118    Element.inflateWidget (package:flutter/src/widgets/framework.dart:4587:20)
#119    Element.updateChild (package:flutter/src/widgets/framework.dart:4053:20)
#120    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5841:16)
#121    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5982:11)
#122    Element.rebuild (package:flutter/src/widgets/framework.dart:5529:7)
#123    StatefulElement.update (package:flutter/src/widgets/framework.dart:6007:5)
#124    Element.updateChild (package:flutter/src/widgets/framework.dart:4037:15)
#125    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:5841:16)
#126    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5982:11)
#127    Element.rebuild (package:flutter/src/widgets/framework.dart:5529:7)
#128    BuildScope._tryRebuild (package:flutter/src/widgets/framework.dart:2750:15)
#129    BuildScope._flushDirtyElements (package:flutter/src/widgets/framework.dart:2807:11)
#130    BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:3111:18)
#131    WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:1571:21)
#132    RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:509:5)
#133    SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1430:15)
#134    SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1345:9)
#135    SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:1198:5)
#136    _rootRun (dart:async/zone_root.dart:35:13)
#137    _CustomZone.run (dart:async/zone.dart:726:19)
#138    _CustomZone.runGuarded (dart:async/zone.dart:625:7)
#139    _invoke (dart:ui/hooks.dart:425:10)
#140    PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:447:5)
#141    _drawFrame (dart:ui/hooks.dart:395:31)
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: {}
$
250 строкUTF-8LIVE