Setări pentru clienți legacy
HandyCafe rulează împreună cu instalări mai vechi de clienți V3 și V4 fără întreruperi. Pagina Legacy Clients Settings controlează două funcții distincte:
- Runtime Protocol. Activează ascultătorii de rețea care permit clienților V3 și V4 să se conecteze la acest server pe porturile lor originale.
- Database Migration. Importă opțional membri, tarificare, produse, comenzi, tranzacții și jurnale dintr-o instalare locală mai veche în noua bază de date HandyCafe. Această funcție este disponibilă doar pe Windows.
Cele două funcții sunt independente. Puteți activa suportul runtime fără a migra date, puteți migra date fără a activa suportul runtime sau le puteți face pe ambele.
Secțiunea Runtime Protocol
Enable Legacy Client Support
Un comutator principal în partea de sus a secțiunii. Când este activ, serverul pornește trei ascultători de rețea:
- Un ascultător UDP pe grupul multicast configurat.
- Un ascultător TCP de comenzi pe
UDP port + 2. - Un ascultător TCP pentru transfer de fișiere pe
UDP port + 7.
Dezactivarea comutatorului oprește atomic toți cei trei ascultători. Puteți ajusta porturile sau codarea cât timp funcția este dezactivată, apoi o activați din nou pentru a aplica modificările.
Câmpuri de configurare
| Câmp | Implicit | Descriere |
|---|---|---|
| Auth Key | HANDYCAFE | O cheie comună de 10 caractere. Fiecare cadru de intrare și ieșire poartă acest șir. Cadrele care nu se potrivesc sunt eliminate. Toți clienții legacy trebuie să folosească aceeași cheie. |
| UDP Multicast IP | 230.4.4.46 | Grupul multicast folosit pentru beaconi de descoperire și pentru trimiterea comenzilor prin UDP. Codificat direct în majoritatea build-urilor legacy. |
| Server UDP Port | 710 | Portul UDP pe care serverul ascultă pentru beaconi și comenzi de la clienți. Clienții legacy trimit către acest port. |
| Client UDP Port | 711 | Portul UDP pe care ascultă clienții legacy. Serverul trimite comenzi de administrare unicast către acest port pe IP-ul clientului descoperit. |
| Encoding | cp1254 | Codarea caracterelor pentru câmpurile text din wire format. Folosiți cp1254 pentru instalările turcești, cp1252 pentru Europa de Vest. Valorile necunoscute revin la cp1254 cu un avertisment în jurnalul serverului. |
| Server Version | 3.4.01 | Șirul de versiune difuzat în fiecare beacon UDP. Unele clienți legacy resping cadrele venite de la versiuni pe care nu le recunosc. Setați această valoare astfel încât să corespundă versiunii serverului original. |
| Protocol Variant | STE | Selectarea formatului wire. Vedeți comparația variantelor de mai jos. |
| Inactivity Timeout | 10 | Secunde. Un watchdog per MAC. Dacă nu ajunge trafic de la un client în acest interval, clientul este marcat offline. Un interval de 10 secunde este potrivit pentru clienții legacy care trimit beacon la fiecare 2 sau 3 secunde. |
Porturi derivate
Sub formular, pagina afișează o linie doar pentru citire care arată porturile TCP derivate:
TCP Command Port: 712 File Transfer Port: 717
Aceste porturi sunt calculate pornind de la portul UDP al serverului. Nu le configurați separat. Dacă schimbați Server UDP Port cu o altă valoare, porturile derivate se modifică automat odată cu el.
Varianta de protocol
Câmpul Protocol Variant selectează formatul wire folosit de server. Alegeți varianta care corespunde modului în care a fost construit serverul legacy.
| Varianta | Când se folosește |
|---|---|
| STE (Smart/Turbo Edition) | Codul legacy modern. Adaugă un prefix de 70 de bytes cu informații despre licență la structura cadrului. Dimensiunea cadrului este 1337 bytes. Alegeți această variantă dacă instalarea legacy folosea ediția Smart sau Turbo. |
| Standard | Build-ul legacy de bază, simplu. Dimensiunea cadrului este 1267 bytes, fără prefixul cu informații despre licență. Alegeți această variantă doar dacă instalarea dvs. legacy era o ediție Standard fără înregistrarea licenței. |
Alegerea variantei greșite duce la aruncarea sau interpretarea greșită a cadrelor. Simptomele includ clienți care apar online, dar ignoră orice comandă, sau datele de comandă deplasate cu offset-ul de 70 de bytes.
Coexistența cu clienții moderni
Porturile legacy (710, 711, 712, 717) sunt complet separate de porturile moderne ale protocolului HandyCafe (TCP 5001, 5002, 5003, UDP 5004). Ambele stive de protocol rulează simultan fără conflict. Puteți combina clienți vechi și noi în aceeași rețea LAN și îi puteți administra din același Admin Panel.
Aplicarea modificărilor
Fiecare câmp din secțiunea Runtime Protocol este salvat cu butonul global Save din partea de jos a paginii. La salvare, serverul:
- Oprește cei trei ascultători legacy dacă rulau deja.
- Validează cheia de autentificare (nu trebuie să fie goală).
- Construieste noile configurații de ascultare din câmpurile actualizate.
- Repornește ascultătorii în paralel.
- Afișează o notificare când toți trei sunt din nou online.
Dacă un port este deja folosit de alt proces, serverul raportează o eroare și comutatorul revine pe off. Verificați firewall-ul și celelalte servicii cu netstat și alegeți un interval de porturi liber.
Secțiunea Database Migration (doar Windows)
Această funcție este disponibilă doar când HandyCafe rulează pe Windows. Pe macOS și Linux, secțiunea afișează un mesaj: "Database migration is supported on Windows only."
Detectare
La deschidere, serverul scanează sistemul pentru o instalare legacy. Detectarea caută în:
- Registry și căi de instalare obișnuite precum
Program Files\\HandyCafeșiC:\\HandyCafe. - Fișierul bazei de date aflat lângă instalare.
- Fișierele de configurare INI din directorul instalării.
Când detectarea reușește, pagina afișează:
| Etichetă | Semnificație |
|---|---|
| Install Path | Locul unde se află instalarea legacy pe disc. |
| Database Path | Calea completă către fișierul bazei de date legacy. |
| Server Version | Parsată din configurația legacy. |
| INI File Count | Numărul de fișiere de configurare detectate. Util pentru a verifica rapid că instalarea este completă. |
Dacă nu este detectată nicio instalare, pagina afișează "No legacy installation detected." Puteți activa în continuare suportul runtime; funcția de migrare pur și simplu nu are ce importa.
Starea migrării
Pagina urmărește istoricul migrării:
| Stare | Semnificație |
|---|---|
| never | Încă nu ați rulat nicio migrare. |
| in_progress | O migrare rulează în acest moment. Nu închideți serverul în această stare. |
| completed | Cea mai recentă migrare s-a terminat fără avertismente. |
| completed_with_warnings | Cea mai recentă migrare s-a terminat, dar unele înregistrări au fost sărite (de exemplu din cauza erorilor de codare sau a datelor de timp incorecte). Verificați avertismentele înainte de a continua. |
| undone | Cea mai recentă migrare a fost anulată. |
După prima rulare reușită, butonul Start Migration se redenumește în Re-run Migration.
Ce se migrează
| Tabel | Descriere |
|---|---|
| Members | Înregistrări de clienți cu nume, date de contact și solduri. |
| Pricing | Tabele de prețuri și rate pe ore. |
| Products | Înregistrări din catalogul de produse. |
| Orders | Istoric de comenzi cu referințe la sesiuni. |
| Transactions | Înregistrări contabile cu marcaje temporale, sume și metode de plată. |
| Logs | Înregistrări de audit și avertismente din baza de date legacy. |
Garanția "Files Safe"
Pagina afișează o notificare albastră: "The original database files are not deleted. You can safely delete them once migration is confirmed." Migrarea este doar citire pentru sursa. Chiar dacă rulați migrarea de mai multe ori, baza de date legacy originală rămâne neatinsă. Asta vă permite să experimentați importul, să verificați numerele și să dați rollback fără risc.
Start, Re-run și Undo
- Start Migration. Deschide un modal de progres. Modalul afișează faza curentă și numărul de rânduri procesate până în acel moment. Nu închideți HandyCafe în acest timp.
- Re-run Migration. Disponibil după o rulare finalizată. Repornește importul de la zero. Noul import înlocuiește datele anterioare din HandyCafe.
- Undo Migration. Disponibil după o rulare finalizată. Deschide un dialog de confirmare. La confirmare, fiecare rând migrat este șters din HandyCafe. Sursa legacy nu este atinsă. După undo, starea revine la
never.
Finalizat cu avertismente
Dacă migrarea se termină cu completed_with_warnings, apare un banner galben cu un link Details. Dați clic pentru a extinde lista înregistrărilor sărite și motivul lor. Motive frecvente:
- Encoding mismatch. Rândul sursă conține caractere care nu se decodează corect în codarea configurată. Schimbați câmpul Encoding (cp1254 sau cp1252) și rulați din nou migrarea.
- Malformed dates. Unele înregistrări legacy au marcaje temporale invalide. Acestea sunt sărite pentru ca rândurile valide să poată fi importate.
- Duplicate keys. O înregistrare cu același identificator există deja în HandyCafe. Migrarea păstrează înregistrarea existentă și sare peste duplicat.
Sfaturi
- Opriți serverul legacy înainte de a rula o migrare. Dacă sistemul vechi încă scrie în baza lui de date, importul poate vedea date vechi sau parțiale.
- Potriviți câmpul Encoding cu locale-ul legacy înainte de prima migrare. Schimbarea lui după ce datele au fost importate nu repară retroactiv numele deja corupte.
- Rulați întotdeauna mai întâi o migrare de test. Verificați numărul de înregistrări în "Last Counts" și verificați manual câteva rânduri de membri și tranzacții înainte să faceți tranziția personalului pe noul sistem.
- Activați suportul runtime și păstrați clienții legacy conectați o perioadă de tranziție. Asta vă permite să verificați că noul server îi servește identic înainte să îl retrageți pe cel vechi.
- Dacă schimbați Server UDP Port, nu uitați că porturile derivate pentru comenzi și transfer de fișiere se mută odată cu el. Regulile de firewall trebuie actualizate corespunzător.