refactor(audio): move shared audio hooks to shared/lib/audio (FTD-44)

Move useAudioCapture, useAudioPlayback, useAudioRecording (+ test)
from features/t2-live/hooks/ to shared/lib/audio/. Update imports
in useT2LiveSession.ts and useT1LiveSession.ts, remove TODO(FTD-44)
markers. No functional change ("Voie A" audio pipeline intact).

Dérogation Règle B assumée pour useAudioRecording (4 fichiers/vague
au lieu de 3) : hook et test déplacés ensemble pour préserver le
chemin d'import relatif (../useAudioRecording), condition nécessaire
au respect de Règle C (jamais rouge entre étapes).

Validated manually: T2 Live D2-D5, T1 Live full flow (private
browsing). 301/301 tests, 0 typecheck errors.
This commit is contained in:
Hermann_Kitio 2026-07-02 04:07:59 +03:00
parent 3016d909a6
commit d9160c4493
6 changed files with 6 additions and 9 deletions

View file

@ -29,12 +29,9 @@ import { useCallback, useEffect, useRef, useState, type RefObject } from 'react'
import { useNavigate } from 'react-router-dom' import { useNavigate } from 'react-router-dom'
import { env } from '@/shared/config/env' import { env } from '@/shared/config/env'
import { getAccessToken } from '@/shared/lib/auth-client' import { getAccessToken } from '@/shared/lib/auth-client'
// TODO(FTD-44): hooks audio génériques empruntés à features/t2-live/ (violation import { useAudioCapture } from '@/shared/lib/audio/useAudioCapture'
// FSD inter-features assumée et tracée). À relocaliser vers shared/lib/audio/ import { useAudioPlayback } from '@/shared/lib/audio/useAudioPlayback'
// au Sprint 7.5 (« factorisation Sprint 7 »). Cf. TECH_DEBT.md §3bis. import { useAudioRecording } from '@/shared/lib/audio/useAudioRecording'
import { useAudioCapture } from '@/features/t2-live/hooks/useAudioCapture'
import { useAudioPlayback } from '@/features/t2-live/hooks/useAudioPlayback'
import { useAudioRecording } from '@/features/t2-live/hooks/useAudioRecording'
import { transition, T1_INITIAL_STATE, type T1State, type T1Event } from '../state/t1-machine' import { transition, T1_INITIAL_STATE, type T1State, type T1Event } from '../state/t1-machine'
const DIALOGUE_TIMEOUT_MS = 180_000 // 3 min const DIALOGUE_TIMEOUT_MS = 180_000 // 3 min

View file

@ -22,9 +22,9 @@ import { useCallback, useEffect, useRef, useState, type RefObject } from 'react'
import { useNavigate } from 'react-router-dom' import { useNavigate } from 'react-router-dom'
import { env } from '@/shared/config/env' import { env } from '@/shared/config/env'
import { getAccessToken } from '@/shared/lib/auth-client' import { getAccessToken } from '@/shared/lib/auth-client'
import { useAudioCapture } from './useAudioCapture' import { useAudioCapture } from '@/shared/lib/audio/useAudioCapture'
import { useAudioPlayback } from './useAudioPlayback' import { useAudioPlayback } from '@/shared/lib/audio/useAudioPlayback'
import { useAudioRecording } from './useAudioRecording' import { useAudioRecording } from '@/shared/lib/audio/useAudioRecording'
import { transition, T2_INITIAL_STATE, type T2State, type T2Event } from '../state/t2-machine' import { transition, T2_INITIAL_STATE, type T2State, type T2Event } from '../state/t2-machine'
const DIALOGUE_TIMEOUT_MS = 210_000 // 3 min 30 const DIALOGUE_TIMEOUT_MS = 210_000 // 3 min 30