first commit

This commit is contained in:
2026-06-11 00:43:44 +05:30
commit 6421a07f2b
15 changed files with 437 additions and 0 deletions
+91
View File
@@ -0,0 +1,91 @@
from logging_config import get_logger
from models.bank_mapping import BankMapping
from models.outward_log_model import OutwardLogModel
logger = get_logger(__name__)
class Processor:
def __init__(self, config, repo, api):
self.config = config
self.repo = repo
self.api = api
self.mapping = BankMapping(config.BANK_CODE_MAPPING)
def process(self):
total_inserted = 0
logger.info("Starting processing...")
for bank_code in self.config.bank_codes:
try:
logger.info("Processing bank %s", bank_code)
dccb = self.mapping.get_dccb(bank_code)
if not dccb:
logger.error("No mapping for bank %s", bank_code)
continue
records = self.repo.get_records(dccb)
if not records:
logger.info("No records found for bank %s", bank_code)
continue
payload = {
"bankCode": bank_code,
"rrn": "090686552",
"branchCode": str(records[0]["BR_CODE"]).zfill(3),
"itemType": 1,
"queueType": "02",
"reterieveTop": "20"
}
response = self.api.fetch(payload)
if response.get("status") != "SUCCESS":
logger.error("API error for bank %s", bank_code)
continue
items = response.get("response", {}).get("VwQueueItems", [])
api_map = {
(int(x["queueItemId"]), float(x["txnAmt"])): x
for x in items
}
for r in records:
key = (int(r["CBS_QUEUE_NO2"]), float(r["TXN_AMT"]))
item = api_map.get(key)
if not item:
continue
if item.get("status") != "Processed":
continue
ref = item.get("remarks")
if not ref:
continue
if self.repo.exists_by_ref(ref):
logger.info("Duplicate ref %s", ref)
continue
model = OutwardLogModel(bank_code, r, item)
self.repo.insert_outward_log(model.to_dict())
total_inserted += 1
logger.info("Inserted ref %s", ref)
except Exception:
logger.exception("Error processing bank %s", bank_code)
logger.info("Processing completed total inserted %s", total_inserted)
return total_inserted