Skip to main content

Overview

The System Configuration module manages global settings that affect the entire P.FLEX platform, including shift schedules, security policies, PWA settings, and plant-wide parameters.

Configuration Data Model

The SystemConfig interface defines all system-wide settings:
shiftName1
string
required
Name of the first shift (e.g., “Turno Día”, “Morning Shift”)
shiftTime1
string
required
Start time for first shift in HH:mm format (e.g., “06:00”)
shiftName2
string
required
Name of the second shift (e.g., “Turno Noche”, “Night Shift”)
shiftTime2
string
required
Start time for second shift in HH:mm format (e.g., “18:00”)
passwordExpiryWarningDays
number
required
Number of days before password expiry to show warning (default: 15)
passwordPolicyDays
number
required
Password expiration period in days (default: 90)
plantName
string
required
Display name of the production facility
autoLogoutMinutes
number
required
Automatic logout timeout in minutes for inactive sessions (default: 30)
operatorMessage
string
required
Message displayed on operator terminals (broadcast communication)

Default Configuration

The system initializes with these default values:
// Source: state.service.ts:32-42
readonly config = signal<SystemConfig>({
  shiftName1: 'Turno Día',
  shiftTime1: '06:00',
  shiftName2: 'Turno Noche',
  shiftTime2: '18:00',
  passwordExpiryWarningDays: 15,
  passwordPolicyDays: 90,
  plantName: 'Planta Central - Zona Industrial',
  autoLogoutMinutes: 30,
  operatorMessage: 'Recordar verificar el estado de los clichés y troqueles al finalizar el turno noche. Reportar daños en Incidencias.'
});

Configuration Management

Updating Configuration

Modify system settings using updateConfig():
// Source: admin.service.ts:90-93
updateConfig(newConfig: SystemConfig) {
  this.state.config.set(newConfig);
  this.audit.log(this.state.userName(), this.state.userRole(), 'ADMIN', 
    'Configuración', 
    'Se actualizaron los parámetros globales del sistema.');
}
1

Access Configuration

Navigate to Admin → Configuration to access system settings
2

Modify Settings

Update parameters in their respective sections:
  • Plant parameters
  • Shift schedules
  • Security policies
  • PWA settings
  • Communication messages
3

Save Changes

Click “Guardar Cambios” to apply configuration updates. Changes take effect immediately.
Configuration changes affect all users immediately. Test changes during low-activity periods.

Configuration Sections

Plant Parameters

Configure facility-specific settings:
Configure shift names and start times:
// Source: admin-config.component.ts:32-44
<input [(ngModel)]="tempConfig.shiftTime1" 
       type="time" />
<input [(ngModel)]="tempConfig.shiftName1" 
       type="text" />

<input [(ngModel)]="tempConfig.shiftTime2" 
       type="time" />
<input [(ngModel)]="tempConfig.shiftName2" 
       type="text" />
Morning Shift: Default 06:00 (“Turno Día”)Night Shift: Default 18:00 (“Turno Noche”)
Define production areas as semicolon-separated list:
Inyección; Ensamblaje; Pintura; Control de Calidad; Logística
These areas are used for:
  • Operator area assignments
  • Machine organization
  • Production reporting
Enable global maintenance mode to:
  • Restrict production operations
  • Display maintenance notice to all users
  • Allow only administrative access

PWA & Synchronization

Configure Progressive Web App and offline sync behavior:
Backup Frequency
select
How often to backup data:
  • Cada 1 Hora - Hourly backups
  • Cada 4 Horas - Every 4 hours (default)
  • Diario (00:00) - Daily at midnight
Offline Retention
select
How long to keep offline data:
  • 3 Días - 3 days
  • 7 Días - 7 days (default)
  • 30 Días - 30 days
Conflict Resolution
radio
Strategy for handling sync conflicts:Server Wins: Central data takes priorityDevice Wins: Local changes take priorityManual: Require operator intervention
// Source: admin-config.component.ts:98-108
<label class="flex items-center ...">
  <input checked type="radio" name="conflict-rule" />
  <span>Servidor gana (Prioridad a datos centrales)</span>
</label>
<label class="flex items-center ...">
  <input type="radio" name="conflict-rule" />
  <span>Dispositivo gana (Prioridad local)</span>
</label>
<label class="flex items-center ...">
  <input type="radio" name="conflict-rule" />
  <span>Manual (Requiere intervención)</span>
</label>
Enable “Sincronización solo Wi-Fi” to prevent mobile data usage during sync operations.

Communication to Plant

Broadcast messages to operator terminals:
// Source: admin-config.component.ts:133-136
<textarea [(ngModel)]="tempConfig.operatorMessage" 
          rows="2" 
          class="block w-full ..." />
<div class="...">VISIBLE EN TERMINALES</div>

Operator Message

Messages appear on all operator terminals in real-timeUse cases:
  • Shift handover instructions
  • Safety reminders
  • Maintenance notices
  • Quality alerts
Default: “Recordar verificar el estado de los clichés y troqueles al finalizar el turno noche. Reportar daños en Incidencias.”

Security & Logs

Configure security policies and audit settings:
Password Expiry
number
Days until password expires (default: 90)System warns users based on passwordExpiryWarningDays (default: 15 days before expiry)
Failed Login Attempts
select
Maximum failed login attempts before account lockout:
  • 3 Intentos
  • 5 Intentos (default)
2FA Obligatorio
boolean
Require two-factor authentication for admin roles (Jefatura, Sistemas)Default: Enabled
// Source: admin-config.component.ts:157-159
<input class="..." type="number" value="90" />
<span class="...">días</span>

Configuration Component

The configuration component manages temporary state:
// Source: admin-config.component.ts:213-226
export class AdminConfigComponent {
  state = inject(StateService);
  adminService = inject(AdminService);
  tempConfig: SystemConfig;

  constructor() {
    // Copy current config to temporary state
    this.tempConfig = { ...this.adminService.config() };
  }

  saveConfig() {
    this.adminService.updateConfig(this.tempConfig);
    alert('Configuración guardada correctamente.');
  }
}
Configuration changes are stored in tempConfig until saved, allowing users to cancel modifications.

Audit Activity Preview

The configuration page displays recent audit activity:
// Source: admin-config.component.ts:179-196
<table class="min-w-full divide-y divide-white/5">
  <thead>
    <tr>
      <th>Usuario</th>
      <th>Acción</th>
      <th>Fecha</th>
      <th>IP</th>
    </tr>
  </thead>
  <tbody>
    <tr class="hover:bg-white/5 ...">
      <td class="...">jperez</td>
      <td class="...">Exportar Reporte</td>
      <td class="...">Ayer, 16:30</td>
      <td class="...">192.168.1.18</td>
    </tr>
  </tbody>
</table>
Click “Ver Logs Completos” to access the full audit trail.

Configuration Access Control

Only users with Sistemas role or Admin Total permission can modify system configuration.
Permission check:
// Requires role: 'Sistemas'
// Or permission: 'Admin Total'

Best Practices

Shift Scheduling

  • Set shift times to match physical plant operations
  • Use clear, descriptive shift names
  • Coordinate with HR for accurate shift rosters

Security Policies

  • Enforce 90-day password rotation
  • Enable 2FA for administrative accounts
  • Monitor failed login attempts
  • Review audit logs regularly

Offline Sync

  • Configure appropriate retention periods
  • Use Wi-Fi-only sync for large datasets
  • Test conflict resolution strategy
  • Monitor sync status and errors

Operator Communication

  • Keep messages concise and actionable
  • Update before shift changes
  • Include safety-critical information
  • Verify message visibility on terminals

Audit Logging

All configuration changes are logged:
// Source: admin.service.ts:92
this.audit.log(this.state.userName(), this.state.userRole(), 
  'ADMIN', 'Configuración', 
  'Se actualizaron los parámetros globales del sistema.');
FieldValue
ModuleADMIN
ActionConfiguración
Details”Se actualizaron los parámetros globales del sistema.”
UserCurrent logged-in user
TimestampAutomatic
IPUser’s IP address

Code Reference

Key source files:
  • Data Model: src/features/admin/models/admin.models.ts:20-30
  • Service Method: src/features/admin/services/admin.service.ts:86-93
  • UI Component: src/features/admin/components/admin-config.component.ts
  • Default Config: src/services/state.service.ts:32-42

Build docs developers (and LLMs) love