From a7e617bc6f46d805c4271b28f7d4fb4ddfd0101d Mon Sep 17 00:00:00 2001 From: kkfluous Date: Wed, 1 Apr 2026 21:03:52 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=20hydrogen=5Fenergy?= =?UTF-8?q?=20=E6=95=B0=E6=8D=AE=E5=BA=93=E8=BF=9E=E6=8E=A5=E5=92=8C?= =?UTF-8?q?=E9=87=8C=E7=A8=8B=E7=AE=A1=E7=90=86=E7=B1=BB=E5=9E=8B=E5=AE=9A?= =?UTF-8?q?=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 4.6 --- src/modules/mileage/types.ts | 53 ++++++++++++++++++++++++++++++++++++ src/server/mileage-db.ts | 14 ++++++++++ 2 files changed, 67 insertions(+) create mode 100644 src/modules/mileage/types.ts create mode 100644 src/server/mileage-db.ts diff --git a/src/modules/mileage/types.ts b/src/modules/mileage/types.ts new file mode 100644 index 0000000..9a90cba --- /dev/null +++ b/src/modules/mileage/types.ts @@ -0,0 +1,53 @@ +export interface MonitoringVehicle { + plate: string; + vin: string; + dailyKm: number; + totalKm: number | null; + source: string; + isOnline: boolean; + isDataSynced: boolean; + customer: string | null; + department: string | null; + manager: string | null; +} + +export interface MonitoringData { + vehicles: MonitoringVehicle[]; + updatedAt: string; +} + +export interface TargetSummary { + id: number; + targetName: string; + vehicleCount: number; + totalMileagePerVehicle: number; + annualMileagePerVehicle: number; + assessmentYears: number; + period: string; + todayTotal: number; + cumulativeTotal: number; + avgCompletion: number; + qualifiedCount: number; + yearQualifiedCount: number; + halfQualifiedCount: number; + currentYearTarget: number; + currentYearCompleted: number; + remaining: number; + daysLeft: number; + dailyTarget: number; +} + +export interface TargetVehicle { + plateNumber: string; + todayMileage: number; + totalMileage: number; + completionRate: number; + isQualified: boolean; + currentYearIsQualified: boolean; + dailyRequiredMileage: number; +} + +export interface TrendPoint { + date: string; + mileage: number; +} diff --git a/src/server/mileage-db.ts b/src/server/mileage-db.ts new file mode 100644 index 0000000..31c8c5f --- /dev/null +++ b/src/server/mileage-db.ts @@ -0,0 +1,14 @@ +import mysql from 'mysql2/promise'; + +const mileagePool = mysql.createPool({ + host: '101.133.130.65', + port: 3306, + user: 'bi_reader_02', + password: 'bi_reader_02_Pass', + database: 'hydrogen_energy', + waitForConnections: true, + connectionLimit: 5, + queueLimit: 0, +}); + +export default mileagePool;