{"id":"c1093","filename":"c1093_pos_fastapi_novi_modul.dok.json","weise3_id":"","tip":"implementacija","naziv":"POS — FastAPI modul (v3→v4 migracija, čisti standard)","kreator":"genesis","datum":"","snippet":"","status":"TODO","prev_weise3":"","bunker_l":"#00d4ff","full":{"tip":"implementacija","naziv":"POS — FastAPI modul (v3→v4 migracija, čisti standard)","server":"MAR (212.227.181.201), /var/www/fenix-v4/","referenca_v3":"/var/www/fenix-v3/pos/models.py — pročitati za mapping, ali pisati NOVO","standard":{"struktura":"pos/models.py + pos/schemas.py + pos/service.py + pos/router.py + pos/html_router.py","model_zakon27":"weise3_id + bunker_seal_id + created_at obavezno na svakom modelu","create_zakon3":"await _chain_push() — NE fire-and-forget, ZAKON 3 atomarno","ai_zakon38":"TokenRouter T0 Haiku za sve AI pozive, ne direktni Anthropic()","brsljani_zakon2":"svaki novi POS zapis -> Brsljani push","css_zakon":"nikad hardcoded boje — var(--fenix-*) tokeni, dark/light theme"},"minimalni_modeli":["POSSession — otvaranje/zatvaranje blagajne, weise3_id, operator_wid","POSTransaction — svaka transakcija, iznos, pdv, nacin_placanja, fiskaliziran","POSItem — stavke transakcije, artikl, kolicina, cijena","POSPaymentMethod — gotovina/kartica/bon/aircash"],"minimalni_endpointi":["POST /api/v4/pos/session/open — otvori blagajnu","POST /api/v4/pos/session/close — zatvori, dnevni izvještaj","POST /api/v4/pos/transaction/ — nova transakcija","GET  /api/v4/pos/session/{id}/transactions/ — lista transakcija","GET  /api/v4/pos/dashboard/ — dnevni pregled","GET  /hr/pos/ — HTML shell"],"fiskalizacija":"koristiti postojeći /var/www/genesis/api/fiskalizacija.py pattern — ZKI/JIR","napomene":["Pročitaj /var/www/fenix-v3/pos/models.py za popis polja — ali piši NOVU SQLAlchemy async verziju","NE kopiraj Django ORM kod — sve SQLAlchemy 2.x mapped_column stil","Nakon deploy: systemctl restart gunicorn-fenix-v4 (ne reload — WhiteNoise)","Dodati router u /var/www/fenix-v4/main.py lifespan blok","ZAKON 32: c1093 je chain entry — commit ide NAKON njega"],"zakon":["ZAKON_2","ZAKON_3","ZAKON_26","ZAKON_27","ZAKON_29","ZAKON_38","ZAKON_40","ZAKON_41"],"status":"TODO"}}