código completo FLUJOS — snapshot limpio sin datos scrapeados

Incluye: backend Node.js/Express, visualización 3D (Three.js/3d-force-graph),
scrapers Wikipedia/noticias/imágenes, analizador Qwen3-VL, pipeline maestro
con systemd timer, fixes de seguridad (NoSQL injection, XSS, ReDoS, port
binding) y documentación técnica completa en docs/.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
CAPITANSITO 2026-04-21 23:45:29 +02:00
parent 013fe673f3
commit 83f67b76b4
190 changed files with 193337 additions and 2 deletions

View file

@ -0,0 +1,11 @@
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const FlowSchema = new Schema({
sourceNode: { type: Schema.Types.ObjectId, ref: 'Node' },
targetNode: { type: Schema.Types.ObjectId, ref: 'Node' },
intensity: Number,
// Aquí puedes incluir cualquier metadato del flujo que necesites.
});
module.exports = mongoose.model('Flow', FlowSchema);

View file

@ -0,0 +1,10 @@
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const NodeSchema = new Schema({
coordinates: { x: Number, y: Number, z: Number },
type: String,
// Aquí puedes incluir cualquier metadato del nodo que necesites.
});
module.exports = mongoose.model('Node', NodeSchema);

View file

View file

@ -0,0 +1,13 @@
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const ProjectSchema = new Schema({
user: { type: Schema.Types.ObjectId, ref: 'User' },
nodes: [{ type: Schema.Types.ObjectId, ref: 'Node' }],
flows: [{ type: Schema.Types.ObjectId, ref: 'Flow' }],
// Aquí puedes incluir cualquier metadato del proyecto que necesites.
});
module.exports = mongoose.model('Project', ProjectSchema);

View file

@ -0,0 +1,10 @@
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const UserSchema = new Schema({
username: String,
password: String,
// Aquí puedes incluir cualquier metadato del usuario que necesites.
});
module.exports = mongoose.model('User', UserSchema);