mirror of
https://github.com/DRYTRIX/TimeTracker.git
synced 2026-05-18 04:08:48 -05:00
4007ee2ca8
Introduce a centralized OTel layer (app/telemetry/otel_setup.py) that reuses the existing OTLP endpoint and token, exports traces and metrics over OTLP/HTTP, and instruments Flask plus SQLAlchemy. Manual OTLP log export remains for base and product analytics; log records now include trace_id, span_id, and event_category where tracing is active. Business spans and product metrics cover invoices, timers, reports, auth, webhook delivery, and scheduled jobs. RED-style HTTP metrics are recorded in after_request alongside existing Prometheus counters. ENABLE_TRACING and ENABLE_METRICS default on when credentials exist; graceful no-op when they do not. Privacy is preserved: user_id appears on traces only when detailed analytics is opted in; metrics never carry user_id; _remove_pii behavior for analytics is unchanged. Responses inject traceparent when tracing is enabled for future browser correlation. Tests: test_otel_integration.py and per-test reset_for_testing() in conftest so each app factory can reinitialize OTel.
90 lines
1.5 KiB
Plaintext
90 lines
1.5 KiB
Plaintext
# Core Flask dependencies
|
|
Flask==3.0.0
|
|
Flask-SQLAlchemy==3.1.1
|
|
Flask-Migrate==4.0.5
|
|
Flask-Login==0.6.3
|
|
Flask-SocketIO==5.3.6
|
|
|
|
# OAuth / OIDC
|
|
Authlib==1.3.1
|
|
PyJWT==2.8.0
|
|
|
|
# Database
|
|
SQLAlchemy==2.0.23
|
|
alembic==1.13.1
|
|
psycopg2-binary==2.9.9
|
|
|
|
# Web server
|
|
gunicorn==23.0.0
|
|
eventlet==0.40.3
|
|
|
|
# Security and forms
|
|
Flask-WTF==1.2.1
|
|
Flask-Limiter==3.8.0
|
|
|
|
# Utilities
|
|
python-dotenv==1.0.0
|
|
tzdata>=2023.3
|
|
python-dateutil==2.8.2
|
|
Werkzeug==3.0.6
|
|
requests==2.32.4
|
|
|
|
# Email
|
|
Flask-Mail==0.9.1
|
|
|
|
# Excel export
|
|
openpyxl==3.1.2
|
|
|
|
# PDF Generation
|
|
WeasyPrint==60.2
|
|
pydyf==0.10.0
|
|
Pillow==10.4.0
|
|
reportlab==4.0.7
|
|
pikepdf>=8.0.0
|
|
|
|
# Background tasks
|
|
APScheduler==3.10.4
|
|
|
|
# Internationalization
|
|
Flask-Babel==4.0.0
|
|
Babel==2.14.0
|
|
|
|
# Security
|
|
cryptography==45.0.6
|
|
markdown==3.6
|
|
bleach==6.1.0
|
|
|
|
# Analytics and Monitoring
|
|
python-json-logger==2.0.7
|
|
sentry-sdk==1.40.0
|
|
prometheus-client==0.19.0
|
|
|
|
# OpenTelemetry (OTLP traces + metrics; aligns instrumentation 0.48 with SDK 1.27)
|
|
opentelemetry-api==1.27.0
|
|
opentelemetry-sdk==1.27.0
|
|
opentelemetry-exporter-otlp-proto-http==1.27.0
|
|
opentelemetry-instrumentation==0.48b0
|
|
opentelemetry-instrumentation-flask==0.48b0
|
|
opentelemetry-instrumentation-sqlalchemy==0.48b0
|
|
opentelemetry-semantic-conventions==0.48b0
|
|
|
|
# API Documentation
|
|
flask-swagger-ui==5.21.0
|
|
apispec==6.3.0
|
|
marshmallow==3.20.1
|
|
|
|
# OCR for receipt scanning
|
|
pytesseract==0.3.10
|
|
|
|
# Payment Gateway Integration
|
|
stripe==7.0.0
|
|
|
|
# Calendar Integration
|
|
google-api-python-client==2.100.0
|
|
google-auth-httplib2==0.1.1
|
|
google-auth-oauthlib==1.1.0
|
|
icalendar==6.3.1
|
|
|
|
# Redis for caching
|
|
redis==5.0.1
|
|
hiredis==2.2.3 |