fix(dashboard): Ablaufdaten zeigen Namen statt roher IDs
"Bevorstehende Ablaufdaten" zeigte "Objekt #67 – Material #222" statt lesbarer Bezeichnungen. bevorstehende_ablaufdaten() liefert jetzt objekt_name/material_name mit, Dashboard nutzt sie. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
This commit is contained in:
@@ -15,7 +15,9 @@ class KennzahlenRead(BaseModel):
|
||||
|
||||
class AblaufdatumRead(BaseModel):
|
||||
objekt_id: int
|
||||
objekt_name: str
|
||||
material_id: int
|
||||
material_name: str
|
||||
ablaufdatum: date
|
||||
verbleibende_tage: int
|
||||
status: str
|
||||
|
||||
@@ -75,12 +75,13 @@ async def bevorstehende_ablaufdaten(db: AsyncSession) -> list[dict]:
|
||||
aufsteigend (dringendste zuerst). "gueltig" gehört nicht in diese Liste."""
|
||||
heute = datetime.now(timezone.utc).date()
|
||||
result = await db.execute(
|
||||
select(Objektposition, Material)
|
||||
select(Objektposition, Material, Objekt)
|
||||
.join(Material, Objektposition.material_id == Material.id)
|
||||
.join(Objekt, Objektposition.objekt_id == Objekt.id)
|
||||
.where(Objektposition.ablaufdatum.is_not(None))
|
||||
)
|
||||
eintraege = []
|
||||
for objektposition, material in result.all():
|
||||
for objektposition, material, objekt in result.all():
|
||||
warnzeitraum = material.warnzeitraum_tage or STANDARD_WARNZEITRAUM_TAGE
|
||||
status_wert, verbleibende_tage = _ablauf_status(objektposition.ablaufdatum, warnzeitraum, heute)
|
||||
if status_wert == "gueltig":
|
||||
@@ -88,7 +89,9 @@ async def bevorstehende_ablaufdaten(db: AsyncSession) -> list[dict]:
|
||||
eintraege.append(
|
||||
{
|
||||
"objekt_id": objektposition.objekt_id,
|
||||
"objekt_name": objekt.name,
|
||||
"material_id": objektposition.material_id,
|
||||
"material_name": material.name,
|
||||
"ablaufdatum": objektposition.ablaufdatum,
|
||||
"verbleibende_tage": verbleibende_tage,
|
||||
"status": status_wert,
|
||||
|
||||
@@ -58,7 +58,9 @@ interface Prueftermineintrag {
|
||||
|
||||
interface Ablaufdatumeintrag {
|
||||
objekt_id: number;
|
||||
objekt_name: string;
|
||||
material_id: number;
|
||||
material_name: string;
|
||||
ablaufdatum: string;
|
||||
verbleibende_tage: number;
|
||||
status: string;
|
||||
@@ -237,7 +239,7 @@ export function DashboardPage() {
|
||||
{ablaufdaten.map((a) => (
|
||||
<li key={`${a.objekt_id}-${a.material_id}`} className="row-between" style={{ padding: "0.3rem 0" }}>
|
||||
<span>
|
||||
<Link to={`/akte/objekt/${a.objekt_id}`}>Objekt #{a.objekt_id}</Link> – Material #{a.material_id}{" "}
|
||||
<Link to={`/akte/objekt/${a.objekt_id}`}>{a.objekt_name}</Link> – {a.material_name}{" "}
|
||||
<span className="text-muted">({a.ablaufdatum})</span>
|
||||
</span>
|
||||
<InventoryStatus status={a.status} tage={a.verbleibende_tage} />
|
||||
|
||||
Reference in New Issue
Block a user