3.4 KiB
3.4 KiB
Setup Perizinan API Integration
Overview
Sistem ini mengintegrasikan data perizinan dari API Jakarta dengan database lokal menggunakan cron job yang berjalan setiap hari pada jam 12 malam.
Setup Instructions
1. Environment Configuration
Update file .env
dengan credentials API:
# Perizinan API Configuration
PERIZINAN_API_BASE_URL=https://wsdev.jakarta.go.id/gateway/DataPerizinanLingkungan/1.0
PERIZINAN_API_BEARER_TOKEN=your_actual_bearer_token
PERIZINAN_API_KEY=your_actual_api_key
2. Database Migration
Jalankan migration untuk membuat tabel:
php artisan migrate
3. Manual Sync (Testing)
Untuk test sync manual:
# Sync semua kategori
php artisan perizinan:sync
# Sync kategori tertentu
php artisan perizinan:sync pertek
php artisan perizinan:sync amdal
4. Cron Job Setup (Linux Production Server)
Sistem sudah dikonfigurasi untuk berjalan otomatis setiap hari jam 12 malam. Untuk aktivasi cron job di server Linux:
Opsi 1: Laravel Scheduler (Recommended)
# Edit crontab
crontab -e
# Add this line (runs every minute):
* * * * * cd /var/www/perling && ./run-scheduler.sh >/dev/null 2>&1
Opsi 2: Direct Sync
# Edit crontab
crontab -e
# Add this line (runs daily at midnight):
0 0 * * * cd /var/www/perling && ./sync-perizinan.sh >/dev/null 2>&1
5. Production Deployment
Untuk deployment ke production server, lihat file PRODUCTION_DEPLOY.md
untuk panduan lengkap.
6. Monitoring
Cek log file untuk monitoring sync process:
# Application logs
tail -f storage/logs/laravel.log
# Cron job logs
tail -f storage/logs/cron.log
# Scheduler logs (if using Laravel Scheduler)
tail -f storage/logs/scheduler.log
# Check cron service status
sudo systemctl status cron
# View cron job list
crontab -l
API Response Format
{
"success": true,
"message": "Summary by status retrieved successfully.",
"data": [
{
"id": "ditolak",
"label": "Izin Ditolak",
"value": 1443
},
{
"id": "selesai",
"label": "Izin Selesai",
"value": 8379
},
{
"id": "proses",
"label": "Dalam Proses",
"value": 143
},
{
"id": "total",
"label": "Total Pengajuan",
"value": 9965
}
],
"last_updated": "2025-07-14 08:55:04"
}
Database Schema
Table: perizinan_status
id
- Primary keykategori
- Category (pertek, amdal)status_id
- Status ID (ditolak, selesai, proses, total)label
- Human readable labelvalue
- Count valueapi_last_updated
- Last updated timestamp from APIsync_date
- Date when data was syncedcreated_at
/updated_at
- Laravel timestamps
Features
- ✅ Daily automatic sync at midnight
- ✅ Duplicate prevention (same data per day)
- ✅ Comprehensive logging
- ✅ Fallback to static data if API fails
- ✅ Manual sync commands for testing
- ✅ Database storage with indexing for performance
Troubleshooting
Command not found
php artisan optimize:clear
composer dump-autoload
API Connection Issues
- Verify credentials in
.env
- Check network connectivity
- Review logs for detailed error messages
Database Issues
php artisan migrate:fresh
php artisan migrate