SU2-7 | Добавление модели Report с поддержкой загрузки файлов, обновление контроллера и представления для обработки отчетов, а также создание миграций для таблицы отчетов и активного хранилища.

This commit is contained in:
Dmitry
2025-12-10 15:02:39 +03:00
parent ae77bfa911
commit 5f9a4c0da6
8 changed files with 74 additions and 20 deletions
+22 -3
View File
@@ -5,16 +5,35 @@ require 'stringio'
class FileProcessorJob
include Sidekiq::Job
def perform(inn, output_path)
def perform(inn, report_id)
report = Report.find(report_id)
Rails.logger.info "=== Начало загрузки для ИНН: #{inn} ==="
download_inn(inn, output_path)
# Временная папка
temp_dir = Rails.root.join('tmp', 'reports', inn)
FileUtils.mkdir_p(temp_dir)
download_inn(inn, temp_dir.to_s)
Dir.glob("#{temp_dir}/**/*").select { |f| File.file?(f) }.each do |file_path|
report.files.attach(
io: File.open(file_path),
filename: File.basename(file_path)
)
end
# Удали временные файлы
FileUtils.rm_rf(temp_dir)
report.update!(status: 'completed')
Rails.logger.info "=== Завершено для ИНН: #{inn} ==="
rescue => e
report.update!(status: 'failed') if report
Rails.logger.error "=== ОШИБКА: #{e.message} ==="
Rails.logger.error e.backtrace.first(5).join("\n")
raise
end
private
def get_content(url, json_need = false)