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:
2025-07-05 19:27:53 +01:00
parent c00bb71d2a
commit 99e1b82ea8
3 changed files with 46 additions and 0 deletions
+7
View File
@@ -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
+7
View File
@@ -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)
+32
View File
@@ -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()