WEB board

всеканоны и докиворкеры↗ iOS↗ Легаси
WEB-344 · Дефект · — · web

P1: /v1/audio/transcriptions зовётся МИМО spend-шлюза — vendorEgressGuard блокирует (voice ASR-фолбэк мёртв)

Закрыт P1 · важно ведёт: —
Суть
23.08 23:27-23:30 journal note-clone-3010 (serving 13a366c03): повторяющийся UnauthorizedVendorEgressError: blocked an unauthorized paid-vendor request to https://api.openai.com/v1/audio/transcriptions — this call did not go through the spend gateway. Call site: .next/server/chunks/1265.js:1:21513 (найти по исходнику вызов openai audio.transcriptions вне meterVendorCall/meterOpenAIClient/MeteredAIProvider). Обнаружено при owner-тесте голоса (WEB-316): транскрипт в UI шёл (другой путь), но этот ASR-вызов дохнет на стороже. ФИКС: провести через meterVendorCall (SKU audio.transcriptions.create gpt-4o-mini-transcribe уже в манифесте) или удалить мёртвый путь. Взять в посадку 39 вместе с voicefix. Родня: WEB-316, WEB-320.
Доказательства

[24.08 03:35] ПРОВЕРЕНО ВОЛНОЙ l41voice и ДОСТАВЛЕНО (посадки 40/41, прод v4-452800ff4): вердикт ALREADY-METERED + REGRESSION-GUARD. Продакшн getOpenAIClient создаёт OpenAI-клиент ТОЛЬКО через meterOpenAIClient; audio.transcriptions.create в METERED_METHODS → meterVendorCall; SKU openai|audio.transcriptions.create|gpt-4o-mini-transcribe|audio есть в generated-манифесте И в runtime SPEND_DEPLOYMENT_MANIFEST прода. Сырого пути мимо шлюза в src не найдено; добавлен негативный source-boundary тест web344TranscriptionMetering.test.ts (2/2) — теперь появление неметрированного пути валит тесты. Отчёт: L41VOICE-REPORT.md (A1). Исходная гипотеза тикета (зов мимо шлюза) не подтвердилась на текущем дереве — блокировки vendorEgressGuard времён l39 шли из-за отсутствия method-aware admission (починено WEB-316, посадка 40). Кандидат на closed после живого голосового теста owner (транскрипции задействованы в том же флоу).
Связи
Лента
2026-08-25T07:11:44.288Z · fable-ops
ПРИЁМКА (закрытие). Гипотеза «зов мимо spend-шлюза» не подтвердилась на текущем дереве (l41voice: ALREADY-METERED — audio.transcriptions.create в METERED_METHODS→meterVendorCall, SKU в runtime-манифесте; добавлен негативный source-boundary тест web344TranscriptionMetering 2/2). Живая owner-сессия голоса (WEB-316, 24.08 21:10) задействовала транскрипцию — путь метрируется и работает. Блокировки vendorEgressGuard времён l39 починены method-aware admission (WEB-316, посадка 40).
Воркер
не привязан — привязать: curl -X POST https://bugs.wool2.online/api/web/assign -H 'content-type: application/json' \ -d '{"issueId":"WEB-344","session":"<имя tmux-сессии>","host":"m4"}'
Обновлён
2026-08-25T07:11:44.303Z