Repository navigation
Offer tier-based partner import sync intervals - #241
Conversation
Backend unit coveragePASS · minimum combined coverage 67.60%. Tests: 5589 passed, 0 failed, 0 skipped. Source files: 348.
Unit coverage includes every backend workspace. PostgreSQL/Redis integration tests run separately. Commit: 24d760d · HTML, JSON, XML reports and job logs · attempt 1 |
PR reader API performanceResult: INCONCLUSIVE 6 inconclusive · 2 within threshold. Zero request failures across all six runs. Base Three independent GitHub-hosted ARM64 runners, each measuring base and PR sequentially with alternating order and isolated resources for every sample. 16 users, 60 seconds/run, 1,000 synthetic articles, cache off, five PgBouncer slots. Latency comparisonAll latency values are in milliseconds; lower is better. Values are medians of three runs.
Additional latency and throughput metricsEach cell shows base → PR. Latencies are in milliseconds.
Individual runs
How to interpret this reportRegressed / Improved: a p95 regression needs >20% and >20 ms increase in the medians and at least two head samples versus the base median. Improvements use the inverse threshold. Within threshold means the change did not meet both thresholds. Inconclusive: a within-revision p95 range >35% of its median and >20 ms is too noisy for a confident latency verdict. Inconclusive latency comparisons are non-blocking: the check passes without claiming an improvement. Confirmed regressions and test/report errors fail the PR gate. Throughput is descriptive: paced users do not measure maximum capacity. This uncached public API test does not establish production health, browser performance or worker capacity. Base and PR share a runner within each pair; three pairs use independent runners. Alternating order reduces host-assignment bias but cannot eliminate changes in host load over time. Full HTML/CSV reports and logs · attempt 1 |
|



What changes and why?
The partner connection form currently requires a raw minute count and allows schedules unrelated to the account tier. Replace it with hour-based dropdown choices:
New connections default to 24 hours. The API validates explicit interval changes against the owning account's tier under the account lock, and includes the current tier in connection responses. The existing statistics join supplies that tier without an additional listing query.
Existing unsupported schedules and tier downgrades use a 24-hour effective interval in the scheduler. Valid schedules retain their selected interval. The form selects 24 hours for unsupported old values and saves that correction when submitted. Unowned administrator connections retain their configured schedules. Manual sync actions retain their existing behavior.
Validation
Rollout notes
No migration. Deploy partner API, portal and worker/scheduler changes together. Existing owned connections with unsupported minute values will sync daily until an allowed interval is selected. Tier downgrades defer an early next sync until the daily interval from the last successful sync has elapsed; active imports are not cancelled.
Ready for review