fix(mera/ui): карточка прогресса перестала выдумывать стадии (#3081, вариант A) #3101

Merged
bot-backend merged 1 commit from fix/3081-honest-progress into main 2026-08-26 08:01:57 +00:00
Collaborator

Вариант A из #3081 — честная индикация, только фронт.

Почему A, а не B

B (реальный статус с бэкенда) требует async-запуск + task_id + эндпоинт статуса, а /estimate только что сознательно оставлен синхронным с семафором одновременности (#3082) и одним воркером до замера (#3083). Городить асинхронную инфраструктуру ради прогресс-бара — против обоих решений. A — прямое продолжение волны display-honesty МЕРЫ.

Что изменилось

Было (pending) Стало (pending)
все 5 строк «сбор...» с полосками 60% нейтральные строки «ожидает ответ», без полосок
счётчик «0 / 5 источников» (читался как отказ) «опрашиваем…»
общий процент Math.min(95, done/total*100+10) честная неопределённая анимация полосы (CSS)
«Идёт параллельный запрос — Celery group, timeout 30 сек.» «Считаем оценку — обычно занимает несколько секунд…» (тон legacy-заглушки)

После ответа — прежнее поведение: раскраска по estimate.sources_used, «N лотов» / «нет данных», 100%.

Заодно удалены недостижимые ветки error/loading у строк («timeout — нет ответа» рисовался бы как факт по источнику, но их ничто и не выставляло — мёртвый код, вводящий в заблуждение при чтении).

Preview-страница /ui-preview/estimate теперь рендерит ОБА состояния карточки — pending и done.

Проверки

  • next lint чисто, tsc --noEmit rc=0
  • скриншот на dev (оба состояния): pending — нейтральный ростер + бегущая полоса, done — 3/5, лоты, «нет данных»

🤖 Generated with Claude Code

Вариант A из #3081 — честная индикация, только фронт. ## Почему A, а не B B (реальный статус с бэкенда) требует async-запуск + task_id + эндпоинт статуса, а `/estimate` только что сознательно оставлен синхронным с семафором одновременности (#3082) и одним воркером до замера (#3083). Городить асинхронную инфраструктуру ради прогресс-бара — против обоих решений. A — прямое продолжение волны display-honesty МЕРЫ. ## Что изменилось | Было (pending) | Стало (pending) | |---|---| | все 5 строк «сбор...» с полосками 60% | нейтральные строки «ожидает ответ», без полосок | | счётчик «0 / 5 источников» (читался как отказ) | «опрашиваем…» | | общий процент `Math.min(95, done/total*100+10)` | честная неопределённая анимация полосы (CSS) | | «Идёт параллельный запрос — Celery group, timeout 30 сек.» | «Считаем оценку — обычно занимает несколько секунд…» (тон legacy-заглушки) | После ответа — прежнее поведение: раскраска по `estimate.sources_used`, «N лотов» / «нет данных», 100%. Заодно удалены недостижимые ветки `error`/`loading` у строк («timeout — нет ответа» рисовался бы как факт по источнику, но их ничто и не выставляло — мёртвый код, вводящий в заблуждение при чтении). Preview-страница `/ui-preview/estimate` теперь рендерит ОБА состояния карточки — pending и done. ## Проверки - `next lint` чисто, `tsc --noEmit` rc=0 - скриншот на dev (оба состояния): pending — нейтральный ростер + бегущая полоса, done — 3/5, лоты, «нет данных» 🤖 Generated with [Claude Code](https://claude.com/claude-code)
bot-backend added 1 commit 2026-08-26 07:55:00 +00:00
fix(mera/ui): карточка прогресса перестала выдумывать стадии (#3081, вариант A)
All checks were successful
CI / changes (pull_request) Successful in 11s
CI / frontend-tests (pull_request) Has been skipped
CI Trade-In / changes (pull_request) Successful in 9s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI Trade-In / browser-tests (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Successful in 59s
a4604dd9db
Запрос оценки один и блокирующий (POST /estimate, mutation.isPending) —
промежуточных событий по источникам не существует, а карточка рисовала
пофайловые «сбор...» с полосками 60%, счётчик 0/5 и подпись про Celery
group с таймаутом. Пользователь не мог отличить «думает» от «завис», а
серверная механика текла в UI-текст.

Вариант A из задачи (только фронт):
- на pending строки нейтральны («ожидает ответ»), раскраска — только по
  факту estimate.sources_used после ответа;
- общая полоса на pending — честная неопределённая анимация вместо
  выдуманного процента (Math.min(95, ...) убран);
- счётчик N/M на pending заменён на «опрашиваем…» (0/5 при идущей работе
  читался как отказ);
- подпись без Celery/таймаута, тон legacy-заглушки «Считаем оценку…»;
- недостижимые ветки error/loading у строк удалены (их ничто не выставляло).

Вариант B (реальный статус с бэкенда) отклонён сознательно: /estimate
остаётся синхронным по решениям #3082/#3083, городить async+task_id ради
прогресс-бара — против них.

Preview-страница /ui-preview/estimate теперь рендерит ОБА состояния
карточки. Проверено скриншотом на dev (pending + done).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
bot-backend merged commit 2116c3774e into main 2026-08-26 08:01:57 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#3101
No description provided.