diff --git a/app/helpers/invalid_logs_helper.rb b/app/helpers/invalid_logs_helper.rb index 0d295e11a..e2b945151 100644 --- a/app/helpers/invalid_logs_helper.rb +++ b/app/helpers/invalid_logs_helper.rb @@ -10,7 +10,10 @@ module InvalidLogsHelper next unless log.status == "completed" total_logs_seen += 1 - invalid_ids << log.id unless log.valid? + + next unless !log.valid? || log.incomplete_subsections.any? || log.incomplete_questions.any? + + invalid_ids << log.id end Rails.logger.info "Batch #{batch_index} complete. Progress: #{invalid_ids.size} invalid logs found out of #{total_logs_seen} logs seen so far." @@ -32,7 +35,8 @@ module InvalidLogsHelper next unless log.status == "completed" total_logs_seen += 1 - next if log.valid? + + next unless !log.valid? || log.incomplete_subsections.any? || log.incomplete_questions.any? invalid_ids << log.id error_messages = log.errors.full_messages.join(";\n") diff --git a/app/models/log.rb b/app/models/log.rb index 31072dc44..b3294ae32 100644 --- a/app/models/log.rb +++ b/app/models/log.rb @@ -317,6 +317,20 @@ class Log < ApplicationRecord !!public_send("age#{person_num}_known")&.zero? end + def incomplete_subsections + form.subsections.reject do |subsection| + subsection.complete?(self) || subsection.not_displayed_in_tasklist?(self) + end + end + + def incomplete_questions + incomplete_subsections.flat_map do |subsection| + subsection.questions.select do |question| + question.displayed_to_user?(self) && question.unanswered?(self) + end + end + end + private # Handle logs that are older than previous collection start date