added bankwise file monitoring and calling the ach_api_txn_post procedure after each run
This commit is contained in:
34
scheduler.py
34
scheduler.py
@@ -68,20 +68,30 @@ class Scheduler:
|
||||
logger.error("Failed to connect to SFTP server")
|
||||
return
|
||||
|
||||
# Get list of already processed files
|
||||
processed_files = set()
|
||||
for bank_code in self.config.bank_codes:
|
||||
bank_processed = repository.get_processed_files(bank_code)
|
||||
processed_files.update(bank_processed)
|
||||
|
||||
# Scan for new files
|
||||
# Scan for new files across all banks
|
||||
monitor = FileMonitor(sftp_client)
|
||||
new_files = monitor.scan_for_new_files(list(processed_files))
|
||||
new_files = []
|
||||
|
||||
for bank_code in self.config.bank_codes:
|
||||
# Get list of files already processed for this specific bank
|
||||
bank_processed = repository.get_processed_files(bank_code)
|
||||
remote_path = f"{self.config.sftp_base_path}/{bank_code}/NACH"
|
||||
files = sftp_client.list_files(remote_path, pattern='ACH_*.txt')
|
||||
|
||||
for filename in files:
|
||||
if filename not in bank_processed:
|
||||
full_path = f"{remote_path}/{filename}"
|
||||
new_files.append((filename, bank_code, full_path))
|
||||
logger.info(f"Found new file: {filename} (bank: {bank_code})")
|
||||
else:
|
||||
logger.debug(f"Skipping already processed file for {bank_code}: {filename}")
|
||||
|
||||
if not new_files:
|
||||
logger.info("No new files to process")
|
||||
return
|
||||
|
||||
logger.info(f"Found {len(new_files)} new files to process")
|
||||
|
||||
# Process files
|
||||
processor = FileProcessor(repository, sftp_client)
|
||||
stats = processor.process_files(new_files)
|
||||
@@ -92,6 +102,14 @@ class Scheduler:
|
||||
logger.info(f" Successful: {stats['successful']}")
|
||||
logger.info(f" Failed: {stats['failed']}")
|
||||
|
||||
# Call ach_api_txn_post procedure once per cycle to process all inserted transactions
|
||||
if stats['successful'] > 0:
|
||||
logger.info("Calling ach_api_txn_post procedure for all inserted transactions...")
|
||||
if repository.call_ach_api_txn_post():
|
||||
logger.info("Transaction post-processing completed successfully")
|
||||
else:
|
||||
logger.error("Transaction post-processing failed")
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Error in processing cycle: {e}", exc_info=True)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user