FairRelay / ops /backend-dm /scripts /final_verify.js
MouleeswaranM's picture
Upload folder using huggingface_hub
fcf8749 verified
const { PrismaClient } = require('@prisma/client');
const prisma = new PrismaClient();
async function run() {
console.log("Starting Final Implementation Verification...");
try {
// 1. Ensure a hub exists
let hub = await prisma.virtualHub.findFirst();
if (!hub) {
console.log("Creating temporary hub for verification...");
hub = await prisma.virtualHub.create({
data: {
name: "Mumbai Relay Hub",
latitude: 19.076,
longitude: 72.8777,
type: "RELAY"
}
});
}
console.log(`Using Hub: ${hub.name} (ID: ${hub.id})`);
// 2. Fetch two drivers/trucks for test
const trucks = await prisma.truck.findMany({
include: { owner: true, optimizedRoutes: { where: { status: 'ALLOCATED' }, include: { deliveries: true } } }
});
if (trucks.length < 2) {
throw new Error("Insufficient data for verification. Run seed first.");
}
const truckA = trucks[0];
const truckB = trucks[1];
// Ensure routes are active for verification
const routeA = truckA.optimizedRoutes[0];
const routeB = truckB.optimizedRoutes[0];
if (!routeA || !routeB) {
console.log("No allocated routes found. Seeding or allocation might have failed.");
return;
}
console.log(`Verifying Absorption Logic for Trucks: ${truckA.licensePlate} & ${truckB.licensePlate}`);
// Logic Check: Driver workload
const workload1 = (truckA.owner.totalDistanceKm || 0) + (truckA.owner.totalHoursWorked || 0);
const workload2 = (truckB.owner.totalDistanceKm || 0) + (truckB.owner.totalHoursWorked || 0);
console.log(`Workloads: A=${workload1}, B=${workload2}`);
const primaryDriver = workload1 >= workload2 ? truckA.owner : truckB.owner;
console.log(`Designated Long-Haul Driver: ${primaryDriver.name}`);
// 3. Mock Absorption Opportunity
const opportunity = await prisma.absorptionOpportunity.create({
data: {
route1Id: routeA.id,
route2Id: routeB.id,
overlapDistanceKm: 10.0,
overlapStartTime: new Date(),
overlapEndTime: new Date(Date.now() + 3600000),
nearestHubId: hub.id,
overlapCenterLat: 19.076,
overlapCenterLng: 72.8777,
estimatedMeetTime: new Date(Date.now() + 1800000),
timeWindow: 30,
eligibleDeliveryIds: routeB.deliveries.map(d => d.id).join(','),
truck1DistanceBefore: 5,
truck1DistanceAfter: 5,
truck2DistanceBefore: 5,
truck2DistanceAfter: 5,
totalDistanceSaved: 10.0,
potentialCarbonSaved: 5.0,
spaceRequiredVolume: truckB.currentVolume || 5,
spaceRequiredWeight: truckB.currentWeight || 50,
truck1SpaceAvailable: 100,
truck2SpaceAvailable: 50,
expiresAt: new Date(Date.now() + 3600000),
status: 'PENDING'
}
});
console.log(`Successfully created AbsorptionOpportunity ${opportunity.id}`);
console.log("VERIFICATION COMPLETE: ALL SYSTEMS GO");
} catch (err) {
console.error("Verification error:", err);
} finally {
await prisma.$disconnect();
}
}
run();