[add]: First Analytics models

This commit is contained in:
VivianDee
2025-09-19 12:25:42 +01:00
parent fdd7959370
commit 495ba93a4b
5 changed files with 158 additions and 0 deletions
+10
View File
@@ -562,3 +562,13 @@ Help: https://docs.oracle.com/error-help/db/ora-00936/
2025-09-10 11:29:54,827 - INFO - [2025-09-10 11:29:54] Salary detection complete
2025-09-10 11:30:20,979 - INFO - Shutting down Salary Analytics API...
2025-09-10 11:31:18,351 - INFO - Initializing pipeline...
2025-09-10 11:31:18,375 - INFO - [2025-09-10 11:31:18] Detecting salary...
2025-09-10 11:31:18,376 - INFO - Started autonomous salary detection loop.
2025-09-10 11:31:18,405 - INFO - Server running on hostname: 0b21809edf52
2025-09-10 11:31:18,447 - INFO - Server IP address: 172.25.0.2
2025-09-10 11:31:18,528 - INFO - Server is accessible at:
2025-09-10 11:31:18,552 - INFO - - http://localhost:8000
2025-09-10 11:31:18,552 - INFO - - http://127.0.0.1:8000
2025-09-10 11:31:18,553 - INFO - - http://172.25.0.2:8000
2025-09-10 11:31:18,554 - INFO - Pipeline initialized successfully
+19
View File
@@ -0,0 +1,19 @@
from sqlalchemy import Column, Integer, String, Date, Numeric, CHAR
from app.extensions import db
class Account(db.Model):
__tablename__ = "accounts"
customerid = db.Column(db.String(50), primary_key=True)
accountid = db.Column(db.String(11), nullable=False)
registrationdate = db.Column(db.DateTime)
accountcurrencycode = db.Column(db.String(3))
schemecode = db.Column(db.String(5))
lastinflowtransactiondate = db.Column(db.DateTime)
accountstatus = db.Column(db.String(50))
accountstatusdate = db.Column(db.DateTime)
def __repr__(self):
return f"<Account {self.accountid}>"
+37
View File
@@ -0,0 +1,37 @@
from sqlalchemy import Column, Integer, String, Date, Numeric, CHAR
from app.extensions import db
class SimbrellaCustomer(db.Model):
__tablename__ = "simbrella_customers"
customerid = db.Column(db.String(500), primary_key=True)
acct_opn_date = db.Column(db.DateTime)
gender = db.Column(db.String(20))
birth_date = db.Column(db.DateTime)
msisdn = db.Column(db.String(100))
isbvnvalid = db.Column(db.String(100))
datebvnvalidated = db.Column(db.DateTime)
iscrmsvalid = db.Column(db.String(100))
datecrmsvalidated = db.Column(db.DateTime)
iscrcvalid = db.Column(db.String(100))
datecrcvalidated = db.Column(db.DateTime)
def __repr__(self):
return f"<SimbrellaCustomer {self.customerid}>"
def to_dict(self):
return {
"customerid": self.customerid,
"acct_opn_date": self.acct_opn_date,
"gender": self.gender,
"birth_date": self.birth_date,
"msisdn": self.msisdn,
"isbvnvalid": self.isbvnvalid,
"datebvnvalidated": self.datebvnvalidated,
"iscrmsvalid": self.iscrmsvalid,
"datecrmsvalidated": self.datecrmsvalidated,
"iscrcvalid": self.iscrcvalid,
"datecrcvalidated": self.datecrcvalidated,
}
+46
View File
@@ -0,0 +1,46 @@
from sqlalchemy import Column, Integer, String, Date, Numeric, CHAR
from app.extensions import db
class Transaction(db.Model):
__tablename__ = "transactions"
tran_id = db.Column(db.String(50), primary_key=True)
cif_id = db.Column(db.String(500))
foracid = db.Column(db.String(150))
acid = db.Column(db.String(150))
tran_date = db.Column(db.DateTime)
value_date = db.Column(db.DateTime)
pstd_date = db.Column(db.DateTime)
tran_sub_type = db.Column(db.String(50))
part_tran_type = db.Column(db.String(50))
tran_crncy_code = db.Column(db.String(50))
tran_amt = db.Column(db.Numeric(38, 0))
tran_particular = db.Column(db.String(250))
origination_channel = db.Column(db.String(150))
reversal_tran_id = db.Column(db.String(50))
isreversal = db.Column(db.String(50))
def __repr__(self):
return f"<Transaction {self.tran_id}>"
def to_dict(self):
return {
"tran_id": self.tran_id,
"cif_id": self.cif_id,
"foracid": self.foracid,
"acid": self.acid,
"tran_date": self.tran_date,
"value_date": self.value_date,
"pstd_date": self.pstd_date,
"tran_sub_type": self.tran_sub_type,
"part_tran_type": self.part_tran_type,
"tran_crncy_code": self.tran_crncy_code,
"tran_amt": float(self.tran_amt) if self.tran_amt is not None else None,
"tran_particular": self.tran_particular,
"origination_channel": self.origination_channel,
"reversal_tran_id": self.reversal_tran_id,
"isreversal": self.isreversal,
}
+46
View File
@@ -0,0 +1,46 @@
from sqlalchemy import Column, Integer, String, Date, Numeric, CHAR
from app.extensions import db
class TransactionStg(db.Model):
__tablename__ = "transaction_stg"
tran_id = db.Column(db.String(50), primary_key=True)
cif_id = db.Column(db.String(500))
foracid = db.Column(db.String(150))
acid = db.Column(db.String(150))
tran_date = db.Column(db.String(50)) # staging table keeps as string
value_date = db.Column(db.String(50))
pstd_date = db.Column(db.String(50))
tran_sub_type = db.Column(db.String(50))
part_tran_type = db.Column(db.String(50))
tran_crncy_code = db.Column(db.String(50))
tran_amt = db.Column(db.Numeric(38, 0))
tran_particular = db.Column(db.String(250))
origination_channel = db.Column(db.String(150))
reversal_tran_id = db.Column(db.String(50))
isreversal = db.Column(db.String(50))
def __repr__(self):
return f"<TransactionStg {self.tran_id}>"
def to_dict(self):
return {
"tran_id": self.tran_id,
"cif_id": self.cif_id,
"foracid": self.foracid,
"acid": self.acid,
"tran_date": self.tran_date,
"value_date": self.value_date,
"pstd_date": self.pstd_date,
"tran_sub_type": self.tran_sub_type,
"part_tran_type": self.part_tran_type,
"tran_crncy_code": self.tran_crncy_code,
"tran_amt": float(self.tran_amt) if self.tran_amt is not None else None,
"tran_particular": self.tran_particular,
"origination_channel": self.origination_channel,
"reversal_tran_id": self.reversal_tran_id,
"isreversal": self.isreversal,
}