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):
|
class AblaufdatumRead(BaseModel):
|
||||||
objekt_id: int
|
objekt_id: int
|
||||||
|
objekt_name: str
|
||||||
material_id: int
|
material_id: int
|
||||||
|
material_name: str
|
||||||
ablaufdatum: date
|
ablaufdatum: date
|
||||||
verbleibende_tage: int
|
verbleibende_tage: int
|
||||||
status: str
|
status: str
|
||||||
|
|||||||
@@ -75,12 +75,13 @@ async def bevorstehende_ablaufdaten(db: AsyncSession) -> list[dict]:
|
|||||||
aufsteigend (dringendste zuerst). "gueltig" gehört nicht in diese Liste."""
|
aufsteigend (dringendste zuerst). "gueltig" gehört nicht in diese Liste."""
|
||||||
heute = datetime.now(timezone.utc).date()
|
heute = datetime.now(timezone.utc).date()
|
||||||
result = await db.execute(
|
result = await db.execute(
|
||||||
select(Objektposition, Material)
|
select(Objektposition, Material, Objekt)
|
||||||
.join(Material, Objektposition.material_id == Material.id)
|
.join(Material, Objektposition.material_id == Material.id)
|
||||||
|
.join(Objekt, Objektposition.objekt_id == Objekt.id)
|
||||||
.where(Objektposition.ablaufdatum.is_not(None))
|
.where(Objektposition.ablaufdatum.is_not(None))
|
||||||
)
|
)
|
||||||
eintraege = []
|
eintraege = []
|
||||||
for objektposition, material in result.all():
|
for objektposition, material, objekt in result.all():
|
||||||
warnzeitraum = material.warnzeitraum_tage or STANDARD_WARNZEITRAUM_TAGE
|
warnzeitraum = material.warnzeitraum_tage or STANDARD_WARNZEITRAUM_TAGE
|
||||||
status_wert, verbleibende_tage = _ablauf_status(objektposition.ablaufdatum, warnzeitraum, heute)
|
status_wert, verbleibende_tage = _ablauf_status(objektposition.ablaufdatum, warnzeitraum, heute)
|
||||||
if status_wert == "gueltig":
|
if status_wert == "gueltig":
|
||||||
@@ -88,7 +89,9 @@ async def bevorstehende_ablaufdaten(db: AsyncSession) -> list[dict]:
|
|||||||
eintraege.append(
|
eintraege.append(
|
||||||
{
|
{
|
||||||
"objekt_id": objektposition.objekt_id,
|
"objekt_id": objektposition.objekt_id,
|
||||||
|
"objekt_name": objekt.name,
|
||||||
"material_id": objektposition.material_id,
|
"material_id": objektposition.material_id,
|
||||||
|
"material_name": material.name,
|
||||||
"ablaufdatum": objektposition.ablaufdatum,
|
"ablaufdatum": objektposition.ablaufdatum,
|
||||||
"verbleibende_tage": verbleibende_tage,
|
"verbleibende_tage": verbleibende_tage,
|
||||||
"status": status_wert,
|
"status": status_wert,
|
||||||
|
|||||||
@@ -58,7 +58,9 @@ interface Prueftermineintrag {
|
|||||||
|
|
||||||
interface Ablaufdatumeintrag {
|
interface Ablaufdatumeintrag {
|
||||||
objekt_id: number;
|
objekt_id: number;
|
||||||
|
objekt_name: string;
|
||||||
material_id: number;
|
material_id: number;
|
||||||
|
material_name: string;
|
||||||
ablaufdatum: string;
|
ablaufdatum: string;
|
||||||
verbleibende_tage: number;
|
verbleibende_tage: number;
|
||||||
status: string;
|
status: string;
|
||||||
@@ -237,7 +239,7 @@ export function DashboardPage() {
|
|||||||
{ablaufdaten.map((a) => (
|
{ablaufdaten.map((a) => (
|
||||||
<li key={`${a.objekt_id}-${a.material_id}`} className="row-between" style={{ padding: "0.3rem 0" }}>
|
<li key={`${a.objekt_id}-${a.material_id}`} className="row-between" style={{ padding: "0.3rem 0" }}>
|
||||||
<span>
|
<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 className="text-muted">({a.ablaufdatum})</span>
|
||||||
</span>
|
</span>
|
||||||
<InventoryStatus status={a.status} tage={a.verbleibende_tage} />
|
<InventoryStatus status={a.status} tage={a.verbleibende_tage} />
|
||||||
|
|||||||
Reference in New Issue
Block a user