feat(questions): make brand questions the primary monitoring & template axis
- add /questions/combination-fill endpoint with AI-driven, IP-region-aware matrix fill - extract ip2region resolver from ops/app into shared/ipregion for cross-service use - thread question_id filter through dashboard composite, citation summary, and collect-now - switch template wizard from keyword inputs to brand-question selection (primary + supplemental) - pass brand_question and supplemental_questions through assist/title/outline prompts - add AiWaitingModal + 45s client timeout and request_timeout error mapping for long AI flows Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -61,8 +61,11 @@ function normalizeError(error: unknown): ApiClientError {
|
||||
|
||||
if (axios.isAxiosError(error)) {
|
||||
const payload = error.response?.data as Partial<ApiErrorEnvelope> | undefined
|
||||
const isTimeout =
|
||||
!error.response && (error.code === 'ECONNABORTED' || error.code === 'ETIMEDOUT')
|
||||
const fallbackMessage = isTimeout ? 'request_timeout' : (error.message ?? 'network_error')
|
||||
return new ApiClientError({
|
||||
message: payload?.message ?? error.message ?? 'network_error',
|
||||
message: payload?.message ?? fallbackMessage,
|
||||
code: payload?.code ?? 50000,
|
||||
status: error.response?.status,
|
||||
detail: payload?.detail,
|
||||
|
||||
Reference in New Issue
Block a user