Captured from get-coffee.nixtech.app/cafe
on 2026-05-08. End-to-end verification of the 8-sub-phase architectural shift
(R6.1 → R6.6) that moves Pro reads from Odoo to cafe.* tables and
flips Cafe→Odoo writes through the sync worker.
cafe.*. Customer-create POST writes
cafe.customers first then pushes synchronously to Odoo
res.partner; product creates queue for the cron-driven sync worker.
8 sub-phases shipped over 2 days (2026-05-07 + 2026-05-08).
| Axis | Flag | Read source | Mirror rows |
|---|---|---|---|
| Products | products_master = 'cafe' | cafe.products + R6.2b mirror DAO | 17 |
| Customers | customers_master = 'cafe' | cafe.customers + R6.3b mirror DAO | 2 |
| POS configs | pos_master = 'cafe' | cafe.pos_configs + R6.5 mirror DAO | 5 |
| Payment methods | pos_master = 'cafe' (shared) | cafe.payment_methods + R6.5 mirror DAO | 5 |
| Session summaries | pos_master = 'cafe' (shared) | cafe.sessions + cafe.orders aggregate (R6.6) | — |
| Orders | always cafe (since R5) | cafe.orders | — |
| Sessions | always cafe (since R5) | cafe.sessions | — |
/cafe/api/odoo/customers in cafe-master mode returns 2 mirrored rows,
each with id as a numeric Odoo partner id (Number(odooPartnerId)).
POST /cafe/api/odoo/customers in cafe-master mode INSERTs cafe.customers
with source='native', pushes synchronously to res.partner,
stamps odoo_partner_id + odoo_synced_at on the cafe row,
and returns the Odoo numeric id to the picker.