WEB-258 · Дефект · sources · web
Гость: добавление текстового источника отказывается МОЛЧА (ошибка есть, в UI её не видно)
Закрыт
P1 · важно
ведёт: owner
Суть
Найдено при живой приёмке волны CE (06.08, backup-opus, гостевая сессия nb.wool2.online). Диалог «Джерело» → «Створити» → вкладка вставки текста → заполнены заголовок и текст → кнопка «Добавить текст» НЕ ДЕЛАЕТ НИЧЕГО: ни одного сетевого запроса (проверено сетевой панелью), ни сообщения об ошибке, ни тоста, ни статуса, диалог остаётся открытым. Повтор клика — то же самое. Закрытие диалога показывает «У вас є незбережений текст» — то есть источник действительно НЕ создан. Кнопка «Зберегти» в этом диалоге предупреждения — тоже ничего не делает и возвращает в форму. Код: handlePasteSubmit (src/components/modals/AddSourceModal.tsx:441) — сперва guardSourceLimit() (он при отказе показывает тост и открывает pricing, чего НЕ произошло), затем processDocument(); в catch выставляется setStatus(...), но в этой подвкладке статус, судя по всему, не рендерится — отсюда полная тишина. НАРУШЕНИЕ ПРАВИЛА 10: любой отказ обязан называть причину в UI. ВАЖНО проверить, воспроизводится ли под ЗАЛОГИНЕННЫМ пользователем (я был гостем) — если да, это P0 на главном сценарии продукта; если только у гостя, всё равно нужен явный отказ с причиной, а не тишина.
Как воспроизвести
nb.wool2.online (гость) → Додати джерело → Створити → Вставить текст → заполнить название и текст → «Добавить текст»
Чем закрывается (приёмка)
Клик либо создаёт источник, либо показывает причину отказа в UI; сетевой запрос виден; тишина недопустима
Доказательства
Сетевая панель: ни одного POST; консоль приложения пуста; диалог «незбережений текст» после закрытия
Замечен в сборке
v4-ea42c58
Починено в
v4-f891fac
Лента
2026-08-06T08:21:00.938Z · backup-opusУТОЧНЕНО ПОСЛЕ ПРОВЕРКИ OWNER-А: под залогиненным аккаунтом добавление работает (скрин owner-а 09:19). Значит дефект ГОСТЕВОЙ, понижаю P0→P1. КОРЕНЬ НАЙДЕН ТОЧНО: processDocument (src/app/actions.ts:1436) для сессии без пользователя возвращает {success:false, error:"processDocument requires an authenticated user"}; handlePasteSubmit (AddSourceModal.tsx:441) кладёт эту ошибку в setStatus, но в подвкладке вставки текста статус НЕ РЕНДЕРИТСЯ — отсюда полная тишина при живом отказе. ПОПРАВКА К МОЕМУ ЖЕ ОПИСАНИЮ: утверждение «ни одного сетевого запроса» было неверным — я фильтровал сеть по /api/, а серверное действие идёт POST-ом на саму страницу; запрос был, отказ пришёл, потерялся он в UI. ЧИНИТЬ: (1) показывать причину отказа в этой подвкладке (статус/тост) — правило 10; (2) для гостя дать осмысленный призыв («увійдіть, щоб додати джерело») вместо технической строки; (3) проверить остальные подвкладки того же диалога (URL, медиа, голос, камера) — рендерится ли статус там; (4) тест: отказ processDocument → текст причины присутствует в DOM. 2026-08-06T11:23:11.118Z · backup-opusСдано воркером o258, едет волной CJ. Я просил проверить ВСЕ подвкладки — он нашёл ДЕСЯТЬ путей, а не один. Корень общий: гейт отказа выставлял setStatus, а кадр с этим статусом не рендерился ни разу, поэтому молчали ВСЕ пути, а не только вставка текста. Инвентарь: (1) Створити→Текст — тишина; (2,3,4) URL-бар — отказ загрузки, пустой/битый контент, отказ processDocument + catch — тишина; (5) Медіа, поле URL по Enter — тот же гейт; (6) Голос, handleTranscriptReceived и «Finish & save» — тишина; (7) Камера/скан, сохранение — НЕ тишина, но бесполезно: toast.error("Error") голым словом, гость получал 401 и не понимал ничего; (7б) классификация скана — то же, причём сервер присылал свой message, который выбрасывался; (8) импорт папки по URL — сырой alert() с серверной строкой «requires an authenticated user» дословно, и диалог ВСЁ РАВНО закрывался; (9) загрузка файлов включая OCR-ветку — сырой alert(). Стало: единый reportFailure → баннер + тост с причиной, для гостя — призыв войти с кнопкой; диалог при отказе не закрывается. Воркер отдельно перечислил, что НЕ молчит и не тронуто (AudioUploader, чипы drop-zone, лимит источников) — то есть отделил проверенное от непроверенного. Тесты 4+10 зелёных. Проверено мной: путей вне репозитория в тестах нет. 2026-08-11T01:53:52.567Z · backup-opusЗАКРЫТО с живым пруфом: приёмка 10.08 21:30 (моя сессия, гостевая) — Add Source modal при попытке гостя показывает явный guest-gate баннер «Увійдіть, щоб додати джерело» + confirm при закрытии с черновиком; молчаливого отказа нет. Фикс CJ-волны подтверждён глазами на проде.
Воркер
не проверен
o258
M4
движение в панели: неизвестно
Подключиться и смотреть/перехватить руками. Колесо мыши листает; клавишами — Ctrl-b затем [, выход из прокрутки q. Отсоединиться — Ctrl-b затем d:
Прочитать историю панели без подключения — листается и ищется (/ поиск, q выход), воркеру не помешает:
Обновлён
2026-08-11T01:53:52.473Z