bb6bd6865c
Actividad -> Tarea, sin nivel "sub" intermedio (no hay una entidad "Tarea" de la que estas fueran sub-, asi que el prefijo sobraba). Tabla subtasks -> tasks (RENAME TABLE idempotente en la migracion 005; 001_initial.sql tambien actualizado para que una instalacion nueva cree la tabla ya con el nombre final, sin pasar por el nombre viejo). Modulo backend, rutas, servicio frontend, pestaña del detalle de actividad, i18n y documentacion actualizados. Sin cambios de comportamiento, solo nombres. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
48 lines
2.1 KiB
JavaScript
48 lines
2.1 KiB
JavaScript
import express from 'express';
|
|
import cors from 'cors';
|
|
import helmet from 'helmet';
|
|
import { env } from './config/env.js';
|
|
import { notFoundHandler, errorHandler } from './middleware/errorHandler.js';
|
|
|
|
import authRoutes from './modules/auth/routes.js';
|
|
import usersRoutes from './modules/users/routes.js';
|
|
import departmentsRoutes from './modules/departments/routes.js';
|
|
import catalogsRoutes from './modules/catalogs/routes.js';
|
|
import projectsRoutes from './modules/projects/routes.js';
|
|
import activitiesRoutes from './modules/activities/routes.js';
|
|
import tasksRoutes from './modules/tasks/routes.js';
|
|
import commentsRoutes from './modules/comments/routes.js';
|
|
import attachmentsRoutes from './modules/attachments/routes.js';
|
|
import notificationsRoutes from './modules/notifications/routes.js';
|
|
import dashboardRoutes from './modules/dashboard/routes.js';
|
|
import auditRoutes from './modules/audit/routes.js';
|
|
import settingsRoutes from './modules/settings/routes.js';
|
|
|
|
export const app = express();
|
|
|
|
app.use(helmet({ contentSecurityPolicy: false }));
|
|
app.use(cors({ origin: env.corsOrigin, credentials: true }));
|
|
app.use(express.json({ limit: '2mb' }));
|
|
|
|
app.get('/health', (req, res) => res.json({ success: true, data: { status: 'ok' }, error: null }));
|
|
|
|
app.use('/api/auth', authRoutes);
|
|
app.use('/api/users', usersRoutes);
|
|
app.use('/api/departments', departmentsRoutes);
|
|
app.use('/api/catalogs', catalogsRoutes);
|
|
app.use('/api/projects', projectsRoutes);
|
|
app.use('/api/activities', activitiesRoutes);
|
|
app.use('/api/comments', commentsRoutes);
|
|
app.use('/api/attachments', attachmentsRoutes);
|
|
app.use('/api/notifications', notificationsRoutes);
|
|
app.use('/api/dashboard', dashboardRoutes);
|
|
app.use('/api/audit', auditRoutes);
|
|
app.use('/api/settings', settingsRoutes);
|
|
// Mas generico (mount en /api sin sub-path propio) — SIEMPRE al final de los /api/*, para no
|
|
// interceptar con su requireAuth interno una ruta que en realidad pertenece a un router mas
|
|
// especifico registrado despues (ver ESTADO.md, deuda tecnica).
|
|
app.use('/api', tasksRoutes);
|
|
|
|
app.use(notFoundHandler);
|
|
app.use(errorHandler);
|