feat: complete implementation of dynamic GlobeMap coordinates, TDD workflow, and UI/UX enhancements

This commit is contained in:
Rafif-Riqullah-Siregar committed 2026-07-07 23:25:59 +07:00
1 parent 8ba1d8f959
commit 764c87c3c8
75 files changed
+3666 -1153

No files matched your search

+97
View File
@@ -0,0 +1,97 @@
const mongoose = require('mongoose');
const baseOptions = { timestamps: { createdAt: 'created_at', updatedAt: 'updated_at' } };
// Schema for Timeline / General Summary
const SummarySchema = new mongoose.Schema({
timestamp: { type: Date, required: true, index: true },
agent_uuid: { type: String, index: true },
site_uuid: { type: String, index: true },
total_devices: Number,
active_flows: Number,
bandwidth_down: Number,
bandwidth_up: Number,
download_speed: Number,
upload_speed: Number,
total_threats: Number
}, baseOptions);
// Schema for Top Apps
const AppStatSchema = new mongoose.Schema({
timestamp: { type: Date, required: true, index: true },
agent_uuid: { type: String, index: true },
site_uuid: { type: String, index: true },
app_label: { type: String, required: true },
download: Number,
upload: Number,
flows: Number
}, baseOptions);
// Schema for Protocols
const ProtocolStatSchema = new mongoose.Schema({
timestamp: { type: Date, required: true, index: true },
agent_uuid: { type: String, index: true },
site_uuid: { type: String, index: true },
protocol_name: { type: String, required: true },
download: Number,
upload: Number,
flows: Number
}, baseOptions);
// Schema for Devices
const DeviceStatSchema = new mongoose.Schema({
timestamp: { type: Date, required: true, index: true },
agent_uuid: { type: String, index: true },
site_uuid: { type: String, index: true },
ip_address: { type: String, required: true, index: true },
mac_address: { type: String, index: true },
device_label: String,
device_type: String,
os_label: String,
manufacturer: String,
download: Number,
upload: Number,
flows: Number,
last_seen: String
}, baseOptions);
// Schema for Flows
const FlowSchema = new mongoose.Schema({
timestamp: { type: Date, required: true, index: true },
agent_uuid: { type: String, index: true },
site_uuid: { type: String, index: true },
flow_id: String,
src_ip: { type: String, index: true },
src_mac: String,
dst_ip: { type: String, index: true },
dst_port: Number,
protocol: String,
app_label: String,
domain: String,
download: Number,
upload: Number,
first_seen: String,
last_seen: String
}, baseOptions);
// Schema for Threats
const ThreatSchema = new mongoose.Schema({
timestamp: { type: Date, required: true, index: true },
agent_uuid: { type: String, index: true },
site_uuid: { type: String, index: true },
threat_id: String,
threat_type: String,
severity: String,
src_ip: String,
dst_ip: String,
details: mongoose.Schema.Types.Mixed
}, baseOptions);
module.exports = {
Summary: mongoose.model('Summary', SummarySchema),
AppStat: mongoose.model('AppStat', AppStatSchema),
ProtocolStat: mongoose.model('ProtocolStat', ProtocolStatSchema),
DeviceStat: mongoose.model('DeviceStat', DeviceStatSchema),
Flow: mongoose.model('Flow', FlowSchema),
Threat: mongoose.model('Threat', ThreatSchema)
};