refactor solution to PHP through AI
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
# Porting "recupero-proposta-cct-da-contratti" in PHP
|
||||
|
||||
## Obiettivo
|
||||
Convertire la pagina custom `recupero-proposta-cct-da-contratti` in PHP, mantenendo la stessa logica di funzionamento della versione React/TypeScript.
|
||||
|
||||
## Architettura e Sicurezza
|
||||
La pagina originale React esegue una chiamata client-side fetch ad un web service esterno (`http://localhost:8000/contratti/cerca`) utilizzando credenziali Basic Auth ed una API Key custom. Poiché in PHP eseguiamo il rendering server-side, esporre le credenziali nel codice JavaScript inviato al browser è una vulnerabilità di sicurezza.
|
||||
|
||||
### Soluzione Proposta: PHP Proxy Script
|
||||
Proponiamo la creazione di un file `search-contratti.php` locale alla pagina che:
|
||||
1. Riceve in GET il parametro di ricerca `term` ed il codice fiscale dell'utente `cod_fis`.
|
||||
2. Esegue una chiamata cURL server-to-server verso il WS reale usando le credenziali memorizzate in sicurezza in `config.json`.
|
||||
3. Restituisce il JSON dei contratti trovati al client.
|
||||
|
||||
Il componente client-side eseguirà la fetch locale verso questo file `search-contratti.php` ed implementerà un dropdown di autocompletamento in JavaScript nativo (Vanilla JS) per mantenere le stesse animazioni ed interazioni della versione React (debounce, navigazione con frecce tastiera, selezione ed autocompilazione dei campi nascosti del form).
|
||||
|
||||
```
|
||||
[Browser Client]
|
||||
│
|
||||
│ (fetch /term=...)
|
||||
▼
|
||||
[search-contratti.php] (Proxy locale in php/)
|
||||
│
|
||||
│ (cURL server-to-server + Basic Auth & API Key)
|
||||
▼
|
||||
[Web Service Contratti]
|
||||
```
|
||||
|
||||
## Proposed Changes
|
||||
|
||||
### Componente: `php/recupero-proposta-cct-da-contratti/`
|
||||
|
||||
#### [NEW] [config.json](file:///c:/__Git/_UniPR/elixforms-custom-pages/php/recupero-proposta-cct-da-contratti/config.json)
|
||||
Copia del file di configurazione con le credenziali API, l'endpoint del Web Service ed i mapping dei campi elixForms.
|
||||
|
||||
#### [NEW] [search-contratti.php](file:///c:/__Git/_UniPR/elixforms-custom-pages/php/recupero-proposta-cct-da-contratti/search-contratti.php)
|
||||
Script PHP proxy che:
|
||||
- Valida l'input.
|
||||
- Effettua la richiesta HTTP GET al WS esterno tramite `curl`.
|
||||
- Passa l'header `Authorization: Basic ...` e `X-Api-Key: ...`.
|
||||
- Ritorna `application/json` con i risultati.
|
||||
|
||||
#### [NEW] [index.php](file:///c:/__Git/_UniPR/elixforms-custom-pages/php/recupero-proposta-cct-da-contratti/index.php)
|
||||
Pagina custom principale:
|
||||
- Eredita da `ElixFormsComponent`.
|
||||
- Legge il Codice Fiscale dell'utente tramite `QueryParamHelper::getDecodedTextFromQuery`.
|
||||
- Genera i campi nascosti per i dati di output (`idDomanda`, `idRicevuta`, `codiceContratto`, `titoloContratto`).
|
||||
- Rendering dell'input di ricerca ed implementazione del JavaScript nativo per l'autocompletamento (sincronizzato con il file proxy `search-contratti.php`).
|
||||
|
||||
## Verification Plan
|
||||
|
||||
### Manual Verification
|
||||
- Avviare il server PHP locale: `php -S localhost:8080` nella cartella `php/recupero-proposta-cct-da-contratti/`.
|
||||
- Verificare che il proxy `search-contratti.php?term=test&cod_fis=...` risponda correttamente con i dati mock o reali del WS.
|
||||
- Verificare che digitando nel campo di ricerca "Cerca Contratto" vengano visualizzati i risultati nel menu a discesa.
|
||||
- Testare la navigazione del menu a discesa con la tastiera (Frecce Su/Giù, Enter, Esc).
|
||||
- Verificare che alla selezione di un contratto, i campi hidden vengano correttamente compilati con i valori associati (`idDomanda`, `idRicevuta`, ecc.) e venga mostrata la card riepilogativa del contratto selezionato.
|
||||
Reference in New Issue
Block a user