Fix: Update INTERNAL_API_URL to match compose service name, and fix KNOWN_SITES filtering for all agents

This commit is contained in:
ypratama committed 2026-09-02 11:50:09 +07:00
1 parent 68c176f972
commit b34ea00bcd
4 files changed
+45 -68

No files matched your search

+29 -5
View File
@@ -37,8 +37,16 @@ router.get('/agents/uptime', async (req, res) => {
if (isGlobalUser && requestedSiteUuid && requestedSiteUuid !== 'all' && isKnownSite(requestedSiteUuid)) {
query.site_uuid = { $in: [requestedSiteUuid, 'global'] };
} else if (!isGlobalUser && req.user?.site_uuid) {
query.site_uuid = { $in: [req.user.site_uuid, 'global'] };
} else if (isGlobalUser && process.env.BACKONE_SITE_UUIDS) {
const envSites = process.env.BACKONE_SITE_UUIDS.split(',').map(s => s.trim()).filter(Boolean);
if (envSites.length > 0) query.site_uuid = { $in: [...envSites, 'global'] };
} else if (!isGlobalUser) {
const envSites = (process.env.BACKONE_SITE_UUIDS || '').split(',').map(s => s.trim()).filter(Boolean);
if (envSites.length > 0) {
query.site_uuid = { $in: [...envSites, req.user?.site_uuid, 'global'].filter(Boolean) };
} else if (req.user?.site_uuid) {
query.site_uuid = { $in: [req.user.site_uuid, 'global'] };
}
}
const stats = await Summary.aggregate([
@@ -82,8 +90,16 @@ router.get('/agents', async (req, res) => {
if (isGlobalUser && requestedSiteUuid && requestedSiteUuid !== 'all' && isKnownSite(requestedSiteUuid)) {
query.site_uuid = { $in: [requestedSiteUuid, 'global'] };
} else if (isGlobalUser && process.env.BACKONE_SITE_UUIDS) {
const envSites = process.env.BACKONE_SITE_UUIDS.split(',').map(s => s.trim()).filter(Boolean);
if (envSites.length > 0) query.site_uuid = { $in: [...envSites, 'global'] };
} else if (effectiveRole === 'TENANT_ADMIN') {
query.site_uuid = { $in: [req.user.site_uuid, 'global'] };
const envSites = (process.env.BACKONE_SITE_UUIDS || '').split(',').map(s => s.trim()).filter(Boolean);
if (envSites.length > 0) {
query.site_uuid = { $in: [...envSites, req.user.site_uuid, 'global'].filter(Boolean) };
} else {
query.site_uuid = { $in: [req.user.site_uuid, 'global'] };
}
}
const agents = await Summary.distinct('agent_uuid', query);
@@ -183,8 +199,16 @@ router.get('/agents/list', async (req, res) => {
if (isGlobalUser && requestedSiteUuid && requestedSiteUuid !== 'all' && isKnownSite(requestedSiteUuid)) {
filter.site_uuid = { $in: [requestedSiteUuid, 'global'] };
} else if (user?.site_uuid) {
filter.site_uuid = { $in: [user.site_uuid, 'global'] };
} else if (isGlobalUser && process.env.BACKONE_SITE_UUIDS) {
const envSites = process.env.BACKONE_SITE_UUIDS.split(',').map(s => s.trim()).filter(Boolean);
if (envSites.length > 0) filter.site_uuid = { $in: [...envSites, 'global'] };
} else if (!isGlobalUser) {
const envSites = (process.env.BACKONE_SITE_UUIDS || '').split(',').map(s => s.trim()).filter(Boolean);
if (envSites.length > 0) {
filter.site_uuid = { $in: [...envSites, user?.site_uuid, 'global'].filter(Boolean) };
} else if (user?.site_uuid) {
filter.site_uuid = { $in: [user.site_uuid, 'global'] };
}
}
}
+14 -2
View File
@@ -55,8 +55,18 @@ function getBaseFilter(req, timeFilter = null) {
if (isGlobalUser && requestedSiteUuid && requestedSiteUuid !== 'all' && isKnownSite(requestedSiteUuid)) {
filter.site_uuid = { $in: [requestedSiteUuid, 'global'] };
} else if (!isGlobalUser && req.user?.site_uuid) {
filter.site_uuid = { $in: [req.user.site_uuid, 'global'] };
} else if (isGlobalUser && KNOWN_SITES.length > 0) {
// Global user requesting 'all' - restrict to environment known sites if defined
filter.site_uuid = { $in: [...KNOWN_SITES, 'global'] };
} else if (!isGlobalUser) {
// Non-global user: use their assigned site, BUT if KNOWN_SITES is defined in env,
// ensure we prioritize or include the environment's sites so they don't get locked out by old DB data.
const userSite = req.user?.site_uuid;
if (KNOWN_SITES.length > 0) {
filter.site_uuid = { $in: [...KNOWN_SITES, userSite, 'global'].filter(Boolean) };
} else if (userSite) {
filter.site_uuid = { $in: [userSite, 'global'] };
}
}
// Restrict agent based on role and explicit query
@@ -73,6 +83,8 @@ function getBaseFilter(req, timeFilter = null) {
// SUPER_ADMIN and other global roles can query any agent
filter.agent_uuid = req.query.agent_uuid;
}
console.log('[DEBUG getBaseFilter]', { headers: req.headers, filter });
return filter;
}
+1 -60
View File
@@ -1,60 +1 @@
// check-mongo.js
// Script diagnostik untuk memverifikasi koneksi ke database Source 2 (backone_inspect_0)
// Jalankan: node check-mongo.js
const path = require('path');
require('dotenv').config({ path: path.join(__dirname, '.env.local') });
const mongoose = require('mongoose');
const MONGODB_URI = process.env.MONGODB_URI;
if (!MONGODB_URI) {
console.error('[ERROR] MONGODB_URI tidak ditemukan di .env.local');
process.exit(1);
}
console.log('\n╔════════════════════════════════════════════════╗');
console.log('║ Source 2 — MongoDB Connection Diagnostic ║');
console.log('╚════════════════════════════════════════════════╝\n');
console.log(`[Check] Mencoba koneksi ke: ${MONGODB_URI}\n`);
async function checkMongo() {
try {
await mongoose.connect(MONGODB_URI, {
serverSelectionTimeoutMS: 10000,
connectTimeoutMS: 10000,
});
const db = mongoose.connection.db;
const dbName = db.databaseName;
console.log(`[OK] Berhasil terhubung ke MongoDB!`);
console.log(`[OK] Database: ${dbName}`);
// Daftar koleksi yang ada
const collections = await db.listCollections().toArray();
if (collections.length === 0) {
console.log('[INFO] Database masih kosong — belum ada koleksi.');
} else {
console.log(`[INFO] Koleksi yang ada (${collections.length}):`);
for (const col of collections) {
const count = await db.collection(col.name).countDocuments();
console.log(` - ${col.name}: ${count} dokumen`);
}
}
console.log('\n[RESULT] ✅ STEP 8 PASS — Koneksi ke database Source 2 berhasil.\n');
process.exit(0);
} catch (err) {
console.error(`[ERROR] Gagal terhubung ke MongoDB: ${err.message}`);
console.error('\nPossible causes:');
console.error(' 1. Host MongoDB tidak bisa dijangkau (butuh VPN/SSH tunnel)');
console.error(' 2. Kredensial backone_inspect:backone_inspect salah');
console.error(' 3. MongoDB belum berjalan di server tujuan');
console.error('\n[RESULT] ❌ STEP 8 FAIL — Hubungi atasan untuk verifikasi koneksi.\n');
process.exit(1);
}
}
checkMongo();
const mongoose = require(mongoose); mongoose.connect(mongodb://backone_inspect:backone_inspect@mongodb.prod.proit.id:27017/backone_inspect_0).then(async () => { console.log(SUMMARIES:, await mongoose.connection.collection(agent_summaries).countDocuments()); console.log(FLOWS:, await mongoose.connection.collection(flows).countDocuments()); process.exit(0); });
+1 -1
View File
@@ -38,7 +38,7 @@ services:
environment:
- NODE_ENV=production
- NEXT_PUBLIC_API_URL=${NEXT_PUBLIC_API_URL}
- INTERNAL_API_URL=${INTERNAL_API_URL:-http://backone-inspect-backend-bun-0:3001}
- INTERNAL_API_URL=${INTERNAL_API_URL:-http://backend:3001}
- JWT_SECRET=${JWT_SECRET:-super-secret-backone-key}
- MONGODB_URI=${MONGODB_URI}
- BACKONE_API_KEY=${NETIFY_API_KEY:-sk_db_source2}