Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 10 additions & 11 deletions app/services/reporting/account_deletion_rate_report.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ def initialize(report_date = Time.zone.today)

def account_deletion_report
table = []
table << ['Deleted Users', 'Total Users', 'Deletion Rate']
table << [deleted_user_count, users_and_deleted_for_period, deletion_rate]
table << ['Deleted Users', 'Fully Registered Users', 'Deletion Rate']
table << [deleted_user_count, fully_registered_users, deletion_rate]
table
end

Expand All @@ -27,22 +27,21 @@ def account_deletion_emailable_report

def deleted_user_count
@deleted_user_count ||= Reports::BaseReport.transaction_with_timeout do
DeletedUser.where(user_created_at: start_date..end_date).count
DeletedUser.
where(deleted_at: start_date..end_date).
where('user_created_at < ?', end_date).
count
end
end

def user_count
@user_count ||= Reports::BaseReport.transaction_with_timeout do
User.where(created_at: start_date..end_date).count
def fully_registered_users
@fully_registered_users ||= Reports::BaseReport.transaction_with_timeout do
RegistrationLog.where(registered_at: start_date..end_date).count
end
end

def users_and_deleted_for_period
deleted_user_count + user_count
end

def deletion_rate
deleted_user_count.to_f / users_and_deleted_for_period.to_f
deleted_user_count.to_f / fully_registered_users.to_f
end
Comment on lines 43 to 45
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One thing to note, I'm not 100% sure I agree with the calculation on data.login.gov, because "fully registered users" is not safe for backdating, the registrations logs rows are deleted and not recoverable, where the "total registered" is, we can approximate counts far back in time based on deleted_users

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For what it's worth, I'm not attached to that logic (as the person who wrote it), if we want to update to something more accurate and backport to data.login.gov .

But also we're tentatively considering to want to change this to an "Account Reset Rate" anyways, so maybe it's best to hold off for that.


def start_date
Expand Down
10 changes: 6 additions & 4 deletions spec/services/reporting/account_deletion_rate_report_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -24,17 +24,19 @@

it 'returns a report for account deletion rate (last 30 days)' do
account_deletion_table = report.account_deletion_report
expected_table = [['Deleted Users', 'Total Users', 'Deletion Rate'], [2, 8, 0.25]]
expected_table = [
['Deleted Users', 'Fully Registered Users', 'Deletion Rate'],
[2, 6, 2.0 / 6],
]

expect(account_deletion_table).to eq(expected_table)
end
end

def create_and_delete_accounts
create(:user, :proofed)
create_list(:user, 2)
create_list(:user, 3, :fully_registered)

user = create(:user)
user = create(:user, :fully_registered)
DeletedUser.create_from_user(user)
user.destroy!
end
Expand Down