* fix: let TIC lookup run during onboarding; tolerate lowercase TIC status
Two bugs found in prod testing of the BankID picker:
1. Extension dispatcher required a resolved company context for every
non-skipAuth route. /api/extensions/ext/tic/lookup is hit by
Step2CompanyDetails' debounced fetcher (and the BankID picker's
one-click path) during onboarding — before the user has a company —
so requireCompanyId threw "No company context" and the call 500'd.
Added a `skipCompanyContext` flag to ApiRouteDefinition. Marks /lookup
and /profile on the TIC extension so they bypass company resolution
but still require auth. Handlers don't use ctx for these routes, so
no downstream changes were needed.
2. TIC enrichment has been observed returning lowercase 'failed' (and
presumably other lowercase status values). The previous `=== 'Completed'`
strict-case check would silently reject even a legitimately completed
enrichment if TIC normalizes to lowercase. Now compares case-insensitively
against 'completed' and 'partiallycompleted'.
On non-usable enrichment, we now log the full response shape (minus
the time-limited secureUrl token) so we can diagnose why real-user
enrichments come back failed — useful for debugging TIC tenant config
issues where status='failed' but no documented error field is set.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* fix: reject skipAuth + skipCompanyContext combination (PR review)
Greptile P2 finding: if a future route accidentally sets both flags,
skipAuth fires first and silently drops the auth requirement that
skipCompanyContext implicitly assumes. No current route combines them,
but this prevents the mistake from reaching prod.
- Dispatcher throws 500 at matching time if both flags are set, with a
descriptive log line naming the misconfigured route.
- Type JSDoc now lists the three mutually-exclusive modes upfront and
marks the combination as explicitly forbidden.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>