# SupplierDualField — refactor decision **Decizie**: `SupplierDualField.vue` **NU** se refactorizează cu `AsyncAutoComplete`. ## Context Task #3 a extras `AsyncAutoComplete` (shared) din pattern-ul typeahead async din `ComandaNoua.vue`. Candidatul pentru refactor a fost `src/modules/data-entry/components/receipts/SupplierDualField.vue`. ## Motive pentru skip 1. **Filtru client-side, nu async remote** `SupplierDualField` filtrează o listă `partners` **preîncărcată în memorie** (`props.partners.filter(...)` pe nume + CUI). `AsyncAutoComplete` e construit pe `searchFn: (q) => Promise` (remote). Adaptarea ar cere un wrapper artificial `async (q) => partners.filter(...)` care nu aduce valoare. 2. **`force-selection: false` vs `force-selection: true`** SupplierDualField permite intrare free-text (`forceSelection: false`) pentru că users pot tasta manual CUI/nume furnizor. `AsyncAutoComplete` impune `force-selection: true` ca invariant de securitate (evită ID-uri fantomă). Schimbarea ar rupe flow-ul existent. 3. **Dropdown manual + câmp CUI separat** Componenta e **composite**: AutoComplete (nume) + `InputText` (CUI) + toggle adresă + sync-button + status badges (oracle/local/warning), totul cu propriile `update:*` emits. AutoComplete-ul e doar o parte — extragerea lui izolat ar lăsa componenta într-o stare hibridă, mai complicată decât acum. 4. **Prop `dropdown`** SupplierDualField folosește `dropdown` (buton chevron care arată toată lista). `AsyncAutoComplete` nu expune acest mod (ar contrazice pattern-ul async „caută minim N caractere"). ## Concluzie Pattern-urile diferă fundamental. Păstrăm `SupplierDualField` neschimbat. `AsyncAutoComplete` rămâne dedicat pattern-urilor de typeahead async, cu sursa de date remote (ex: `ComandaNoua.vue` → partener service-auto, și viitoare formulare similare).