2.9 KiB
2.9 KiB
Project Configuration (LTM)
This file contains the stable, long-term context for the project. It should be updated infrequently, primarily when core goals, tech, or patterns change.
Core Goal
Implement an automated employee workstation activity tracking system that logs user login events and active/inactive periods on Windows machines, reports these events to a central Flask API, and provides a dashboard with daily, weekly, and monthly working time summaries.
Tech Stack
-
Client:
- OS: Windows 10/11
- Scripting: PowerShell
- Scheduler: Windows Task Scheduler
-
Server:
- Language: Python 3.9+
- Framework: Flask
- ORM: SQLAlchemy
- Database: SQLite (development) / PostgreSQL (production)
- Server: Gunicorn /
flask run
-
Frontend:
- HTML, CSS, JavaScript
- Charting Library: Chart.js
-
Infrastructure:
- Host: On-premises LAN server
- Networking: HTTP on corporate LAN (no external exposure)
-
DevOps & Tooling:
- Version Control: Git
- Testing: pytest
- Database Migrations: Alembic (for PostgreSQL)
- Linting/Formatting: Flake8, Black, isort
Critical Patterns & Conventions
-
API Design:
- RESTful endpoint:
POST /api/report - Request payload: JSON with fields
user,state,ts(ISO 8601) - Response format: JSON
{ "success": bool, "message"?: "error details" }, HTTP 201 on success
- RESTful endpoint:
-
Database Model:
-
Table
work_eventswith columns:id(PK, auto-increment)user(VARCHAR)state(VARCHAR, e.g., "working"/"stopped")ts(DATETIME, default now)
-
-
Idle Detection Logic:
- Fixed inactivity threshold of 10 minutes
- State transitions: working → stopped on crossing threshold, stopped → working on activity
-
Error Handling:
- PowerShell: Wrap API calls in
try/catch, log failures, optional retry - Flask: Global error handlers returning structured JSON errors
- PowerShell: Wrap API calls in
-
Configuration Management:
- Environment variables or
.envfile for API server URL, port, and DB connection string
- Environment variables or
-
Coding Standards:
- Python: PEP 8, docstrings for modules and functions
- PowerShell: Verb-Noun function names, consistent two-space indentation
- JavaScript: ES6+ syntax, modular code, avoid globals
-
Commit Messages:
- Use Conventional Commits format (e.g.,
feat: add idle detection logic)
- Use Conventional Commits format (e.g.,
Key Constraints
- Client Runtime: Must rely solely on built-in PowerShell and Task Scheduler (no external installs)
- Idle Threshold: Exactly 10 minutes of inactivity
- Authentication: No API auth; system is LAN-restricted
- Deployment: Server must run on-premises within corporate LAN
- Data Retention: Raw event logs retained for 1 year; aggregated summaries retained indefinitely
- Performance: Support up to 100 client reports per minute without degradation
Tokenization Settings
Estimation Method: Character-based Characters Per Token (Estimate): 4