Logistics Service Module - Wiz-DevTech/prettygirllz GitHub Wiki

Logistics Service Module

Overview

The Logistics Service is a core module responsible for managing package deliveries through multiple channels, including Home Delivery (HDS) and Drop Zone Network (DZN). It includes orchestration, fraud detection, and error handling to ensure reliable and secure deliveries.

This document provides setup, testing, and deployment instructions for the Logistics Service module.


Features

Delivery Orchestration – Routes packages to Home Delivery or Drop Zones
Fraud Detection – Monitors and blocks suspicious deliveries
Error Handling – Retries, fallbacks, and dead-letter queues for failed deliveries
Offline Support – Caches data when network connectivity is lost
QR-Based Drop Zones – Secure package handoff using QR verification


Prerequisites

Before running the Logistics Service, ensure you have:

  • Java 17+ (or Node.js 16+ for JS implementation)
  • Docker (for containerized dependencies)
  • PostgreSQL (or MongoDB for NoSQL option)
  • Kafka / RabbitMQ (for async event handling)
  • Redis (for caching)

Setup & Installation

1. Clone the Repository

git clone https://github.com/your-repo/logistics-service.git
cd logistics-service

2. Configure Environment Variables

Create a .env file:

DB_URL=jdbc:postgresql://localhost:5432/logistics
DB_USER=admin
DB_PASSWORD=admin123

KAFKA_BROKERS=localhost:9092
REDIS_HOST=localhost
REDIS_PORT=6379

FRAUD_DETECTION_ENABLED=true
MAX_RETRIES=3

3. Run Dependencies via Docker

docker-compose up -d postgres kafka redis

4. Build & Run the Service

Java (Spring Boot)

./mvnw clean install
./mvnw spring-boot:run

Node.js

npm install
npm start

Testing the Logistics Service

1. Unit Tests

# Java
./mvnw test

# Node.js
npm test

2. Integration Tests

Tests interactions with PostgreSQL, Kafka, and Redis:

./mvnw verify -Pintegration-test
# or for Node.js
npm run test:integration

3. API Testing (Postman/curl)

Route a Delivery

curl -X POST http://localhost:8080/api/deliveries \
  -H "Content-Type: application/json" \
  -d '{
    "orderId": "12345",
    "destination": "home",
    "address": "123 Main St"
  }'

Simulate Fraud Detection

curl -X POST http://localhost:8080/api/fraud/check \
  -H "Content-Type: application/json" \
  -d '{
    "orderId": "12345",
    "userId": "user789",
    "location": "unexpected_country"
  }'

Expected Response (if fraud detected):

{ "status": "BLOCKED", "reason": "Suspicious location" }

4. Error Handling Tests

Trigger Retry Mechanism

# Mock a failing HDS endpoint
curl -X POST http://localhost:8080/api/deliveries \
  -H "Content-Type: application/json" \
  -d '{
    "orderId": "fail_test",
    "destination": "home",
    "simulateFailure": true
  }'

Expected Behavior:

  • Retries 3 times
  • Falls back to Drop Zone if Home Delivery fails
  • Logs errors in ELK/Redis

Deployment

Kubernetes (Helm Chart)

helm install logistics-service ./charts/logistics

AWS ECS

aws ecs create-service --cluster logistics-cluster --task-definition logistics-task

Monitoring & Logging

  • Prometheus/Grafana – Metrics tracking
  • ELK Stack – Log analysis
  • Sentry – Error tracking

Troubleshooting

Issue Solution
DB Connection Failed Check .env credentials
Kafka Timeout Ensure Kafka brokers are reachable
High Fraud False Positives Adjust fraud detection thresholds

Contributing

Feel free to submit PRs or report issues in the GitHub repo.


🎉 Happy Testing! 🚚📦