Add autonomous salary detection feature to API
Integrated SalaryDetect class into the API and initiated an autonomous salary detection loop during the startup event. This enhancement improves the system's capability to monitor and analyze salary data in real-time.
This commit is contained in:
@@ -0,0 +1,7 @@
|
||||
- Connect to transcation data source
|
||||
- Analyze transition data
|
||||
- Detect salary
|
||||
- Inform event of salary
|
||||
- SAFETY - report transaction import gaps
|
||||
- SAFETY - report database connections
|
||||
- SAFETY - report when event cannot be reached
|
||||
@@ -23,6 +23,7 @@ from .data_loader import DataLoader
|
||||
from .salary_predictor import SalaryPredictor
|
||||
from .salary_earner_analyzer import SalaryEarnerAnalyzer
|
||||
from .db_operations import DatabaseOperations
|
||||
from .salary_detect import SalaryDetect
|
||||
|
||||
# Configure logging
|
||||
logging.basicConfig(
|
||||
@@ -59,6 +60,8 @@ df = None
|
||||
salary_predictor = None
|
||||
salary_earner_analyzer = None
|
||||
|
||||
salary_detect = SalaryDetect()
|
||||
|
||||
class AnalysisResponse(BaseModel):
|
||||
"""Response model for analysis endpoints."""
|
||||
message: str
|
||||
@@ -87,6 +90,10 @@ async def startup_event():
|
||||
try:
|
||||
logger.info("Initializing pipeline...")
|
||||
|
||||
# Start autonomous salary detection loop
|
||||
salary_detect.start()
|
||||
logger.info("Started autonomous salary detection loop.")
|
||||
|
||||
# Print network information
|
||||
hostname = socket.gethostname()
|
||||
ip_address = socket.gethostbyname(hostname)
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
import time
|
||||
import logging
|
||||
import threading
|
||||
|
||||
logging.basicConfig(level=logging.INFO)
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
class SalaryDetect:
|
||||
def __init__(self):
|
||||
self._running = False
|
||||
self._thread = None
|
||||
|
||||
def _run(self):
|
||||
while self._running:
|
||||
logger.info(f"[{time.strftime('%Y-%m-%d %H:%M:%S')}] Detecting salary...")
|
||||
time.sleep(1)
|
||||
logger.info(f"[{time.strftime('%Y-%m-%d %H:%M:%S')}] Salary detection complete")
|
||||
time.sleep(1)
|
||||
|
||||
def start(self):
|
||||
if not self._running:
|
||||
self._running = True
|
||||
self._thread = threading.Thread(target=self._run, daemon=True)
|
||||
self._thread.start()
|
||||
|
||||
def stop(self):
|
||||
self._running = False
|
||||
if self._thread:
|
||||
self._thread.join()
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user