diff --git a/PROJECT.md b/PROJECT.md new file mode 100644 index 0000000..b9cc3ad --- /dev/null +++ b/PROJECT.md @@ -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 \ No newline at end of file diff --git a/salary_analytics/api.py b/salary_analytics/api.py index 8d9e054..cb41a30 100644 --- a/salary_analytics/api.py +++ b/salary_analytics/api.py @@ -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) diff --git a/salary_analytics/salary_detect.py b/salary_analytics/salary_detect.py new file mode 100644 index 0000000..1bd76fe --- /dev/null +++ b/salary_analytics/salary_detect.py @@ -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() + + +