fix: restore mobile card (name+phone), remove updatedAt column, clean layout

Mobile: restored customer name + phone, buildGroupSummary, delivery type badge
Desktop: removed 'Обновлён' column (7→6 cols), grid updated
Server: added WatchdogSec=30 + Type=notify + sd_notify heartbeat to webhook-listener
This commit is contained in:
root 2026-06-18 17:13:05 +00:00
parent aefc588844
commit 0b0626daa5
1 changed files with 8 additions and 8 deletions

View File

@ -139,16 +139,20 @@ export const OrdersTable = ({
{group.displayTitle || group.customerName || group.groupKey} {group.displayTitle || group.customerName || group.groupKey}
</div> </div>
<div className="flex flex-wrap items-center justify-end gap-1.5"> <div className="flex flex-wrap items-center justify-end gap-1.5">
<span className={`inline-flex items-center gap-1 rounded-full px-2.5 py-0.5 text-xs font-semibold ${group.deliveryType === "pickup" ? "bg-[var(--color-accent-soft)] text-[var(--color-accent)]" : "bg-[var(--color-surface)] text-[var(--color-text)]"}`}> <span className={`inline-flex items-center gap-1 rounded-full px-2.5 py-0.5 text-xs font-semibold ${group.deliveryType === "pickup" ? "bg-[var(--color-accent-soft)] text-[var(--color-accent)]" : "bg-[var(--color-surface-strong)] text-[var(--color-text-muted)]"}`}>
{group.deliveryType === "pickup" ? "🏪 Самовывоз" : "🚚 Доставка"} {group.deliveryType === "pickup" ? "🏪 Самовывоз" : "🚚 Доставка"}
</span> </span>
<Badge className="self-start" tone={getOrderGroupStatusTone(group)}> <Badge tone={getOrderGroupStatusTone(group)}>
{getOrderGroupDisplayStatusLabel(group)} {getOrderGroupDisplayStatusLabel(group)}
</Badge> </Badge>
</div> </div>
</div> </div>
<div className="text-sm text-[var(--color-text-muted)]">
{group.customerPhone || ""}
</div>
</div> </div>
<div className="mt-3 text-sm text-[var(--color-text-muted)]">{buildGroupSummary(group)}</div>
<div className="mt-2 text-sm text-[var(--color-text-muted)]">{renderMobileOrderNumbers(group)}</div> <div className="mt-2 text-sm text-[var(--color-text-muted)]">{renderMobileOrderNumbers(group)}</div>
{group.hasDeliveryProblem && ( {group.hasDeliveryProblem && (
<div className="mt-2 rounded-lg border border-[var(--color-warning)] bg-[var(--color-warning-soft)] px-2 py-1 text-xs"> <div className="mt-2 rounded-lg border border-[var(--color-warning)] bg-[var(--color-warning-soft)] px-2 py-1 text-xs">
@ -170,18 +174,17 @@ export const OrdersTable = ({
</div> </div>
) : ( ) : (
<div> <div>
<div className="grid grid-cols-[minmax(180px,2.5fr)_minmax(100px,1.2fr)_minmax(100px,1fr)_minmax(80px,1fr)_minmax(120px,1.2fr)_minmax(80px,0.8fr)_minmax(130px,1.2fr)] gap-0 border-b border-[var(--color-border)] bg-[var(--color-surface-strong)] text-xs uppercase tracking-[0.16em] text-[var(--color-text-muted)]"> <div className="grid grid-cols-[minmax(180px,2.5fr)_minmax(100px,1.2fr)_minmax(100px,1fr)_minmax(80px,1fr)_minmax(120px,1.2fr)_minmax(90px,0.8fr)] gap-0 border-b border-[var(--color-border)] bg-[var(--color-surface-strong)] text-xs uppercase tracking-[0.16em] text-[var(--color-text-muted)]">
<div className="px-5 py-4 font-medium">Группа / Клиент</div> <div className="px-5 py-4 font-medium">Группа / Клиент</div>
<div className="px-5 py-4 font-medium">Счёта</div> <div className="px-5 py-4 font-medium">Счёта</div>
<div className="px-5 py-4 font-medium">Статус</div> <div className="px-5 py-4 font-medium">Статус</div>
<div className="px-5 py-4 font-medium">Водитель</div> <div className="px-5 py-4 font-medium">Водитель</div>
<div className="px-5 py-4 font-medium">Дата доставки</div> <div className="px-5 py-4 font-medium">Дата доставки</div>
<div className="px-5 py-4 font-medium">Тип</div> <div className="px-5 py-4 font-medium">Тип</div>
<div className="px-5 py-4 font-medium">Обновлён</div>
</div> </div>
{orderGroups.map((group) => { {orderGroups.map((group) => {
const hasProblem = group.hasDeliveryProblem; const hasProblem = group.hasDeliveryProblem;
const rowClassName = `grid grid-cols-[minmax(180px,2.5fr)_minmax(100px,1.2fr)_minmax(100px,1fr)_minmax(80px,1fr)_minmax(120px,1.2fr)_minmax(80px,0.8fr)_minmax(130px,1.2fr)] gap-0 w-full border-t border-[var(--color-border)] text-left transition ${ const rowClassName = `grid grid-cols-[minmax(180px,2.5fr)_minmax(100px,1.2fr)_minmax(100px,1fr)_minmax(80px,1fr)_minmax(120px,1.2fr)_minmax(90px,0.8fr)] gap-0 w-full border-t border-[var(--color-border)] text-left transition ${
hasProblem hasProblem
? "bg-[rgba(201,61,61,0.1)] hover:bg-[rgba(201,61,61,0.15)]" ? "bg-[rgba(201,61,61,0.1)] hover:bg-[rgba(201,61,61,0.15)]"
: "hover:bg-[var(--color-accent-soft)]" : "hover:bg-[var(--color-accent-soft)]"
@ -219,9 +222,6 @@ export const OrdersTable = ({
<div className="px-5 py-4 text-sm"> <div className="px-5 py-4 text-sm">
{getDeliveryTypeLabel(group.deliveryType)} {getDeliveryTypeLabel(group.deliveryType)}
</div> </div>
<div className="px-5 py-4 text-sm text-[var(--color-text-muted)]">
{formatDateTime(group.updatedAt)}
</div>
</Button> </Button>
); );
})} })}