diff --git a/02-Architecture-Software/2026-10-28_Drogheda_Flujo-Compras-e-Inventario_ES_v1.0.md b/02-Architecture-Software/2026-10-28_Drogheda_Flujo-Compras-e-Inventario_ES_v1.0.md new file mode 100644 index 0000000..5871768 --- /dev/null +++ b/02-Architecture-Software/2026-10-28_Drogheda_Flujo-Compras-e-Inventario_ES_v1.0.md @@ -0,0 +1,157 @@ +--- +title: "Cómo funciona el portal para compras e inventario: el flujo acordado en la junta del 28-oct" +date: 2026-10-28 +tags: [project-drogheda, hbox, compras, inventario, cotizador, integracion, portal] +estado: flujo acordado en la junta del 28-oct; fase 1 del portal construida y probada (58 pruebas) +--- + +# Cómo funciona el portal para compras e inventario + +**28-oct-2026 · v1.0 · Claude (CTO/CSO), de la junta de dirección del 28-oct (10:17) con Leo y Adriana.** +Reemplaza el flujo de [Cotizador ↔ centro de mando](integracion-cotizador.md) del 27-oct en la parte del +**proceso**: aquel documento describía una sola puerta de autorización en compras; en la junta quedaron **dos +puertas de Adriana** y el orden real de cotización y pago. El contrato técnico entre los dos sistemas (las rutas +firmadas, los avisos, la base) **no cambia** y sigue siendo el de ese documento y el de las +[instrucciones para el cotizador](integracion-cotizador-instrucciones.md). + +!!! warning "Arranca mañana" + Leo, en la junta: **«a partir de mañana todas las requisiciones relacionadas HBOX se van a hacer por el + sistema»**. Alcance: **solo instalaciones de HBOX**; mantenimiento se evalúa en enero. Lo que llegue por + WhatsApp se regresa al sistema. + +## Por qué + +Hoy el material se pide por WhatsApp, por teléfono y en tres direcciones a la vez. Leo, en la junta: *«te hablan +a ti, le hablan a Tania, me hablan a mí y ya es un cagadero»*. El resultado es que nadie sabe qué se pidió, qué se +autorizó, qué viene en camino ni qué llegó — y cuando llega, no entra al inventario de nadie. Un solo hilo, del +que pide al que recibe, arregla las dos cosas: la trazabilidad del gasto y las existencias por sitio. + +## El flujo, paso por paso + +| # | Dónde | Quién | Qué pasa | +|---|---|---|---| +| 1 | **Cotizador** | El responsable del sitio | Levanta la requisición en el proyecto DROGHEDA, con **sitio de entrega** y los renglones de material. Sin precios: solo qué necesita y cuánto. | +| 2 | **Cotizador** | **Adriana** | **Autoriza renglón por renglón.** Puede regresar un renglón con comentarios; es ida y vuelta con quien pidió hasta que queda limpio. Leo: *«vamos a autorizar ítem por ítem si es necesario, para que no pidan tampoco de más»*. | +| 3 | **Cotizador** | **Tania** (con Efraín y Leo) | Con la requisición autorizada, cotiza: ferreterías (incluido Edwin), Mercado Libre, o Jesús lleva la lista a la ferretería. Marca por renglón si existe el ítem exacto, si el proveedor ofrece otra marca, o si hay que aclararlo. | +| 4 | **Cotizador** | **Adriana** | **Visto bueno** de la cotización: que sea el material correcto, las cantidades correctas y **el lugar de entrega correcto**. | +| 5 | **Cotizador** | **Tania** | Con el visto bueno sale la orden de pago; paga y empieza el tiempo de entrega. | +| 6 | **Cotizador** | Compras o quien pidió | Cuando el proveedor manda el material: **En camino**, con paquetería, guía y fecha estimada. → El centro de mando lo pone **en camino** en la pestaña del sitio en [Inventario](/tableros/inventario/). | +| 7 | **Centro de mando** | **El responsable del sitio** | Abre [Compras](/tableros/compras/) y da **Recibir** con lo que llegó **de verdad** (puede ser menos). Eso da de alta el material en el inventario de su sitio. | +| 8 | **Cotizador** (solo) | — | Cada 15 min consulta las recepciones: si llegó todo, cierra la requisición solo; si llegó una parte, lo anota. | + +**Quién recibe en cada sitio:** Alán (VER · ICAVE) · Jesús Honorato (ZLO · TIMSA) · Miguel (ESE · EIT) · +Antonio (LZC · LCT) · Jesús Romero (QRO · Querétaro). + +**Quién puede levantar requisiciones** (lo que Leo nombró en la junta, a confirmar por Adriana): Jesús Romero, +Miguel, Antonio, Daniel, **Alán — que entra en lugar de Paola** — y Adriana. + +## Lo que decide cada sistema + +El reparto no cambió y conviene tenerlo claro porque es lo que evita duplicar trabajo: + +| | Cotizador | Centro de mando | +|---|---|---| +| Dinero, montos, cotizaciones, pagos, proveedores | **Sí** | nunca | +| Autorización de la requisición y de la OC | **Sí** (Adriana, dos puertas) | nunca | +| Qué material, cuánto y a qué sitio va | **Sí** | lo recibe y lo refleja | +| Existencias por sitio, en camino, kit de instalación | — | **Sí** | +| Quién recibió, cuánto llegó y cuándo | lo consulta | **Sí** | +| El pendiente de cada OC, con su responsable y su fecha | — | **Sí** | + +**El centro de mando no recibe montos.** Si un aviso del cotizador los trae, se descartan antes de guardar: esta +página la ve todo el equipo (D-27-4, confirmado en la junta). + +## Decisiones + +| # | Decisión | Estado | +|---|---|---| +| D-28-1 | La autorización de la requisición es de **Adriana, renglón por renglón**, y hay un **segundo visto bueno** suyo sobre la cotización antes del pago. Corrige D-27-4, que dejaba la autorización en compras (Efraín, Tania, Leo). | **Tomada** (junta 28-oct) | +| D-28-2 | El sistema arranca **el 29-oct**, solo para **instalaciones de HBOX**. Mantenimiento se evalúa en enero. | **Tomada** (junta 28-oct) | +| D-28-3 | **Alán** entra en lugar de **Paola** como autorizado para levantar requisiciones. | **Tomada** (junta 28-oct) | +| D-28-4 | El material se recibe en el centro de mando **desde el celular, ítem por ítem**, y eso crea el movimiento de entrada en el inventario del sitio. Es D-27-1, ahora con la pantalla que lo hace. | **Tomada** (junta 28-oct) | +| D-28-5 | El **conteo físico de inventario es recurrente**: una vez al mes (Querétaro ya quedó; los puertos, esta semana). | **Tomada** (junta 28-oct) | +| D-27-3 | Códigos de sitio **VER · ZLO · ESE · LZC · QRO**. Leo ya agregó el campo de sitio en el cotizador durante la junta. | Falta el «sí» formal (`d-27-3-sitios-oc`) | +| D-27-2 | Base **SQLite** en el servidor del sitio. Construida y probada. | **Tomada** (27-oct) · **hecha** | + +## Lo que ya está construido (fase 1 del portal) + +Todo esto está escrito y probado; falta que Leo lo publique. + +- **`backend/compras.py`** — las órdenes de compra en SQLite (`/srv/projects/drogheda/drogheda.db`, modo WAL), las + tres rutas firmadas de integración, los envíos «en camino» por sitio, el pendiente de cada OC y el cierre + automático al recibir todo. **58 pruebas** (`backend/tests-1028.sh`), todas pasando. +- **Página [Compras](/tableros/compras/)** — una pestaña por sitio, una tarjeta por OC con sus renglones, el botón + **Recibir** (completo o en parte) y el botón **Ligar** para los renglones que llegaron sin ítem de inventario. + Sin montos. +- **Las dos puertas para recibir funcionan:** desde Compras (la OC completa de una vez) o desde el envío «en + camino» de [Inventario](/tableros/inventario/). Las dos terminan en lo mismo y Compras se entera de ambas. +- **Un pendiente por OC:** «Recibir OC-… en ZLO», pista Compras, el sitio de entrega, el responsable del sitio y + vence el día de la entrega. Se cierra solo cuando llega todo; si llega una parte, se queda abierto y dice qué + falta. **No se cierra a mano.** +- **Las rondas de PRUEBA del cotizador** (`"prueba": true`) se guardan aparte: no tocan el inventario ni el tablero. + +**Para encenderlo** Leo genera el secreto (`openssl rand -hex 32`) y lo pone en los dos lados: +`COTIZADOR_SECRETO` en `actas-hbox.service` y `PORTAL_SECRETO` en las propiedades del script del cotizador. +Mientras no esté, las rutas de integración contestan 503 con un mensaje claro, la página lo avisa y **el resto del +sitio funciona igual**. + +## Lo que falta del lado del cotizador + +Los pasos 1 a 7 de las [instrucciones del 27-oct](integracion-cotizador-instrucciones.md) siguen vigentes, con dos +cosas que salieron en la junta: + +1. **El formulario no deja guardar la requisición sin cotización adjunta** y eso está al revés: la requisición la + levanta quien necesita el material, la cotización la adjunta compras después. Leo: *«eso se tiene que + modificar»*. Es lo primero, porque bloquea el arranque del 29-oct. +2. **El campo de sitio de entrega** ya lo agregó Leo en la junta; falta la regla que lo hace obligatorio en los + proyectos ligados (del lado del servidor, no solo de la interfaz). + +## Movimientos de inventario: cómo se nombra cada salida + +Lo que se acordó en la junta, con lo que el inventario ya sabe hacer: + +| Lo que pasó | Cómo se registra | +|---|---| +| Llegó material comprado | **Recibir** la OC en Compras (o el envío en Inventario). No se captura a mano. | +| Material de un puerto a otro (Manzanillo → Ensenada) | **Envío** desde el sitio que lo manda; el que lo recibe da **Recibir** y revisa que esté completo. | +| Se usó en una instalación | **Salida**, con la unidad o el acta como referencia. | +| Se dio de baja o se destruyó | **Salida**, con el motivo. | +| Contamos y no cuadra | **Conteo físico**: lo que hay en ese sitio queda exactamente en ese número. | + +Las salidas **no se autorizan**: se supervisan. Lo que las cuadra es el conteo físico mensual (D-28-5). + +## Lo que el equipo reportó del sitio en la junta + +Se levantan como incidencias o pendientes; ninguna es de compras, pero todas estorban el arranque: + +| Qué | Quién lo vio | Estado | +|---|---|---| +| **Las horas se ven en UTC** (6 h adelantadas) | todo el equipo | **arreglado**: `TZ=America/Mexico_City` en el servicio. Lo guardado antes del 28-oct sigue en UTC. | +| Un acta con fotos **se perdió al salir de la pantalla y volver** | Daniel | pendiente — es pérdida de trabajo, va primero | +| El formulario **no deja escoger fotos de la galería** del celular | Jesús Romero | pendiente — mientras tanto, se guardan y se reabre el acta para subirlas | +| **Gibran no puede entrar** (su usuario es `gibranlp`) | Gibran | pendiente | +| La bandera de «contraseña inicial» **no se apaga** aunque ya la cambiaron | Adriana | pendiente | +| **Dos sesiones en el mismo navegador** no funcionan (cookies) | Leo | pendiente | +| Se quiere **descargar un acta como documento** | Adriana | pendiente | +| La flecha de cambio de estado del tablero no respondía | Leo | se arregló reiniciando el servicio | +| **Pendientes sin sentido creados solos** desde la minuta de la junta anterior | Leo | el agente diario los crea; hay que afinarlo | + +## Lo que no cuadra con lo escrito + +- **El agente aduanal de los tres pedimentos es «Tera Mercurio», no Grupo Lorenzo.** El + [costeo del 26-oct](/hardware/costeo-jlc-26oct/) supone Grupo Lorenzo (patente 3927) y MX$6,500 por pedimento: + esas cifras hay que rehacerlas con la cotización real. +- **La cotización de la herrería de las bases de RTG**: Adriana dice que Jesús y Tania ya la mandaron; Leo dice que + nunca le llegó. Las medidas y fotos sí están; nada se ha pedido. Sigue bloqueada por el pago. + +## Riesgos + +- **El arranque es mañana y el cotizador todavía no manda avisos.** No es bloqueante: las requisiciones pueden + correr en el cotizador desde el día uno y el material entrar al inventario a mano; lo que se pierde mientras + tanto es el «en camino» automático y el cierre solo. Se gana en cuanto Leo ponga el secreto. +- **Seis personas nuevas usando un sistema nuevo el mismo día.** Por eso la sesión general que va a programar + Adriana, y por eso el alcance chico (solo HBOX): Leo lo dijo en la junta, es para *«probar y sacar todos los + errores»*. +- **Renglones sin ítem de inventario.** Un renglón que el cotizador manda sin ítem no entra solo al inventario. + Queda visible como «por ligar» en Compras y se puede recibir igual (se anota sin tocar existencias), pero si + nadie lo liga, el material llega y no aparece contado en ningún lado. diff --git a/02-Architecture-Software/img/2026-10-28_Drogheda_Flujo-Compras-Centro-de-Mando_v1.0.png b/02-Architecture-Software/img/2026-10-28_Drogheda_Flujo-Compras-Centro-de-Mando_v1.0.png new file mode 100644 index 0000000..cc7470a Binary files /dev/null and b/02-Architecture-Software/img/2026-10-28_Drogheda_Flujo-Compras-Centro-de-Mando_v1.0.png differ diff --git a/CLAUDE.md b/CLAUDE.md index 5b0df4a..5725641 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -404,6 +404,40 @@ RST 40.6) through the 22 Ω; the 28-sep decision to skip a `/SIM_VDD` array assu move D23–D25 to `/SIMB_*` at J14's pins with a GND via each (schematic change + placement; T41 or Michelle)**. Canonical: v6 state doc rev 1.3 §7 + plan rev 1.5; figure `img/2026-10-22_Drogheda_v6-T40-MH4_v1.0.png`; lote `2026-10-22_t40-v6`. +**Junta de dirección y flujo de compras (2026-10-28, 10:17; Leo: «a partir de mañana todas las requisiciones relacionadas +HBOX se van a hacer por el sistema»).** The 28-oct management standup settled the **purchasing flow end to end** and it is NOT +the one written on 27-oct: the site lead raises the requisition, **Adriana authorises it line by line**, Tania quotes (with +Efraín and Leo), **Adriana gives a second visto bueno** on material, quantities and delivery place, and only then Tania pays; +whoever receives confirms item by item **from their phone**, which creates the inbound inventory movement at that site. That +**corrects D-27-4** (which left authorisation with compras). Also decided: **go-live 29-oct, HBOX installations only** +(maintenance in January), **Alán replaces Paola** as an authorised requester, and the **physical inventory count is monthly** +(D-28-1…D-28-5). Standing rules from the same meeting: every project meeting must **invite leo@helgen.tech and turn Gemini +notes on** (a daily agent reconciles the board from meeting notes + standups, so Leo need not attend); **Wialon is not wired +into the monitor for EIT, TIMSA or LCT** (cost) unless the client asks; emails to Abraham (ICAVE) **max one paragraph** and RTG +permits are requested by email **every time, only by Adriana**; the word **«vibración» is banned** as an explanation — the +mechanism is a badly seated 4G/ArduSimple module (position keeps reporting through the emergency path, telemetry variables +vanish), and Jacobo is mapping **cellular signal strength per port** as the missing evidence. **The customs broker for the +three JLC pedimentos is «Thera Mercurio», not Grupo Lorenzo** — the 26-oct costing assumes Grupo Lorenzo (patente 3927) and +MX$6,500 per pedimento, so those figures need redoing. **Portal fase 1 built and tested the same day:** +`hbox-docs/backend/compras.py` (purchase orders in SQLite `/srv/projects/drogheda/drogheda.db` WAL; the three HMAC-signed +`/api/integracion/…` routes — evento · ítems · recepciones, 5-minute window, **no session**; «en camino» shipments per site +created with the same inventory functions as the UI; **one pendiente per OC** `t-oc-` for the site lead, due on the +delivery date, closed automatically when everything arrives; both receiving doors — Compras and the Inventario shipment — +reconciled; `"prueba": true` rounds kept apart) + the **Compras page** (`docs/tableros/compras.md`, tab per site, card per OC, +«Ligar» and «Recibir» complete or partial, never any amounts) + **58 tests** (`backend/tests-1028.sh`). Montos are dropped +before writing, at any depth. `actas-hbox.service` gains **`TZ=America/Mexico_City`** (the server ran in UTC, which is why the +whole team saw every timestamp 6 h ahead; records written before 28-oct stay in UTC) and the commented `COTIZADOR_SECRETO`. +**Not deployed yet; app.py changed → restart required** (`DESPLIEGUE.md` §D4). **Site bug harvest from the meeting** (all on +the board): an acta with photos **lost when leaving the screen and coming back** (Daniel — work lost in the field, first in +line), the form **won't pick photos from the phone gallery** (Jesús Romero), **Gibran can't log in**, Adriana's **«contraseña +inicial» flag won't clear**, two sessions in one browser, and acta **download as a document** (Adriana). **Documents:** by +Efraín's report, every task link (228) and every link inside the published docs (1,469) was checked — none broken; what was +missing were **33 dated documents never added to the `MAP`**, now published under *Historia* in four groups, plus +`hbox-docs/scripts/revisar-enlaces.py`, which runs inside `deploy.sh` and refuses to publish if anything points at something +that does not exist. Canonical: `02-Architecture-Software/2026-10-28_Drogheda_Flujo-Compras-e-Inventario_ES_v1.0.md` (site +`inventario/flujo-compras-28oct/`); figure `img/2026-10-28_Drogheda_Flujo-Compras-Centro-de-Mando_v1.0.png`; lote +`2026-10-28_junta-direccion`. + **Command centre (2026-10-21, 20:00; Leo: «this is the command centre for all tasks»).** Rule and closing loop in ★ above. Built the bridge that lets Claude's tasks reach the board: `hbox-docs/backend/tablero.py` (stdlib; foto / revisar / aplicar / pendientes through the live API as `X-Remote-User: claude`; ledger @@ -549,14 +583,14 @@ these before presenting; if it breaks one, say so and propose the compliant fix. |---|---|---| | `00-Project-Management` | plan, ethos, hackathon, **financials**, **handover**, client comms, Drive tooling | [[00-Project-Management/PLAN\|PLAN]] · [[00-Project-Management/Engineering-Handover\|Engineering-Handover]] · `ethos.md` · `hackathon-plan.md` · `Financials.md` · `Drive-Upload/` · `client-comms/` · **`2026-10-26_Drogheda_Costeo-JLCPCB-Importacion_V5.6-V5.7-v6_ES_v1.0.md`** + `.xlsx` (JLC + import costing, 135 / 365 / 60) | | `01-Requirements` | what we build | `SRS.md` · `HBOX-product-spec.md` | -| `02-Architecture-Software` | backend/software analysis, ADRs | `backend-review.md` · **`2026-10-22_Drogheda_FOTA-por-4G_Factibilidad_ES_v1.0.md`** (FOTA over 4G per board; D-22-6) · **`2026-10-27_Drogheda_Integracion-Cotizador-Inventario_ES_v1.0.md`** (cotizador ↔ portal: POs, per-site inventory, SQLite; D-27-1…5) + `2026-10-27_Drogheda_Instrucciones-Cotizador-Integracion_ES_v1.0.md` (what the cotizador project changes) + `img/2026-10-27_Drogheda_Flujo-OC-Inventario_v1.0.png` | +| `02-Architecture-Software` | backend/software analysis, ADRs | `backend-review.md` · **`2026-10-22_Drogheda_FOTA-por-4G_Factibilidad_ES_v1.0.md`** (FOTA over 4G per board; D-22-6) · **`2026-10-27_Drogheda_Integracion-Cotizador-Inventario_ES_v1.0.md`** (cotizador ↔ portal: POs, per-site inventory, SQLite; D-27-1…5) + `2026-10-27_Drogheda_Instrucciones-Cotizador-Integracion_ES_v1.0.md` (what the cotizador project changes) + `img/2026-10-27_Drogheda_Flujo-OC-Inventario_v1.0.png` · **`2026-10-28_Drogheda_Flujo-Compras-e-Inventario_ES_v1.0.md`** (el flujo como quedó en la junta de dirección del 28-oct: dos puertas de Adriana, arranque el 29-oct solo HBOX, D-28-1…5; + `img/2026-10-28_Drogheda_Flujo-Compras-Centro-de-Mando_v1.0.png`) | | `03-Architecture-Hardware` | HBOX/cabinet, wiring, BOM, **watchdog PCB v3** | `hardware-respec-and-pcb-brief.md` · `cabinet-electrical-bom.md` · `watchdog-schematic.md` · `watchdog-health-telemetry.md` · `firmware-review.md` · `BOM-master.md` (+§5 Block B/E/H/I parts) · **`watchdog-pcb-v3-design.md`** (schematic spec) · `watchdog-pcb-v3-bom.xlsx` · `watchdog-pcb-v3-kicad-guide.md` (KiCad→JLCPCB) · `watchdog-pcb-v3-blockdiagram.svg` · `watchdog-protoboard-bringup.md` + `watchdog-proto-bench-bringup-v3.md` · `watchdog-connections.xlsx` (PCB pin/net list; H1 DNP; +B/H/I rows) · `watchdog-connections-rationale.md` (+§7 additions 2026-07-02) · **`watchdog-electrical-design-state.md`** (CANONICAL — read first) · **`watchdog-production-schematic-delta.md`** (PROD build spec; LTC4040 §4 values) · `kicad/` — `hbox-watchdog-v3.kicad_sch` (**DEV/proto**) · `hbox-watchdog-v3-PROD.kicad_sch/.kicad_pcb` (**PRODUCTION**: ERC 0, layout started, DRC baseline) · `Drogheda-sym.kicad_sym` (MP1584EN · LTC4040EUFD · AO4406A) · `Drogheda_Conexiones-por-Bloque_Proto_v1.xlsx` (**proto assumptions ledger**) · `Guia-Conexion-Protoboard/` (LaTeX source; `modulos-pinout.tex` = visual parts catalog) → `Drogheda_Guia-Conexion-Protoboard_ES_v3.1.pdf` · **`2026-07-08_Drogheda_4G-Modem-Alternatives_v1.0.md`** (XBee 2.0 mm bridge + cheap-4G survey) · `circuitikz-wiring/` (sheet + Beamer v2.1, blocks 1–11; XBee-socket 3V3 fix 07-08; **`Drogheda_Diagrama-Unico-Proto`** = todo-en-una-hoja para verificación rápida, Modo B; v1.1 07-10 agrega XBee 20-pin obligatorios VREF(14)→VCC · ON/OFF(20)→GND · GND×4 + USB config + franja de pinouts para el técnico; HiRes-300dpi.png para TV; **v1.2 07-20**: letras G/D/S·B/C/E en todos los transistores + bloque 5b Q10+DzG 15V) · **Guía v3.1** (5b Q10+Zener · 9c pines obligatorios XBee + USB · disipadores · plano 10×10) · **lista de compras reconstruida DESDE CERO** (1 tarjeta ≈MX$2,087) · `watchdog-protoboard-BOM-3boards.xlsx` + `watchdog-LISTA-DE-COMPRAS-ES.xlsx` (proto BOMs; 07-10: +BOB-08276/PRT-08272, buck «MODEM 3.3V», breakout USB-C+cable, botón/LED módem, straps VREF/ON-OFF, surtido +220R/22k) · **`2026-07-06_Drogheda_EinarBoard-1.0-PreFab-Audit_v1.0.md`** (CLOSED — Rev 1.1 fixes) · `Assembly-BOM-Split.md` + `LCSC-search-list.md` (verified LCSC) + `JLCPCB-Order-Guide.md` (ordering runbook) · `harness-connector-pinout.md` + `Socket-Pinout-Silkscreen.md` · **`EinarBoard-Manual/`** (Rev 1.1 order-prep pack: `einarboard-manual.tex` → branded PDF · `helgen_einarboard_1.0_production_bom.xlsx` · `tools/generate_production_bom.py` + `tools/sync_bom.py` Excel→LaTeX BOM sync) — plus repo-root `scripts/prep_order_release.sh` (safe cleanup + release commit) · **`2026-10-16_Drogheda_Auditoria-Produccion_V5.6-V5.7-v6_ES_v1.0.md`** (production audit + comparison table) + `2026-10-16_Drogheda_Instrucciones-Michelle_V5.6-V5.7-Pasada-3_ES.md` · `kicad/tools/t25_mounting_holes_v55.py` (restores the 7 V5.5 holes) · `kicad/tools/t27_paso1_2_mh11_rs1_kelvin.py` (MH11 out + RS1 Kelvin, V5.6/V5.7) · `kicad/tools/t28_v6_mecanicos.py` (v6: U25 part code, stackup, U6 paste) · `kicad/tools/t30_v56_v57_mecanicos.py` (V5.6/V5.7 mechanical fixes, 19-oct) · `kicad/tools/t31_c129_vsys_quitar_dbk2.py` (V5.6/V5.7 schematic: C129 at U6 VSYS + Dbk2 out, 20-oct) · `kicad/tools/t32_c130_vin_u7.py` (V5.6/V5.7 schematic: C130 at U7 VIN, 21-oct) · `kicad/tools/t33_v56_v57_auditoria_21oct.py` (V5.6/V5.7 PCB fixes from the 21-oct audit) · `kicad/tools/t34_v56_pasada6.py` + `t35_v56_via_u7.py` (V5.6 pass 6) · `kicad/tools/t36_v57_pasada6.py` + `t37_v57_c129_gnd.py` (V5.7 pass 6) · `kicad/tools/t38_v6_courtyards_mh.py` (v6: courtyards of the 11 easyeda2kicad footprints + library, MH6 `/3V3` to B.Cu, 4-mm MH rule in the `.kicad_dru`) · `kicad/tools/t39_v6_bloque_a.py` (v6 block A, proposal α: D34/L22/R53/R54 moved, SW + VEH5V tracks, In1/In2 cleared, MH8 free) · `kicad/tools/t40_v6_mh4.py` (v6 MH4 free: D23/D24 moved, SIM_CLK via In1, SIM_RST above D25, NTC around the hole, TVS + U19.92/94 GND vias) · `kicad/tools/t42a_v5_quickwins.py` (V5.6/V5.7 quick wins T42a: BOM with stock for 430, /IGN_IN 0.3 mm on In1, V5.7 E-11 via; `--solo-bom`) · `2026-10-16_Drogheda_Auditoria-Produccion_v6_ES_v1.0.md` + `2026-10-16_Drogheda_Plan-Fines-de-Semana_v6-Produccion_ES.md` (v6 audit + weekend plan, rev 1.5) · **`2026-10-19_Drogheda_Re-Auditoria_V5.6-V5.7-v6_ES_v1.0.md`** (re-audit of all three) + `2026-10-19_Drogheda_Instrucciones-Michelle_V5.6-V5.7-Pasada-4_ES.md` · **`2026-10-19_Drogheda_V5.6_Clasificacion-Criticos_ES_v1.0.md`** (V5.6 critical vs. can-stay; C129) · **`2026-10-21_Drogheda_Auditoria-Pasada-4_V5.6-V5.7_ES_v1.0.md`** (audit of pass 4, T32/T33 results, pass-5 review, pass 6 done by Claude with T34–T37 + D-21-2) · **`2026-10-21_Drogheda_Estado-v6-T25-T28_ES_v1.0.md`** (v6 state, rev 1.3 of 22-oct: T25 + T28 + T38 + **T39 block A** + **T40 MH4** applied, MH rule, D-22-4; figures `img/2026-10-22_Drogheda_v6-T39-Bloque-A_v1.0.png` + `img/2026-10-22_Drogheda_v6-T40-MH4_v1.0.png`) · **`2026-10-22_Drogheda_Auditoria-Final-Produccion_V5.6-V5.7_ES_v1.0.md`** (FINAL production audit of the V5.6/V5.7 fab packages: GO pilot 5 + 5 with 3 order conditions, NO-GO 108/322 until bench with 0.7.0; 30 findings, 16 risks) + `…_Protocolo_ES_v1.0.md` (the audit protocol / "reprompt") + **`Auditoria-Final-V56-V57/`** (LaTeX sources → 33-pp PDF + 19-frame Beamer; `fig/`; `scripts/` gerb.py · gcmp.py · netparse.py · copper.py · riesgos.py) · `img/2026-10-22_Drogheda_*.png` (8 figures) · **`2026-10-22_Drogheda_Victorias-Rapidas_V5.6-V5.7_T42a_ES_v1.0.md`** (quick wins T42a + HV24 netclass finding → T42b + D-22-7; figure `img/2026-10-22_Drogheda_V5.6-V5.7-T42a_v1.0.png`) · **`2026-10-22_Drogheda_Designadores-T43_V5.6-V5.7-v6_ES_v1.0.md`** (T43 designators in order on V5.6/V5.7/v6 + D-22-9; old→new CSVs `2026-10-22_Drogheda_T43_*_viejo-nuevo.csv`; maps `img/2026-10-22_Drogheda_*-Designadores-T43_v1.0.png`) · `kicad/tools/t43_renumber.py` + `t43_check.py` + `fab_package.py` (headless Fabrication Toolkit) · **`2026-10-22_Drogheda_Documento-de-Diseno_{V5.6,V5.7,v6}_ES_v1.0.md/.pdf`** (one design document per board; images + full schematic PDF in `img/diseno-*`) · `2026-10-22_Drogheda_v6-T44-Serigrafia_ES_v1.0.md` + `kicad/tools/t44_serigrafia.py` (silk designators 0.8/0.15 by script on all three; `t44_drc.py`, `t44_diff.py`, `t44_export.py`) | | `04-Source-Code` | firmware + backend repos | `firmware/` (**own git repo `hbox-firmware`**: `blackpillrtkcode_v2/` deploy · `legacy/` v1 · `docs/LOGGING-SPEC.md` v2.1 · **`hbox_v5_bringup/board_v56.h`** (V5.6/V5.7 pin map, 22-oct; 0.7.0 base)) · `htracker/` · `notifications/` · `rtk-config/` | | `05-Analytics-Reports` | SQL views, dashboards (VERONICA/PowerBI), **observability** | `2026-06-22_Drogheda_Manual-Logs-Grafana_v1.0.pdf` (Grafana/Loki log-consultation manual) | | `06-Testing-Validation` | RCA, diagnostics, test evidence, **log analysis & tooling** | `RCA-2026-06-field-failures.md` · `remote-diagnostic-protocol.md` · `2026-06-20_Drogheda_Bench-Log-Analysis_v1.0.md` (rev-3) · `2026-06-20_Drogheda_GNSS-Findings-Summary.md` · `log-analysis/` (repo **`hbox-log-tools`**: `log-explorer.html` · `analyze_logs.py` · `build_dashboard.py` · `docs/manual.pdf`) | | `Marketing` | product-facing collateral (LaTeX→PDF) | `HBOX-Datasheet/` (industrial spec sheet) · `HBOX-Brochure-RTK/` (flyer) | | `99-Archive` | superseded raw inputs (read-only) | `situation_ORIGINAL.md` | -| `hbox-docs/` | **the command centre** (submodule): internal site drogheda.helgen.online — MkDocs + Flask backend (actas, pendientes, inventario, sitios, equipo, enfoque, actividad) | **`CLAUDE.md`** (where each piece lives) · `docs/datos/proyecto.json` (Ruta, hitos) · `docs/hardware/index.md` · `docs/tableros/ingenieria.md` (decisions) · `docs/bitacora.md` · `scripts/sync-docs.sh` (publication policy) · `scripts/deploy.sh` · **`scripts/tablero.sh` + `backend/tablero.py` + `backend/lotes/`** (board snapshot and Claude's lotes, 21-oct) · `_estado/` (snapshot, gitignored) · `DESPLIEGUE.md` · **27-oct:** `backend/acceso.py` (login page) · `backend/incidencias.py` · `backend/standup.py` · `backend/vigia.py` · `backend/nginx/` · `agentes/agente-diario.md` (daily agent runbook) · `scripts/agente-api.sh` · `scripts/despliegue-1027.sh` | +| `hbox-docs/` | **the command centre** (submodule): internal site drogheda.helgen.online — MkDocs + Flask backend (actas, pendientes, inventario, sitios, equipo, enfoque, actividad) | **`CLAUDE.md`** (where each piece lives) · `docs/datos/proyecto.json` (Ruta, hitos) · `docs/hardware/index.md` · `docs/tableros/ingenieria.md` (decisions) · `docs/bitacora.md` · `scripts/sync-docs.sh` (publication policy) · `scripts/deploy.sh` · **`scripts/tablero.sh` + `backend/tablero.py` + `backend/lotes/`** (board snapshot and Claude's lotes, 21-oct) · `_estado/` (snapshot, gitignored) · `DESPLIEGUE.md` · **27-oct:** `backend/acceso.py` (login page) · `backend/incidencias.py` · `backend/standup.py` · `backend/vigia.py` · `backend/nginx/` · `agentes/agente-diario.md` (daily agent runbook) · `scripts/agente-api.sh` · `scripts/despliegue-1027.sh` · **28-oct:** `backend/compras.py` + `docs/tableros/compras.md` (órdenes de compra del cotizador, SQLite, rutas firmadas) · `backend/tests-1028.sh` · `scripts/revisar-enlaces.py` (corre en cada deploy: nada puede ligar a algo que no esté publicado) | | `.claude/skills/` | vendored project skill | `project-drogheda/` | > Structure follows the **[[Helgen Project Template]]** (English `NN-`). The Google diff --git a/hbox-docs b/hbox-docs index 4f08640..e62a7de 160000 --- a/hbox-docs +++ b/hbox-docs @@ -1 +1 @@ -Subproject commit 4f08640b31897905506cc75cdc7974c0f0e0be1e +Subproject commit e62a7dec23c1db5f5784c1f76292c347f51f78ff