feat: wire Tufts SCO to DentaQuest portal and fix insurance credential dropdown

- Add /dentaquest-eligibility endpoint in Python agent (Tufts SCO uses providers.dentaquest.com)
- Add backend route, processor, and service client for Tufts SCO (separate from UnitedSCO/DentalHub)
- Fix Tufts SCO button to post to new tuftssco route instead of unitedsco
- Fix credential field names: dentaquestUsername/Password (was tuftsscoUsername/Password)
- Fix socket event: listen for selenium:dentaquest_session_started (was unitedsco)
- Fix error visibility: keep session alive 30s on error so backend reads real message
- Replace free-text Site Key field with dropdown to prevent key mismatches

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Gitead
2026-04-17 00:59:24 -04:00
parent b6700eceee
commit f5ec4a1480
10 changed files with 591 additions and 61 deletions

View File

@@ -139,7 +139,7 @@ export function TuftsSCOEligibilityButton({
const response = await apiRequest(
"POST",
"/api/insurance-status-unitedsco/unitedsco-eligibility",
"/api/insurance-status-tuftssco/tuftssco-eligibility",
{ data: JSON.stringify(payload), socketId: socket.id }
);
@@ -195,13 +195,13 @@ export function TuftsSCOEligibilityButton({
);
};
socket.on("selenium:unitedsco_session_started", onSessionStarted);
socket.on("selenium:dentaquest_session_started", onSessionStarted);
socket.on("selenium:otp_required", onOtpRequired);
socket.on("selenium:otp_submitted", onOtpSubmitted);
function cleanup() {
clearTimeout(safetyTimer);
socket.off("selenium:unitedsco_session_started", onSessionStarted);
socket.off("selenium:dentaquest_session_started", onSessionStarted);
socket.off("selenium:otp_required", onOtpRequired);
socket.off("selenium:otp_submitted", onOtpSubmitted);
socket.off("job:update", onJobUpdate);
@@ -296,7 +296,7 @@ export function TuftsSCOEligibilityButton({
try {
setIsSubmittingOtp(true);
const resp = await apiRequest("POST", "/api/insurance-status-unitedsco/selenium/submit-otp", {
const resp = await apiRequest("POST", "/api/insurance-status-tuftssco/selenium/submit-otp", {
session_id: sessionId,
otp,
socketId: socket.id,