144 lines
9.5 KiB
HTML
144 lines
9.5 KiB
HTML
<!doctype html>
|
||
<html lang="es">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||
<title>Acta de recepción e inspección — HBOX</title>
|
||
<link rel="stylesheet" href="acta.css">
|
||
</head>
|
||
<body>
|
||
<div id="acta"></div>
|
||
<script src="flota.js"></script>
|
||
<script src="series.js"></script>
|
||
<script src="acta.js"></script>
|
||
<script>
|
||
const enciende = v => String(v.enciende || '').startsWith('Sí');
|
||
const corto = v => String(v.continuidad || '').startsWith('Sí');
|
||
const conBat = v => !String(v.bateria_fisica || '').startsWith('La unidad no trae');
|
||
const batMala = v => ['Hinchada','Con manchas','Caliente'].some(t => String(v.bateria_fisica || '').startsWith(t));
|
||
const puedeEnergizar = v => !corto(v);
|
||
|
||
Acta.render({
|
||
tipo: 'recepcion',
|
||
repetible: true,
|
||
tecnicoDesdeUsuario: true,
|
||
nombres: { alan: 'Alán Basurto', daniel: 'Daniel Martínez', leo: 'Leo Rodríguez' },
|
||
unidades: window.SERIES,
|
||
etiquetaSerie: 'Unidad HBOX o componente que se recibe',
|
||
titulo: 'Acta de recepción e inspección',
|
||
subtitulo: 'Una por unidad, al abrir la caja y antes de entrar al puerto. Procedimiento: Ciclo de vida §7.',
|
||
textoOK: 'LISTA PARA ENTRAR',
|
||
intro: 'Compara contra el acta de envío (firmware, SIM, contenido) y busca daño de transporte. '
|
||
+ 'Kit: fuente de 24 V (≥ 1 A; límite en 1 A si lo tiene), multímetro, cable USB con datos, laptop. '
|
||
+ '<b>Orden:</b> inspección → multímetro sin energía → energizar → prueba de vida.',
|
||
secciones: [
|
||
|
||
{ titulo: '0 · Qué llega y dónde',
|
||
items: [
|
||
{ tipo:'fecha', clave:'fecha', req:true, guardaEn:'fecha', txt:'Fecha' },
|
||
{ tipo:'radio', clave:'donde', req:true, guardaEn:'clasificacion', txt:'Dónde se recibe',
|
||
opciones:['Taller Veracruz','Oficina ICAVE','Otra terminal','Querétaro'] },
|
||
{ tipo:'texto', clave:'guia', rows:'1', txt:'Guía o quién la entregó' },
|
||
{ tipo:'texto', clave:'maquina_destino', rows:'1', guardaEn:'maquina_id', txt:'Máquina destino', ph:'FL-JUN-060' },
|
||
] },
|
||
|
||
{ titulo: '1 · El paquete, antes de abrir',
|
||
items: [
|
||
{ tipo:'foto', clave:'f_paquete', req:true, etiqueta:'paquete', txt:'Caja cerrada como llegó.' },
|
||
{ tipo:'radio', clave:'paquete', req:true, txt:'Estado del paquete',
|
||
opciones:['Intacto','Golpeado o aplastado','Abierto o con cinta distinta','Mojado'] },
|
||
{ tipo:'foto', clave:'f_dano_paquete', etiqueta:'paquete-dano', si:v=>!String(v.paquete||'').startsWith('Intacto'), req:true,
|
||
txt:'Daño del paquete, antes de abrir.' },
|
||
] },
|
||
|
||
{ titulo: '2 · Contenido contra el acta de envío',
|
||
sub:'Abre el acta de envío (expediente, arriba) y compara punto por punto.',
|
||
items: [
|
||
{ tipo:'check', clave:'c_unidad', req:true, txt:'Unidad presente; la serie coincide con el envío.' },
|
||
{ tipo:'check', clave:'c_ant_gnss', txt:'Antena GNSS con cable.' },
|
||
{ tipo:'check', clave:'c_ant_lte', txt:'2 antenas LTE.' },
|
||
{ tipo:'check', clave:'c_gx16', txt:'Arnés GX16.' },
|
||
{ tipo:'check', clave:'c_docs', txt:'Hoja con serie, máquina y contacto.' },
|
||
{ tipo:'texto', clave:'faltante', rows:'2', txt:'Faltantes o sobrantes' },
|
||
{ tipo:'foto', clave:'f_contenido', req:true, etiqueta:'contenido', txt:'Contenido desplegado.' },
|
||
] },
|
||
|
||
{ titulo: '3 · Inspección física',
|
||
sub:'Tapa abierta, sin energía. Golpes, piezas sueltas y módulos fuera de su zócalo por la vibración.',
|
||
items: [
|
||
{ tipo:'check', clave:'i_sacudir', req:true, txt:'Sacudida junto al oído: nada suelto.' },
|
||
{ tipo:'radio', clave:'gabinete', req:true, txt:'Gabinete y prensaestopas',
|
||
opciones:['Sin daño','Rayado o marcado (cosmético)','Golpeado, agrietado o deformado','Con humedad adentro'] },
|
||
{ tipo:'check', clave:'i_zocalos', req:true, txt:'Módulos asentados (Blackpill si lo lleva, simpleRTK2B, módem): empujados con el dedo, sin pines fuera.' },
|
||
{ tipo:'check', clave:'i_conectores', req:true, txt:'Meneo de conectores, Dupont y SMA: SMA apretados, GX16 con seguro, ningún cable pelado o pellizcado.' },
|
||
{ tipo:'radio', clave:'placa', req:true, txt:'Tarjeta',
|
||
opciones:['Normal','Componente desprendido o pista levantada','Marca de quemado o decoloración','Corrosión o humedad'] },
|
||
{ tipo:'radio', clave:'bateria_fisica', req:true, txt:'Batería',
|
||
opciones:['Normal','Hinchada o abombada','Con manchas o fuga','Caliente','La unidad no trae batería'],
|
||
aviso:'Hinchada, con fuga o caliente: desconéctala antes de energizar; la unidad <b>no entra</b>. Acta de daño.' },
|
||
{ tipo:'foto', clave:'f_bat', etiqueta:'bateria', si:batMala, req:true, txt:'Batería, dos ángulos.' },
|
||
{ tipo:'foto', clave:'f_interior', req:true, etiqueta:'interior', txt:'Interior con módulos y conectores a la vista.' },
|
||
{ tipo:'foto', clave:'f_dano_unidad', etiqueta:'unidad-dano', txt:'Daño encontrado, de cerca.',
|
||
si:v=>['Golpeado','Con humedad'].some(t=>String(v.gabinete||'').startsWith(t)) || !String(v.placa||'').startsWith('Normal'), req:true },
|
||
{ tipo:'texto', clave:'nota_fisica', rows:'2', txt:'Hallazgos' },
|
||
] },
|
||
|
||
{ titulo: '4 · Continuidad a tierra (sin energía)',
|
||
sub:'Multímetro en Ω, fuente desconectada, batería desconectada si se puede.',
|
||
items: [
|
||
{ tipo:'nota', txt:'<div class="peligro"><b>Nunca energices antes de medir continuidad.</b> Con corto, la fuente lo alimenta y el daño ya no se puede atribuir al transporte.</div>' },
|
||
{ tipo:'medida', clave:'r_24v', req:true, txt:'Entrada 24 V a GND (GX16 1-2)', esperado:'> 10 kΩ (sube mientras cargan los capacitores)', u:'Ω' },
|
||
{ tipo:'medida', clave:'r_5v', req:true, txt:'5 V a GND (Mean Well / P2)', esperado:'> 1 kΩ', u:'Ω' },
|
||
{ tipo:'medida', clave:'r_3v3', txt:'3.3 V a GND', esperado:'> 1 kΩ', u:'Ω' },
|
||
{ tipo:'radio', clave:'continuidad', req:true, txt:'Lectura fija en 0–20 Ω',
|
||
opciones:['No — todo abierto','Sí — hay un corto'],
|
||
aviso:'Con corto <b>no se energiza</b> y la unidad no entra: acta de daño con la lectura y la foto.' },
|
||
{ tipo:'medida', clave:'v_bat_vacio', si:conBat, req:true, txt:'Batería en vacío', esperado:'3.0 – 4.2 V (compara con el envío)', u:'V',
|
||
aviso:'< 3.0 V: se descargó en el trayecto; anótalo. Mucho menor que en el envío: consumo con la unidad "apagada".' },
|
||
] },
|
||
|
||
{ titulo: '5 · Energizar y medir',
|
||
sub:'Solo si el paso 4 salió limpio. 24 V al GX16 (pines 1-2), antenas puestas, tapa abierta, límite 1 A.',
|
||
items: [
|
||
{ tipo:'radio', clave:'enciende', req:true, si:puedeEnergizar, txt:'Encendido y LED de estado',
|
||
opciones:['Sí','No — LED apagado','Enciende pero se apaga','Enciende y la fuente entra en límite de corriente'],
|
||
aviso:'Fuente en límite o algo caliente: <b>apaga ya</b>. No entra; acta de daño.' },
|
||
{ tipo:'medida', clave:'v_24', si:enciende, req:true, txt:'Entrada 24 V', esperado:'23 – 26 V', u:'V' },
|
||
{ tipo:'medida', clave:'v_5', si:enciende, req:true, txt:'Riel 5 V (Mean Well / P2)', esperado:'4.9 – 5.4 V', u:'V',
|
||
aviso:'Bajo 4.8 V el módem se cae con cada ráfaga LTE (PFI del LTC4040). No entra así.' },
|
||
{ tipo:'medida', clave:'v_3v3', si:enciende, txt:'Riel 3.3 V', esperado:'3.20 – 3.40 V', u:'V' },
|
||
{ tipo:'medida', clave:'i_estable', si:enciende, txt:'Corriente a 60 s (si la fuente la muestra)', esperado:'150 – 400 mA con la etapa RTK encendida', u:'mA' },
|
||
{ tipo:'medida', clave:'v_bat_on', si:v=>enciende(v)&&conBat(v), txt:'Batería, unidad encendida', u:'V' },
|
||
] },
|
||
|
||
{ titulo: '6 · Prueba de vida (5 minutos)',
|
||
sub:'Unidad encendida. La línea BOOT sale por la consola USB; lo demás es a simple vista.',
|
||
items: [
|
||
{ tipo:'texto', clave:'fw', rows:'1', si:enciende, req:true, txt:'Firmware (línea BOOT o banner)', ph:'fw=4.0.0' },
|
||
{ tipo:'check', clave:'fw_coincide', si:enciende, req:true, txt:'Firmware igual al del envío.' },
|
||
{ tipo:'radio', clave:'modem', si:enciende, req:true, txt:'LED de red del módem a 3 min',
|
||
opciones:['Lento o fijo (registró)','Rápido (no registra)','Apagado'] },
|
||
{ tipo:'check', clave:'sim_ok', si:enciende, txt:'ICCID igual al del envío.' },
|
||
{ tipo:'radio', clave:'gnss', si:enciende, txt:'GNSS (si hay cielo o ventana)', opciones:['Ve satélites / tiene fix','No ve satélites','No se pudo probar (techo)'] },
|
||
{ tipo:'check', clave:'servidor', si:enciende, txt:'Aparece en el monitor (posición o Salud), confirmado por alguien con acceso.' },
|
||
{ tipo:'archivo', clave:'log', etiqueta:'recepcion', si:enciende, txt:'Captura de consola (opcional)' },
|
||
{ tipo:'check', clave:'cerrada', si:enciende, txt:'Fuente apagada, tapa cerrada, prensaestopas apretados, etiqueta a la vista.' },
|
||
] },
|
||
|
||
{ titulo: '7 · Veredicto',
|
||
items: [
|
||
{ tipo:'radio', clave:'accion', req:true, guardaEn:'accion', txt:'Resultado',
|
||
opciones:[
|
||
'Lista para entrar al puerto',
|
||
'Entra con observaciones (anótalas)',
|
||
'No entra — se queda en el taller para revisión',
|
||
'Rechazada — regresa a Querétaro'],
|
||
aviso:'Corto, no enciende, 5 V bajo o firmware distinto al del envío: <b>no entra</b>, y se registra un acta de daño para marcar la serie.' },
|
||
{ tipo:'texto', clave:'observaciones', rows:'3', txt:'Observaciones' },
|
||
] },
|
||
]
|
||
});
|
||
</script>
|
||
</body>
|
||
</html>
|