import { randomUUID } from 'node:crypto'; import { calculateCertificationStatus } from '../utils.js'; const makeCertification = (input) => { const { status, daysUntilExpiry, isBlocked } = calculateCertificationStatus(input.expiryDate); return { id: `cert-${randomUUID()}`, ...input, status, daysUntilExpiry, isBlocked, }; }; const makeCourseAssignment = (input) => ({ id: `course-${randomUUID()}`, ...input, }); const makeEmbarkation = (input) => { const start = new Date(input.startDate); const end = new Date(input.endDate); const diffDays = Math.max(1, Math.ceil((end.getTime() - start.getTime()) / (1000 * 60 * 60 * 24))); const daily = input.dailyRate ?? 0; const total = diffDays * daily + (input.transportationCost ?? 0); return { id: `emb-${randomUUID()}`, ...input, totalCost: Number(total.toFixed(2)), }; }; export const seedData = { employees: [ { id: 'emp-1', name: 'Joao Silva', area: 'Perfuração', role: 'colaborador', email: 'joao.silva@petrobras.com.br', password: 'colaborador123', profession: 'Tecnico de Perfuração Offshore', address: 'Rua das Plataformas, 120 - Macae/RJ', nationality: 'Brasileiro', zipCode: '27930-070', street: 'Rua das Plataformas', streetNumber: '120', neighborhood: 'Centro', city: 'Macae', state: 'RJ', platform: 'P-70', cpf: '123.456.789-00', rg: '12.345.678-9', crea: '123456/RJ', costCenter: 'CC-OPER-01', branch: 'Base Macae', registrationId: 'REG-0001', budgetClassification: 'OPEX', }, { id: 'emp-2', name: 'Maria Santos', area: 'Sms', role: 'supervisor', email: 'maria.santos@petrobras.com.br', password: '123456', profession: 'Supervisora de Sms Offshore', address: 'Av. Atlantica, 450 - Rio de Janeiro/RJ', nationality: 'Brasileira', zipCode: '22021-001', street: 'Av. Atlantica', streetNumber: '450', neighborhood: 'Copacabana', city: 'Rio de Janeiro', state: 'RJ', platform: 'P-70', cpf: '987.654.321-00', rg: '98.765.432-1', crea: '654321/RJ', costCenter: 'CC-SMS-02', branch: 'Escritorio Rio', registrationId: 'REG-0002', budgetClassification: 'CAPEX', }, { id: 'emp-3', name: 'Ana Beatriz', area: 'Produção', role: 'colaborador', email: 'ana.beatriz@petrobras.com.br', password: 'colaborador123', profession: 'Engenheira de Produção Offshore', address: 'Rua da Lapa, 90 - Rio de Janeiro/RJ', nationality: 'Brasileira', zipCode: '20021-180', street: 'Rua da Lapa', streetNumber: '90', neighborhood: 'Lapa', city: 'Rio de Janeiro', state: 'RJ', platform: 'P-66', cpf: '321.654.987-00', rg: '34.567.890-1', crea: '789012/RJ', costCenter: 'CC-PROD-03', branch: 'Refinaria Duque de Caxias', registrationId: 'REG-0003', budgetClassification: 'OPEX', }, { id: 'emp-hotel', name: 'Central Rede Hoteleira', area: 'logística', role: 'hotel', email: 'hoteis', password: '123456', profession: 'Administrador da rede hoteleira parceira', address: 'Av. Atlântica, 1000 - Macaé/RJ', nationality: 'Brasileiro', zipCode: '27910-000', street: 'Av. Atlântica', streetNumber: '1000', neighborhood: 'Praia Campista', city: 'Macaé', state: 'RJ', platform: 'Rede Parceira', cpf: '000.000.000-00', rg: '00.000.000-0', crea: '', costCenter: 'CC-HOTEL-01', branch: 'Central Hoteleira', registrationId: 'REG-HOTEL', budgetClassification: 'OPEX', }, { id: 'emp-training', name: 'Central Centros de Treinamento', area: 'qualidade', role: 'training', email: 'treinamentos', password: '123456', profession: 'Gestor da rede de treinamentos parceira', address: 'Av. Prefeito Antônio Curty, 320 - Rio das Ostras/RJ', nationality: 'Brasileiro', zipCode: '28890-000', street: 'Av. Prefeito Antônio Curty', streetNumber: '320', neighborhood: 'Centro', city: 'Rio das Ostras', state: 'RJ', platform: 'Rede Treinamentos', cpf: '000.000.000-00', rg: '00.000.000-0', crea: '', costCenter: 'CC-TREIN-01', branch: 'Central Treinamentos', registrationId: 'REG-TREIN', budgetClassification: 'OPEX', }, ], certifications: [ makeCertification({ employeeId: 'emp-1', courseName: 'NR-35 Trabalho em Altura', area: 'Sms', issueDate: '2024-01-15', expiryDate: '2026-01-15', provider: 'SENAI Macae', courseDate: '2024-01-10', duration: '24 horas', instructor: 'Carlos Oliveira', location: 'Macae - RJ', workload: '24 horas', }), makeCertification({ employeeId: 'emp-1', courseName: 'NR-13 Vasos de Pressao', area: 'Sms', issueDate: '2023-09-01', expiryDate: '2025-09-01', provider: 'Instituto TecSeg', courseDate: '2023-08-25', duration: '40 horas', instructor: 'Fernanda Costa', location: 'Rio de Janeiro - RJ', workload: '40 horas', }), makeCertification({ employeeId: 'emp-2', courseName: 'NR-33 Espaços Confinados (Supervisor)', area: 'Sms', issueDate: '2024-03-05', expiryDate: '2025-03-05', provider: 'SafetyMais', courseDate: '2024-03-01', duration: '24 horas', instructor: 'Paulo Ramos', location: 'Rio de Janeiro - RJ', workload: '24 horas', }), makeCertification({ employeeId: 'emp-3', courseName: 'HUET - Treinamento de Escape de Aeronave Submersa', area: 'Produção', issueDate: '2024-06-12', expiryDate: '2026-06-12', provider: 'Falck Safety', courseDate: '2024-06-10', duration: '16 horas', instructor: 'Marcos Lima', location: 'Niteroi - RJ', workload: '16 horas', }), ], notifications: [ { id: `not-${randomUUID()}`, type: 'new-certification', title: 'Nova certificacao recomendada', message: 'Recomendamos a reciclagem da NR-35 para o colaborador Joao Silva.', area: 'Sms', employeeId: 'emp-1', isRead: false, createdAt: new Date().toISOString(), metadata: { certificationName: 'NR-35 Reciclagem', }, }, { id: `not-${randomUUID()}`, type: 'provider-suggestion', title: 'Fornecedores sugeridos para NR-13', message: 'Encontramos fornecedores proximos para o curso NR-13 Vasos de Pressao.', area: 'Sms', employeeId: 'emp-1', isRead: false, createdAt: new Date().toISOString(), metadata: { certificationName: 'NR-13 Vasos de Pressao', providers: [ { id: `provider-${randomUUID()}`, name: 'TecSafety Treinamentos', location: 'Macae - RJ', distance: '32 km', contact: '(22) 3333-9000', areas: ['Sms', 'qualidade'], }, ], }, }, ], embarkations: [ makeEmbarkation({ employeeId: 'emp-1', startDate: '2025-01-10', endDate: '2025-01-24', platform: 'P-70', notes: 'Turno de 14 dias - Produção', hotel: 'Hotel Atlantico', hotelAddress: 'Av. Atlantica, 1500 - Macae/RJ', dailyRate: 280, transportation: 'Van + Helicoptero', transportationCost: 1500, status: 'confirmed', }), ], courseAssignments: [ makeCourseAssignment({ employeeId: 'emp-1', courseName: 'NR-13 Reciclagem', area: 'Sms', assignedBy: 'emp-2', assignedDate: '2024-12-15', dueDate: '2025-02-28', courseDate: '2025-01-20', courseLocation: 'Instituto TecSeg - Rio de Janeiro/RJ', durationDays: 3, priority: 'high', status: 'pending', notes: 'Curso obrigatorio para manutencao das operacoes.', provider: 'Instituto TecSeg', estimatedCost: 1800, hotel: 'Hotel Atlantico', ticketHotel: true, transportation: 'Transfer + Voo Azul', transportationProvided: true, mealVoucherIncluded: true, costCenter: 'CC-OPER-01', branch: 'Base Macae', budgetClassification: 'OPEX', confirmationStatus: 'pendente', }), makeCourseAssignment({ employeeId: 'emp-2', courseName: 'NR-35 Trabalho em Altura', area: 'Sms', assignedBy: 'emp-2', assignedDate: '2025-01-10', dueDate: '2025-03-15', courseDate: '2025-03-05', courseLocation: 'Consultare Treinamentos - Rio de Janeiro/RJ', durationDays: 2, priority: 'high', status: 'pending', notes: 'Treinamento obrigatório para acesso offshore.', provider: 'Consultare Treinamentos', estimatedCost: 950, transportation: 'Empresa', transportationProvided: true, mealVoucherIncluded: true, costCenter: 'CC-SMS-02', branch: 'Escritorio Rio', budgetClassification: 'CAPEX', confirmationStatus: 'pendente', }), makeCourseAssignment({ employeeId: 'emp-3', courseName: 'Curso de Movimentação de Cargas Offshore', area: 'Produção', assignedBy: 'emp-2', assignedDate: '2025-02-01', dueDate: '2025-04-30', courseDate: '2025-04-10', courseLocation: 'RelyOn Nutec - Macae/RJ', durationDays: 3, priority: 'medium', status: 'pending', notes: 'Recomendado para nova campanha de produção.', provider: 'RelyOn Nutec', estimatedCost: 2100, transportation: 'Próprio', transportationProvided: false, mealVoucherIncluded: false, costCenter: 'CC-PROD-03', branch: 'Refinaria Duque de Caxias', budgetClassification: 'CAPEX', confirmationStatus: 'pendente', }), ], trainingMatrixEntries: [], trainingCenters: [ { id: `tc-${randomUUID()}`, companyName: 'Instituto TecSeg', address: 'Av. Rio Branco, 123 - Rio de Janeiro, RJ', city: 'Rio de Janeiro', state: 'RJ', zipCode: '20040-003', courses: ['NR-35', 'NR-13', 'Combate a Incêndio'], areas: ['Sms', 'qualidade'], phone: '(21) 3333-9000', email: 'contato@tecseg.com.br', cnpj: '12.345.678/0001-90', createdAt: new Date().toISOString(), }, ], documents: [], auditLogs: [], dataProcessingActivities: [ { id: `dpa-${randomUUID()}`, dataCategory: 'Dados de treinamentos e certificações', purpose: 'Gerenciar habilidades obrigatórias para acesso a plataformas e conformidade com a NR-37', legalBasis: 'obrigacao-legal', retentionPeriod: '5 anos após desligamento', controllerArea: 'Sms', dataSubjects: ['Funcionarios', 'Terceirizados'], lastReviewAt: new Date().toISOString(), }, { id: `dpa-${randomUUID()}`, dataCategory: 'Registros de embarque e desembarque', purpose: 'Controle operacional de logística offshore e segurança de acesso', legalBasis: 'seguranca-processos', retentionPeriod: '2 anos', controllerArea: 'Corporativo', dataSubjects: ['Funcionarios', 'Terceirizados', 'Visitantes'], lastReviewAt: new Date().toISOString(), }, ], complianceEvents: [], hotelBulletins: [ { id: `hotel-${randomUUID()}`, hotelName: 'Hotel Offshore Atlântico', referenceDate: new Date().toISOString().split('T')[0], availableRooms: 18, breakfastIncluded: true, checkInTime: '14:00', checkOutTime: '10:00', guestNotice: 'Apresentar badge corporativo na recepção e documento oficial.', operationalAlerts: 'Transporte interno disponível das 05h às 23h.', notes: 'Reserva prioritária para plataformas P-70 e P-66.', createdAt: new Date().toISOString(), createdBy: 'emp-hotel', }, ], routeMatches: [], }; //# sourceMappingURL=seed.js.map