- Implemented HTML pages for datasets, models, training, testing, and results. - Created API endpoints for managing repositories, results, tests, and training sessions. - Added functionality for streaming training progress via Server-Sent Events (SSE). - Introduced a Dockerfile for the ML runner with necessary dependencies. - Developed an SDK for user code execution within the runner container. - Enhanced CSS styles for improved UI layout and navigation. - Established a layout template for consistent HTML structure across pages. - Added JavaScript for dynamic interactions on the models page. - Implemented WebSocket handling for real-time communication with kiosk devices and controllers. - Implemented model registration and management API at /api/models - Added Gitea proxy API for repository interactions at /api/repos - Created results API for listing and comparing training results at /api/results - Developed training management API for enqueueing and retrieving training jobs at /api/trainings - Introduced SSE endpoint for live training progress updates - Added HTML pages for models, datasets, and training management - Created a Dockerfile for the ML runner with necessary dependencies - Developed SDK for user code execution within the runner container - Enhanced CSS styles for improved UI/UX - Implemented WebSocket communication for real-time device and controller interactions in the kiosk system
58 lines
1.6 KiB
JavaScript
58 lines
1.6 KiB
JavaScript
const express = require('express');
|
|
const crypto = require('crypto');
|
|
const parser = require('cookie-parser');
|
|
const app = express();
|
|
|
|
const db = require('./store/db')
|
|
const redis = require('./store/redis');
|
|
const wsHandler = require('./ws/handler');
|
|
|
|
app.use(express.json());
|
|
app.use(parser());
|
|
|
|
// CORS — consenti richieste dalla console e altri client browser
|
|
app.use((req, res, next) => {
|
|
res.header('Access-Control-Allow-Origin', '*');
|
|
res.header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
|
|
res.header('Access-Control-Allow-Headers', 'Content-Type');
|
|
if (req.method === 'OPTIONS') return res.sendStatus(204);
|
|
next();
|
|
});
|
|
|
|
// DATABASE POSTGRESQL
|
|
|
|
app.get('/', (req, res) => {
|
|
res.redirect('/health');
|
|
});
|
|
|
|
app.get('/health', (req, res) => {
|
|
|
|
const sensorsDB = db.checkConnection('sensors');
|
|
const dataDB = db.checkConnection('data');
|
|
|
|
res.json({
|
|
status: 'ok',
|
|
databases: {
|
|
sensors: sensorsDB ? 'connected' : 'disconnected',
|
|
data: dataDB ? 'connected' : 'disconnected'
|
|
},
|
|
redis: redis.checkRedis() ? 'connected' : 'disconnected',
|
|
version: process.env.VERSION,
|
|
build_number: process.env.VERSION_BUILD
|
|
});
|
|
});
|
|
|
|
app.use('/connect', require('./routes/connect'));
|
|
app.use('/sensors', require('./routes/sensors'));
|
|
app.use('/sessions', require('./routes/sessions'));
|
|
app.use('/rules', require('./routes/rules'));
|
|
|
|
const server = app.listen(3000, '0.0.0.0', () => {
|
|
console.log(`Realtime started`);
|
|
});
|
|
|
|
wsHandler.setup(server);
|
|
|
|
// deve essere caricato DOPO setup per avere kioskRelay pronto
|
|
app.use('/kiosk', require('./routes/kiosk'));
|