Fix jwt-token

This commit is contained in:
2025-09-10 06:13:47 +02:00
parent b0a700a6cf
commit 7877902698
6 changed files with 165 additions and 5 deletions

View File

@@ -1,5 +1,8 @@
const express = require('express');
const { ApiDebugLogger } = require('../utils/apiDebugLogger');
const { DroneDetection, Heartbeat } = require('../models');
const { Op } = require('sequelize');
const { authenticateToken } = require('../middleware/auth');
const router = express.Router();
const logger = new ApiDebugLogger();
@@ -21,4 +24,108 @@ router.get('/debug-test', (req, res) => {
res.json(response);
});
// Get recent detection payloads with raw data
router.get('/detection-payloads', authenticateToken, async (req, res) => {
try {
const { limit = 50, offset = 0, device_id } = req.query;
const whereClause = {
raw_payload: { [Op.ne]: null }
};
if (device_id) {
whereClause.device_id = device_id;
}
const detections = await DroneDetection.findAll({
where: whereClause,
order: [['server_timestamp', 'DESC']],
limit: parseInt(limit),
offset: parseInt(offset),
attributes: [
'id', 'device_id', 'drone_id', 'drone_type', 'rssi', 'freq',
'server_timestamp', 'device_timestamp', 'raw_payload'
]
});
console.log(`🔍 Retrieved ${detections.length} detection payloads for debugging`);
res.json({
success: true,
data: detections,
total: detections.length,
filters: { device_id, limit, offset }
});
} catch (error) {
console.error('Error fetching detection payloads:', error);
res.status(500).json({
success: false,
error: 'Failed to fetch detection payloads'
});
}
});
// Get recent heartbeat payloads with raw data
router.get('/heartbeat-payloads', authenticateToken, async (req, res) => {
try {
const { limit = 50, offset = 0, device_id } = req.query;
const whereClause = {
raw_payload: { [Op.ne]: null }
};
if (device_id) {
whereClause.device_id = device_id;
}
const heartbeats = await Heartbeat.findAll({
where: whereClause,
order: [['received_at', 'DESC']],
limit: parseInt(limit),
offset: parseInt(offset),
attributes: [
'id', 'device_id', 'device_key', 'signal_strength', 'battery_level',
'temperature', 'received_at', 'raw_payload'
]
});
console.log(`🔍 Retrieved ${heartbeats.length} heartbeat payloads for debugging`);
res.json({
success: true,
data: heartbeats,
total: heartbeats.length,
filters: { device_id, limit, offset }
});
} catch (error) {
console.error('Error fetching heartbeat payloads:', error);
res.status(500).json({
success: false,
error: 'Failed to fetch heartbeat payloads'
});
}
});
// Get debug configuration status
router.get('/config', authenticateToken, (req, res) => {
const config = {
STORE_HEARTBEATS: process.env.STORE_HEARTBEATS === 'true',
STORE_DRONE_TYPE0: process.env.STORE_DRONE_TYPE0 === 'true',
LOG_ALL_DETECTIONS: process.env.LOG_ALL_DETECTIONS === 'true',
API_DEBUG: process.env.API_DEBUG === 'true',
STORE_RAW_PAYLOAD: process.env.STORE_RAW_PAYLOAD === 'true',
NODE_ENV: process.env.NODE_ENV
};
console.log('🔍 Debug configuration requested');
res.json({
success: true,
config,
timestamp: new Date().toISOString()
});
});
module.exports = router;

View File

@@ -11,7 +11,8 @@ const { getDroneTypeInfo, getDroneTypeName } = require('../utils/droneTypes');
const DEBUG_CONFIG = {
storeHeartbeats: process.env.STORE_HEARTBEATS === 'true', // Store heartbeat data for debugging
storeNoneDetections: process.env.STORE_DRONE_TYPE0 === 'true', // Store drone_type 0 for debugging
logAllDetections: process.env.LOG_ALL_DETECTIONS === 'true' // Log all detection data
logAllDetections: process.env.LOG_ALL_DETECTIONS === 'true', // Log all detection data
storeRawPayload: process.env.STORE_RAW_PAYLOAD === 'true' // Store complete raw payload for debugging
};
// Initialize services
@@ -192,12 +193,22 @@ async function handleHeartbeat(req, res) {
await device.update({ last_heartbeat: new Date() });
// Create heartbeat record with all optional fields
const heartbeat = await Heartbeat.create({
const heartbeatRecord = {
device_id: deviceId,
device_key: key,
...heartbeatData,
received_at: new Date()
});
};
// Add raw payload if debugging is enabled
if (DEBUG_CONFIG.storeRawPayload) {
heartbeatRecord.raw_payload = req.body;
if (DEBUG_CONFIG.logAllDetections) {
console.log(`🔍 Storing heartbeat raw payload for debugging: ${JSON.stringify(req.body)}`);
}
}
const heartbeat = await Heartbeat.create(heartbeatRecord);
// Emit real-time update via Socket.IO (from original heartbeat route)
req.io.emit('device_heartbeat', {
@@ -290,10 +301,20 @@ async function handleDetection(req, res) {
}
// Create detection record
const detection = await DroneDetection.create({
const detectionRecord = {
...detectionData,
server_timestamp: new Date()
});
};
// Add raw payload if debugging is enabled
if (DEBUG_CONFIG.storeRawPayload) {
detectionRecord.raw_payload = req.body;
if (DEBUG_CONFIG.logAllDetections) {
console.log(`🔍 Storing raw payload for debugging: ${JSON.stringify(req.body)}`);
}
}
const detection = await DroneDetection.create(detectionRecord);
// Process detection through tracking service for movement analysis (from original)
const movementAnalysis = droneTracker.processDetection({