Field Upload — Pre-filled Per-Stop Links (2026-07-27)
Darius no longer types permit + customer at unlikely.pics or unlikely.pl. Both morning schedules (Rob’s 6 AM WhatsApp and Kilroy’s Telegram trial shadow) now carry per-stop tokenized links with project/permit/customer/owner embedded in the JWT claims.
What changed
/calendar/events?include_field_links=true(entirely-apiebc36dc) — opt-in param mintsphoto_upload_url(unlikely.pics, 24h TTL,field_upload_token) for every stop andpier_log_upload_url(unlikely.pl/pierlog/upload?token=…, 72h TTL,pierlog_share_token) for UND stops. Opt-in because the URLs are bearer credentials — portal calendar must leave it off.- daily_schedule.py + whatsapp_service.py (
0ddc2e9) — Rob’s 6 AM WhatsApp now emits the pre-filled pier link for UND stops (falls back to the staticunlikely.plline if minting fails). Crews without a schedule link still use the permit+customer entry flow (unchanged). - Latent bug fixed:
proj.get("permit_number")/.get("property_owner")were always empty —list_records_by_idsrecords carry raw SmartSuite field-ID keys only (config.FIELD_PERMITetc.). Photo upload tokens had been minted with a blank permit claim since launch. - Kilroy cron
0212d41aee6eprompt updated to requestinclude_field_links=trueand print the links verbatim per stop; the “usual upload link / usual pin” footer is gone.
Relationships
- routes/calendar.py → depends on → services/field_upload_token.py
- routes/calendar.py → depends on → services/pierlog_share_token.py
- Kilroy Daily Field Schedule cron → consumes → /calendar/events include_field_links
- daily_schedule.py → mints → pier_log_upload_url (UND stops)