How osbonilla/integracionodooarcgis works
This repository is a demo integration connecting municipal service requests in Odoo with ArcGIS field workflows. Citizens submit reports through Survey123; crews and supervisors edit request points and workfront lines in Field Maps. Webhooks and a periodic safety-net schedule trigger the FastAPI runner, which batches events and executes an idempotent bidirectional sync: new field features become Odoo tasks, linked records merge changes, attachments/notes are handled, and nearby requests are assigned to workfronts. The README also documents Dashboards and map monitoring. Source excerpts show API orchestration and client responsibilities, but not every pipeline call; unverified subsystem links are omitted.
Main entry points: sync.py Sync pipeline · main.py Webhook endpoints · arcgis_client.py ArcGIS client · odoo_client.py Odoo client
Components 18
Field and GIS
- Survey123
- Field Maps
- Request layer
- Workfront layer
- Dashboards
Integration API
- Webhook endpoints
integration-api/app/main.py - Debounce runner
integration-api/app/sync.py - Safety scheduler
integration-api/app/main.py - Sync pipeline
integration-api/app/sync.py - Geo and fingerprints
integration-api/app/geo.py - API schemas
integration-api/app/schemas.py - Integration settings
integration-api/app/config.py - ArcGIS client
integration-api/app/arcgis_client.py - Odoo client
integration-api/app/odoo_client.py
Municipal ERP
- Odoo tasks and contacts
Other components
- Citizen
- Crew / supervisor
- Municipal operator
Connections 26
- Citizen → Survey123: submits reports
README.md - Survey123 → Request layer: writes reports
README.md - Crew / supervisor → Field Maps: edits field data
README.md - Field Maps → Request layer: edits requests
README.md - Field Maps → Workfront layer: draws workfronts
README.md - Request layer → Dashboards: feeds indicators
README.md - Workfront layer → Dashboards: feeds indicators
README.md - Municipal operator → Odoo tasks and contacts: manages tasks
README.md - Request layer → Webhook endpoints: sends change events
README.md - Workfront layer → Webhook endpoints: sends change events
README.md - Survey123 → Webhook endpoints: sends submission event
integration-api/app/main.py - Odoo tasks and contacts → Webhook endpoints: notifies task changes
integration-api/app/main.py - Webhook endpoints → Debounce runner: queues sync reason
integration-api/app/main.py - Safety scheduler → Sync pipeline: runs periodic sync
integration-api/app/main.py - Debounce runner → Sync pipeline: runs batched sync
integration-api/app/sync.py - Sync pipeline → Geo and fingerprints: uses spatial utilities
integration-api/app/sync.py - Sync pipeline → ArcGIS client: uses layer access
integration-api/app/sync.py - Sync pipeline → Odoo client: uses ERP access
integration-api/app/sync.py - Sync pipeline → Request layer: syncs request features
- Sync pipeline → Workfront layer: syncs workfront features
- Sync pipeline → Odoo tasks and contacts: syncs tasks and contacts
- ArcGIS client → Request layer: queries and edits
README.md - ArcGIS client → Workfront layer: queries and edits
README.md - Odoo client → Odoo tasks and contacts: uses XML-RPC
README.md - Sync pipeline → API schemas: returns summaries
integration-api/app/sync.py - Webhook endpoints → Integration settings: uses configuration
integration-api/app/main.py