Commit Graph
152 Commits
Author SHA1 Message Date
angelandClaude Sonnet 5 1fd75ea675 amazon: replace fire-and-forget listener notifications with ack-based retry
Dispatching an event to the listener previously happened from an
un-awaited goroutine, with only a log line on failure - once
processed_at was set, a dropped or failed notification was permanently
and silently lost, with no way to tell it had happened.

Replaces the processed/processed_successfully booleans with a
notified_at/processed_at pair (migration 000031): the dispatcher sets
notified_at and hands the event to MockEventListener.Notify, which now
also receives an ack callback the listener calls whenever it's truly
done, synchronously or arbitrarily later. Anything still "notified" but
unacked past notifyRetryAfter (a tunable field, not a stored
per-row timestamp) gets notified again on the dispatcher's normal
poll/reactive loop - no new retry mechanism needed. ack is idempotent,
since a late ack from an earlier attempt and one from a retry can both
eventually fire for the same event.

Dispatch is deferred until after the transaction that recorded
notified_at has actually committed, so ack's independent write can't
race a still-open transaction it implicitly depends on being visible.

The real SSE listener (server/sse/db_event_publisher.go) acks inline,
since its work is synchronous.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XEDaCB7C2NEBgyvqEtZuxY
2026-08-20 00:24:04 -06:00
angelandClaude Sonnet 5 e063fb66d4 amazon: add a Ready() signal for ProcessEvents' LISTEN registration
Tests (and any other caller) previously had no way to know when the
Postgres LISTEN behind the reactive event-processing loop had actually
registered, forcing a guessed sleep before relying on it. Mocks now
exposes Ready() <-chan struct{}, closed once listenForNotifications
successfully issues LISTEN. Purely additive - ProcessEvents' signature
is unchanged.

Updates the integration tests to wait on Ready() instead of a flat
sleep, which also cut TestProcessEvents_ReactsToNotification's runtime
from ~0.25s to ~0.06s with no flakes across repeated runs.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XEDaCB7C2NEBgyvqEtZuxY
2026-08-20 00:24:04 -06:00
angel 4d43b7e039 store api research 2026-08-20 00:24:04 -06:00
angel 9c9b33e34f Claude-assisted improvements (untested)
- dev auth flow (side-step OAuth)
- db event processing integration tests
- dev scripts (eg Makefile)
- db / test db migration setup scripts.
2026-08-20 00:24:04 -06:00
angel fb2f4255f4 prototyped svg reports
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 4s
Tests / Go tests (push) Failing after 15s
2026-08-20 00:23:54 -06:00
angel 55a3694d89 amazon events published as server side event 2026-08-20 00:23:54 -06:00
angel 40afd176e7 mock amazon event processing stubbed 2026-08-20 00:23:54 -06:00
angel 9f86b8e95c bad logs
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 4s
Tests / Go tests (push) Successful in 20s
2026-08-20 00:23:41 -06:00
angel fa3db63ad2 protoype: list raw events on mock mode reports page 2026-08-20 00:23:41 -06:00
angel 0e0422545b mock events saved to db 2026-08-20 00:23:41 -06:00
angel e4e2bd992b mock events db schema 2026-08-20 00:23:41 -06:00
angel 20bbbe33ca regenerated diagrams 2026-08-20 00:23:41 -06:00
angel 496310c93a fixed mock mode button; shortened simulation tabs 2026-08-20 00:23:41 -06:00
angel 25615fabc6 MockMode: made global in templates; increase bort of navbar in mock mode 2026-08-20 00:23:41 -06:00
angel f30d4a3140 stubbed simulations page content: set inventory 2026-08-20 00:23:41 -06:00
angel 793ca05fd4 stubbed simulations page content: refund 2026-08-20 00:23:41 -06:00
angel 9971ff3266 stubbed simulations page content: sale 2026-08-20 00:23:41 -06:00
angel 46a5d0ee55 initial gitea test workflow
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 4s
Tests / Go tests (push) Successful in 17s
2026-08-20 00:23:17 -06:00
angel 3c9ce65335 demo action
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 4s
2026-08-19 23:16:45 -06:00
angel 8ea8192853 stubbed page: simulations 2026-02-27 16:39:54 -07:00
angel 370e50a174 fix: unable to save mock sync group being edited 2026-02-26 23:49:48 -07:00
angel ee5557cca1 mock mode: removed subnav - keep navbar in sync with mock mode 2026-02-26 23:44:11 -07:00
angel d34810555a cleaned up api routes 2026-02-26 23:03:38 -07:00
angel c6b8a9a00d mock mode: database queries implemented and checkbox on account page built 2026-02-26 22:54:58 -07:00
angel 85817a4adb mock sync group editing: edit, save, and delete listings 2026-02-25 22:41:36 -07:00
angel ae031411b8 updated favicon 2026-02-25 22:30:31 -07:00
angel 4352062227 mock sync group editing: made tables columns more consistent; initialize database rows upon editing 2026-02-20 23:04:18 -07:00
angel 5ec4fe67b0 auth: expose more auth info in gin context to support future login redirect capability 2026-02-18 22:28:03 -07:00
angel a3ae872e9d updated mock sync group accordions: editing state; cancel editing 2026-02-17 19:35:12 -07:00
angel 7ef4638daa added Edit Group button to mock sync group accordion 2026-02-17 18:29:34 -07:00
angel d04a57beec moved mock syn group list item to component 2026-02-17 17:11:08 -07:00
angel 34a7cf42a7 hide new sync group table tooltip 2026-02-17 16:53:10 -07:00
angel b8f703cda4 accordion: make smooth animation toggleable 2026-02-15 13:39:31 -07:00
angel c0966ceeb4 fixed mock sync group table styles 2026-02-14 20:07:18 -07:00
angel b53fb18737 eliminated bad hx-swap-oob on mock inventory page 2026-02-14 19:02:50 -07:00
angel aefcfea0f9 replaced remaining details elements with accordion component 2026-02-14 01:43:30 -07:00
angel 6838d13c7a updated templater library; added accordion component 2026-02-14 01:29:28 -07:00
angel 95ef64ce18 ability to delete mock sync groups 2026-02-10 18:05:30 -07:00
angel 0944703d2a removed intermediate /internal directory 2026-02-09 13:40:31 -07:00
angel b155280081 mock shop sync group listing draft page 2026-02-08 12:31:10 -07:00
angel e3b2dd3377 move shops to new page; live vs mock navbar 2026-02-06 16:37:55 -07:00
angel 548f72d9a4 improved mock shop listing style 2026-02-05 18:29:32 -07:00
angel 0ffde6e83d mock shop page: can set count 2026-02-05 18:24:47 -07:00
angel 0e36012e6d mock shop page: can delete listings 2026-02-05 17:18:56 -07:00
angel e7f39d69b3 mock shop page: store listing search in query 2026-02-05 12:00:12 -07:00
angel 24ebf2742f mock shop page: case-insensitive search 2026-02-05 11:07:07 -07:00
angel 0924d0edb1 mock shop page: search listings 2026-02-05 11:02:29 -07:00
angel 02893511ba mock shop page: order listings 2026-02-05 10:33:39 -07:00
angel 925e2b9db8 mock shop page allows updating of listings 2026-02-05 10:17:19 -07:00
angel d187fbc0f4 mock shop page now more mobile friendly 2026-02-04 23:44:08 -07:00