ab5283441d
* Add saas:usage_report rake task and extract Subscription.paid scope Add a rake task to generate a CSV usage report with per-account data: Queenbee ID, sign up date, paid date, card count, storage used, and last active date. Extract the paid subscriptions query from Admin::StatsController into an Account::Subscription.paid scope so both the controller and the new rake task can share it. * Add comped and account name columns to usage report * Update saas/lib/tasks/fizzy/usage_report.rake Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Preload storage_total to avoid N+1 in usage report * Batch last_active_at queries to avoid per-account aggregates * Add tests for Account::Subscription.paid scope * Update saas/app/models/account/subscription.rb Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Aggregate paid dates in SQL instead of loading all subscriptions * Fix paid scope to derive plan keys from Plan.all instead of PLANS hash * Move paid dates and comped lookups into per-batch queries * Materialize batch IDs to avoid cross-database subquery SaasRecord models live on a separate database (fizzy_saas) that doesn't have the accounts table. Using batch.select(:id) generated a subquery that ran on the saas database, causing a table-not-found error. Using pluck(:id) materializes the IDs into an array instead. --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
33 lines
1.0 KiB
Plaintext
33 lines
1.0 KiB
Plaintext
# This Gemfile extends the base Gemfile with SaaS-specific dependencies
|
|
eval_gemfile "Gemfile"
|
|
|
|
git_source(:bc) { |repo| "https://github.com/basecamp/#{repo}" }
|
|
|
|
gem "activeresource", require: "active_resource"
|
|
gem "actionpack-xml_parser" # needed by queenbee for XML request body parsing
|
|
gem "stripe", "~> 18.0"
|
|
gem "queenbee", bc: "queenbee-plugin"
|
|
gem "fizzy-saas", path: "saas"
|
|
gem "console1984", bc: "console1984"
|
|
gem "audits1984", bc: "audits1984", branch: "flavorjones/coworker-api"
|
|
gem "csv"
|
|
|
|
# Native push notifications (iOS/Android)
|
|
gem "action_push_native"
|
|
|
|
# Telemetry
|
|
gem "rails_structured_logging", bc: "rails-structured-logging"
|
|
gem "sentry-ruby"
|
|
gem "sentry-rails"
|
|
gem "yabeda"
|
|
gem "yabeda-actioncable"
|
|
gem "yabeda-activejob", github: "basecamp/yabeda-activejob", branch: "bulk-and-scheduled-jobs"
|
|
gem "yabeda-gc"
|
|
gem "yabeda-http_requests"
|
|
gem "yabeda-prometheus-mmap"
|
|
gem "yabeda-puma-plugin"
|
|
gem "yabeda-rails"
|
|
gem "webrick" # required for yabeda-prometheus metrics server
|
|
gem "prometheus-client-mmap", "~> 1.3"
|
|
gem "gvltools"
|