mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-29 23:28:11 +00:00
56 lines
2.0 KiB
TypeScript
56 lines
2.0 KiB
TypeScript
import { Entity, Column, Index } from 'typeorm';
|
|
import { BaseEntity } from '@edr/api-common';
|
|
|
|
/**
|
|
* Append-only audit log for fleet activity. One row per transition. Queried by
|
|
* `vehicleId` (vehicle timeline) or `driverId` (driver timeline); an event may
|
|
* carry both so a driver↔vehicle assignment or a mile assignment shows on both.
|
|
* `createdAt` (from BaseEntity) is the event time.
|
|
*/
|
|
export enum FleetEventType {
|
|
DRIVER_REGISTERED = 'DRIVER_REGISTERED',
|
|
VEHICLE_REGISTERED = 'VEHICLE_REGISTERED',
|
|
DRIVER_ASSIGNED = 'DRIVER_ASSIGNED',
|
|
DRIVER_UNASSIGNED = 'DRIVER_UNASSIGNED',
|
|
VEHICLE_STATUS_CHANGED = 'VEHICLE_STATUS_CHANGED',
|
|
VEHICLE_AVAILABILITY_CHANGED = 'VEHICLE_AVAILABILITY_CHANGED',
|
|
MILE_VEHICLE_ASSIGNED = 'MILE_VEHICLE_ASSIGNED',
|
|
MILE_VEHICLE_RELEASED = 'MILE_VEHICLE_RELEASED',
|
|
MILE_STATUS_CHANGED = 'MILE_STATUS_CHANGED',
|
|
}
|
|
|
|
@Entity({ name: 'fleet_events', schema: 'freight' })
|
|
export class FleetEvent extends BaseEntity {
|
|
@Column({ name: 'event_type', type: 'varchar' })
|
|
eventType!: FleetEventType;
|
|
|
|
@Index()
|
|
@Column({ name: 'vehicle_id', type: 'uuid', nullable: true })
|
|
vehicleId?: string | null;
|
|
|
|
@Index()
|
|
@Column({ name: 'driver_id', type: 'uuid', nullable: true })
|
|
driverId?: string | null;
|
|
|
|
@Column({ name: 'first_mile_id', type: 'uuid', nullable: true })
|
|
firstMileId?: string | null;
|
|
|
|
@Column({ name: 'last_mile_id', type: 'uuid', nullable: true })
|
|
lastMileId?: string | null;
|
|
|
|
/** Previous value for a transition (e.g. old status/availability). */
|
|
@Column({ name: 'from_value', type: 'varchar', nullable: true })
|
|
fromValue?: string | null;
|
|
|
|
/** New value for a transition (e.g. new status/availability). */
|
|
@Column({ name: 'to_value', type: 'varchar', nullable: true })
|
|
toValue?: string | null;
|
|
|
|
/** Human-readable summary token (driver name, plate, booking ref, mile). */
|
|
@Column({ name: 'label', type: 'varchar', nullable: true })
|
|
label?: string | null;
|
|
|
|
@Column({ name: 'metadata', type: 'jsonb', nullable: true })
|
|
metadata?: Record<string, unknown> | null;
|
|
}
|