9aaafa2358
dashboard.go i izvestaji.go više ne sadrže direktan SQL — svih 12 upita prebačeno u novi IzvestajRepository (internal/db/sqlite/izvestaj.go). Repo vraća sirove redove (model.*Red tipovi), a handleri zadržavaju prezentaciju (formatiranje datuma, boje tačaka, rang, sklapanje niza 12 meseci). Žičenje kroz Handler.IzvestajRepo (+ reinicijalizuj). Dobici: testabilnost (dodati integracioni testovi izvestaj_test.go) i put ka Postgres-u bez prepravke handlera. dashboard.prihod provera ostaje u handleru. Van obima: middleware/flash.go i backup VACUUM INTO (ne pripadaju repo sloju).
60 lines
1.4 KiB
Go
60 lines
1.4 KiB
Go
package model
|
|
|
|
import "time"
|
|
|
|
// Tipovi u ovom fajlu su SIROVI redovi koje vraća IzvestajRepository.
|
|
// Prezentaciju (formatiranje datuma, boje, rang, sklapanje niza meseci) radi
|
|
// handler — ovde su samo podaci iz baze.
|
|
|
|
// ServisRedDashboard je jedan red za listu poslednjih servisa na dashboardu
|
|
type ServisRedDashboard struct {
|
|
Uredjaj string
|
|
Status string
|
|
DatumPrijema time.Time
|
|
}
|
|
|
|
// ZalihaRed je artikal sa kritičnom zalihom (naziv + količina)
|
|
type ZalihaRed struct {
|
|
Naziv string
|
|
Kolicina int
|
|
}
|
|
|
|
// ProdajaRedDashboard je jedan red za listu poslednjih prodaja na dashboardu
|
|
type ProdajaRedDashboard struct {
|
|
BrojNaloga string
|
|
Ukupno float64
|
|
Datum time.Time
|
|
KlijentNaziv string
|
|
}
|
|
|
|
// MesecniIznos je zbir za jedan mesec (ključ je "YYYY-MM")
|
|
type MesecniIznos struct {
|
|
Mesec string
|
|
Iznos float64
|
|
}
|
|
|
|
// StariNalogRed je otvoreni servisni nalog stariji od praga (sirov datum)
|
|
type StariNalogRed struct {
|
|
ID int64
|
|
BrojNaloga string
|
|
Uredjaj string
|
|
Status string
|
|
KlijentNaziv string
|
|
DatumPrijema time.Time
|
|
}
|
|
|
|
// TopArtikalRed je artikal rangiran po prodatoj količini (bez ranga — dodaje handler)
|
|
type TopArtikalRed struct {
|
|
Naziv string
|
|
Kategorija string
|
|
UkupnoKolicina int
|
|
UkupnoPrihod float64
|
|
}
|
|
|
|
// TopKlijentRed je klijent rangiran po ukupnoj vrednosti naloga (bez ranga)
|
|
type TopKlijentRed struct {
|
|
Naziv string
|
|
UkupnoVrednost float64
|
|
BrojNaloga int
|
|
}
|