fix(vwb): resolve frontend services from runtime host
Some checks failed
tests / Lint (ruff + black) (push) Failing after 1m46s
tests / Tests unitaires (sans GPU) (push) Failing after 1m50s
tests / Tests sécurité (critique) (push) Has been skipped

This commit is contained in:
Dom
2026-06-17 17:53:57 +02:00
parent 667575c3ad
commit 9605cc9d95
15 changed files with 110 additions and 53 deletions

View File

@@ -7,6 +7,7 @@
import React from 'react';
import { CoachingSuggestion } from '../../hooks/useCoachingWebSocket';
import { getApiOrigin } from '../../services/apiClient';
interface CoachingSuggestionCardProps {
suggestion: CoachingSuggestion;
@@ -106,7 +107,7 @@ const CoachingSuggestionCard: React.FC<CoachingSuggestionCardProps> = ({
{suggestion.screenshotPath && (
<div className="suggestion-screenshot">
<img
src={`http://localhost:5001${suggestion.screenshotPath}`}
src={`${getApiOrigin()}${suggestion.screenshotPath}`}
alt="Target element"
onError={(e) => {
(e.target as HTMLImageElement).style.display = 'none';

View File

@@ -23,6 +23,7 @@ import CoachingSuggestionCard from './CoachingSuggestionCard';
import CoachingDecisionButtons from './CoachingDecisionButtons';
import CoachingStatsDisplay from './CoachingStatsDisplay';
import CorrectionEditor from './CorrectionEditor';
import { getApiOrigin } from '../../services/apiClient';
import './CoachingPanel.css';
interface CoachingPanelProps {
@@ -143,7 +144,7 @@ export const CoachingPanel: React.FC<CoachingPanelProps> = ({
const startSession = useCallback(
async (wfId: string) => {
try {
const response = await fetch(`${serverUrl || 'http://localhost:5001'}/api/executions/coaching`, {
const response = await fetch(`${serverUrl || getApiOrigin()}/api/executions/coaching`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ workflow_id: wfId }),

View File

@@ -62,6 +62,7 @@ import {
Variable,
} from '../../types';
import { VWBEvidence } from '../../types/evidence';
import { getApiHost } from '../../services/apiClient';
interface VWBExecutorExtensionProps {
workflow: Workflow;
@@ -229,11 +230,8 @@ const VWBExecutorExtension: React.FC<VWBExecutorExtensionProps> = ({
setFeedbackLoading(true);
try {
// Déterminer l'URL de l'API
const hostname = window.location.hostname;
const apiBase = (hostname === 'localhost' || hostname === '127.0.0.1')
? 'http://localhost:5001/api'
: `http://${hostname}:5000/api`;
// URL de l'API résolue dynamiquement (compatible IP DGX / accès distant).
const apiBase = getApiHost();
const response = await fetch(`${apiBase}/workflows/${workflow.id}/feedback`, {
method: 'POST',

View File

@@ -62,6 +62,7 @@ import { captureLibraryService, SavedCapture } from '../../services/captureLibra
import { VisualSelection, BoundingBox } from '../../types';
import { screenCaptureService } from '../../services/screenCaptureService';
import { uploadAnchorImage } from '../../services/anchorImageService';
import { getApiHost } from '../../services/apiClient';
interface VisualSelectorProps {
isOpen: boolean;
@@ -137,7 +138,7 @@ const VisualSelector: React.FC<VisualSelectorProps> = ({
useEffect(() => {
const loadMonitors = async () => {
try {
const response = await fetch('http://localhost:5001/api/real-demo/capture/status');
const response = await fetch(`${getApiHost()}/real-demo/capture/status`);
const data = await response.json();
if (data.success && data.monitors) {
setMonitors(data.monitors);
@@ -301,7 +302,7 @@ const VisualSelector: React.FC<VisualSelectorProps> = ({
await new Promise(resolve => setTimeout(resolve, delayMs));
// Utiliser l'API de capture réelle avec le moniteur sélectionné
const response = await fetch('http://localhost:5001/api/real-demo/capture', {
const response = await fetch(`${getApiHost()}/real-demo/capture`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({