mirror of
https://github.com/we-promise/sure.git
synced 2026-04-19 12:04:08 +00:00
* Fix syncing issues with new connections and accounts.. - Keep SimpleFin institution metadata strictly per account (`simplefin_accounts.org_data`). - Relax `simplefin_items` institution constraints to allow creating items before org data exists. - Remove code that copied the first account’s `org` onto `simplefin_items`. * Improve Simplefin Sync • SimpleFin: family “Sync” includes SimpleFin items; importer does unbounded discovery (with pending=1 fallback) before windowed fetch, for both regular and first syncs. • Stop populating item‑level institution fields; keep institution metadata per account. • Relax NOT NULL on item institution fields. • Post‑sync dashboard broadcasts are now guarded (UI cannot fail the job). • Show a friendly “daily refresh limit” banner on the SimpleFin card when the latest sync is rate‑limited. • Add bin/rails sure:simplefin:debug[ITEM_ID] to print latest sync, snapshot account count, simplefin_accounts count, and unlinked list. * Fixed double‑quoted strings, spacing around array brackets and commas * chore: ignore local .junie files * - Broadcast error logs now include full backtraces - SimpleFin discovery logic deduplicated fixed - app/models/simplefin_item/importer.rb --Added a concise docstring for perform_account_discovery describing purpose, steps, and side‑effects. --Added a docstring for fetch_accounts_data describing params and return value.
32 lines
767 B
Ruby
32 lines
767 B
Ruby
class Family::Syncer
|
|
attr_reader :family
|
|
|
|
def initialize(family)
|
|
@family = family
|
|
end
|
|
|
|
def perform_sync(sync)
|
|
# We don't rely on this value to guard the app, but keep it eventually consistent
|
|
family.sync_trial_status!
|
|
|
|
Rails.logger.info("Applying rules for family #{family.id}")
|
|
family.rules.each do |rule|
|
|
rule.apply_later
|
|
end
|
|
|
|
# Schedule child syncs
|
|
child_syncables.each do |syncable|
|
|
syncable.sync_later(parent_sync: sync, window_start_date: sync.window_start_date, window_end_date: sync.window_end_date)
|
|
end
|
|
end
|
|
|
|
def perform_post_sync
|
|
family.auto_match_transfers!
|
|
end
|
|
|
|
private
|
|
def child_syncables
|
|
family.plaid_items + family.simplefin_items.active + family.accounts.manual
|
|
end
|
|
end
|