SOS Infrastruktura v3.24.0 — QA RESULTS
Datum: 2026-08-20
Scope: XLSX OpenXML repair + nedodeljena oprema + Magacin

1. ROOT CAUSE REPRODUKCIJA
- v3.23.0 workbook: xl/workbook.xml potvrđuje Sažetak = rId2 = xl/worksheets/sheet2.xml.
- v3.23.0 sheet2 row refs: 1,2,3,4,5,6,4,5,10,11,12.
- Duplikati: row r=4 x2, row r=5 x2.
- Nema formula/NaN/undefined cached value-a u starom sheet2.
- Novi validator odbija stari XML: PASS.

2. NOVI XLSX / WAREHOUSE TESTOVI
- qa_warehouse_xlsx_v3_24_0.js: 37/37 PASS.
- qa_warehouse_xlsx_runtime_v3_24_0.php: 29/29 PASS.
- Testirani dataset-i: 0, 1, 20, 105 stavki.
- ZIP/OpenXML reopen: PASS.
- sheet2 unique/ordered row refs: PASS.
- Magacin sheet conditional presence: PASS.
- Leading-zero inventarski broj ostaje tekst: PASS.
- Formula-like stringovi ostaju tekst: PASS.
- XML invalid control character sanitization: PASS.
- Serbian Unicode: PASS.

3. ARTIFACT_TOOL WORKBOOK VALIDATION
QA workbook: qa_equipment_export_v3_24_0.xlsx
- Import workbook: PASS.
- Sheets: Pregled opreme, Sažetak, Magacin: PASS.
- Pregled opreme 12 kolona: PASS.
- Sažetak server-side count: PASS.
- Sažetak Magacin count: PASS (2).
- Magacin: prazni Korisnik/Sektor/Datum dodele/Email za nedodeljene redove: PASS.
- Formula error scan (#REF/#DIV0/#VALUE/#NAME/#N/A): 0 matches.

4. ADMIN/EQUIPMENT REGRESSION
- qa_admin_inventory_v3_23_0.js: 36/36 PASS.
- qa_admin_inventory_runtime_v3_23_0.php: 24/24 PASS.
- Server-side pagination/search/filter ostaju aktivni: PASS.
- Equipment export zadržava kompletan filtrirani skup, ne samo pagination stranicu: PASS.

5. RBAC/TICKETING REGRESSION
- qa_org_units_v3_22_0.js: 36/36 PASS.
- qa_org_units_v3_22_0.php: 29/29 PASS.
- qa_ticket_split_v3_17_1.js: 43/43 PASS (sa privremenom test kopijom dostavljenog SQL dump-a).
- qa_ticket_split_runtime_v3_17_1.php: 15/15 PASS.
- qa_evidence_layout_v3_22_3.js: 21/21 PASS.
- qa_evidence_layout_runtime_v3_22_3.php: 8/8 PASS.
- qa_ui_polish_v3_21_3.js: 26/26 PASS.
- qa_ui_polish_runtime_v3_21_3.php: 12/12 PASS.
- qa_role_display_mobile_v3_22_1.js: 16/16 PASS.
- qa_role_display_runtime_v3_22_1.php: 16/16 PASS.
- qa_account_mobile_cta_v3_22_2.js: 15/15 PASS.

6. SESSION REGRESSION
- qa_session_timeout_v3_21.php: 10/10 PASS uz privremeni test config izveden iz config.example.php.
- qa_session_timeout_v3_21.js: 18/19 PASS.
- Jedini FAIL je istorijski hardkodovan zahtev za @media(max-width:520px); stvarni session responsive breakpoint je od ranije drugačiji i nije menjan v3.24.0 patch-em.

7. SYNTAX
- PHP lint: PASS za sve PHP fajlove u source tree-u.
- JavaScript syntax (node --check): PASS za sve JS fajlove.

8. DATABASE MIGRATION
- upgrade_v3_24_0.sql statički proverena prema dostavljenoj v3.23.0 schema strukturi.
- Menja equipment.user_id na NULL, fk na ON DELETE SET NULL, dodaje is_in_warehouse, idx_equipment_warehouse i equipment_assignment_events.
- Živa MySQL/MariaDB instanca nije dostupna u sandbox-u; migracija nije izvršena protiv produkcione/test DB instance.

9. RESPONSIVE
- Source-level QA potvrđuje: desktop equipment control ostaje 2 kolone; <=1180px prelazi na 1 kolonu; <=760px filter postaje 1 kolona; lokalni table wrapper zadržava horizontalni scroll; warehouse checkbox nema fiksnu visinu/absolute pozicioniranje.
- Pokušaj headless Chromium render testa u ovoj sesiji nije pouzdan zbog DBus/zygote problema sandbox Chromium procesa; zato se ne tvrdi uspešan browser-engine screenshot test za v3.24.0 UI.

10. MICROSOFT EXCEL OGRANIČENJE
- Microsoft Excel desktop nije dostupan u sandbox okruženju.
- Novi workbook prolazi interni strict OpenXML validator, ZIP reopen i artifact_tool import/render bez formula grešaka.
- Finalni acceptance test na staging/produkciji: otvoriti export direktno u Microsoft Excel-u i potvrditi da nema Repair/Removed Records poruke.
