Files
plumbing/PROJECT-PROGRESS.md
T

2.4 KiB

ServiceM8 Project Progress

Current Quote Template → JobMaterials Pipeline

Live receiver

  • servicem8_webhook_receiver.py
    • receives form.response_created
    • stores the raw webhook payload in servicem8_webhooks.db
    • checks incoming form responses for the Quote Template form_uuid
    • if matched, parses and queues the derived jobMaterials payload to:
      • quote-template-jobmaterials-queue.jsonl
    • does not perform live ServiceM8 writes at this stage

Parser

  • servicem8-quote-template-parser.py
    • parses Quote Template field_data
    • extracts:
      • description of works
      • Item 1..12 include lines
      • Works excluded 1..4 exclude lines
      • extra descriptive include rows such as labour/scaffolding/equipment fields
    • builds normalized desired_job_materials

Create/apply script

  • servicem8-create-jobmaterials-from-form-response.py
    • standalone script
    • consumes a Quote Template form response JSON payload
    • builds ServiceM8 Job Material API payloads
    • runs in dry-run by default
    • supports live create later with --apply
    • records created/generated mappings into local state DB

Local state tracking

  • servicem8_quote_materials_state.db
    • local SQLite DB for tracking generated jobMaterials
    • intended fields include:
      • job UUID
      • form response UUID
      • created job material UUID
      • kind/source metadata

Queue/prepared output

  • quote-template-jobmaterials-queue.jsonl
    • lightweight queue/output file written by webhook stage
    • contains parsed/prepared desired_job_materials objects
    • no live update performed yet

Inspector

  • servicem8_inspector.py
    • read-only browser for webhook DB
    • now also includes visibility of generated-materials state DB

Current Status

Everything is staged and connected up to the point of:

  • webhook receive
  • UUID trigger check
  • form parsing
  • local queueing
  • dry-run jobMaterial payload generation
  • local state DB support
  • inspector visibility

Not Yet Enabled

  • actual live POST creation of Job Materials into ServiceM8 during webhook processing
  • any automatic update/delete reconciliation against live ServiceM8 records

Design Notes

  • Heavy lifting is intentionally kept out of the live webhook handler.
  • The webhook handler is used only for:
    • capture
    • UUID gate
    • parse/prepare/queue
  • Live ServiceM8 mutation remains a separate step/script for safety.