Some checks are pending
NordaBiz Tests / Unit & Integration Tests (push) Waiting to run
NordaBiz Tests / E2E Tests (Playwright) (push) Blocked by required conditions
NordaBiz Tests / Smoke Tests (Production) (push) Blocked by required conditions
NordaBiz Tests / Send Failure Notification (push) Blocked by required conditions
Pierwsza iteracja — trigger to nowa wiadomość prywatna. Rollout fazowany przez PUSH_USER_WHITELIST w .env: pusta = wszyscy, lista user_id = tylko wymienieni. Ta sama flaga kontroluje widoczność dzwonka w navbarze (context_processor inject_push_visibility). Co jest: - database/migrations/100 — push_subscriptions + notify_push_messages - database.py — PushSubscription model + relacja na User - blueprints/push/ — vapid-public-key, subscribe, unsubscribe, test, pending-url (iOS PWA), CSRF exempt, auto-prune martwych (410/404/403) - static/sw.js — push + notificationclick (z iOS fallback przez /push/pending-url w Redis, TTL 5 min) - static/js/push-client.js — togglePush, iOS detection, ?pushdiag=1 - base.html — dzwonek + wpięcie skryptu gated przez push_bell_visible - message_routes.py — _send_message_push_notifications po emailach - requirements.txt — pywebpush==2.0.3 Kill switch: PUSH_KILL_SWITCH=1 zatrzymuje wszystkie wysyłki. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
78 lines
1.2 KiB
Plaintext
78 lines
1.2 KiB
Plaintext
# Norda Biznes Partner - Python Dependencies
|
|
# ======================================
|
|
# Pinned versions for DEV/STAGING/PROD consistency (Python 3.12)
|
|
|
|
# Web Framework
|
|
Flask==3.1.2
|
|
Flask-Login==0.6.3
|
|
Werkzeug==3.1.5
|
|
|
|
# Security
|
|
Flask-WTF==1.2.2
|
|
Flask-Limiter==4.1.1
|
|
cryptography==46.0.4
|
|
bleach==6.3.0
|
|
|
|
# Database
|
|
SQLAlchemy==2.0.46
|
|
psycopg2-binary==2.9.11
|
|
|
|
# Google Gemini AI
|
|
google-genai==1.61.0
|
|
|
|
# Google Maps/Places API
|
|
googlemaps==4.10.0
|
|
|
|
# Environment Configuration
|
|
python-dotenv==1.2.1
|
|
|
|
# Email (for verification)
|
|
Flask-Mail==0.9.1
|
|
|
|
# Utilities
|
|
requests==2.32.5
|
|
feedparser==6.0.12
|
|
user-agents>=2.2.0
|
|
pdfplumber>=0.10.0
|
|
|
|
# SEO Analysis
|
|
lxml==5.4.0
|
|
beautifulsoup4==4.14.3
|
|
selectolax==0.4.6
|
|
python-whois==0.9.6
|
|
|
|
# Google News URL Decoding
|
|
googlenewsdecoder==0.1.7
|
|
|
|
# GeoIP
|
|
geoip2==5.2.0
|
|
|
|
# Redis
|
|
redis==7.1.0
|
|
|
|
# Web Push (VAPID)
|
|
pywebpush==2.0.3
|
|
|
|
# 2FA
|
|
pyotp==2.9.0
|
|
|
|
# PDF generation
|
|
pillow==12.1.0
|
|
weasyprint==68.0
|
|
|
|
# ===========================================
|
|
# Testing Dependencies
|
|
# ===========================================
|
|
|
|
# Test framework
|
|
pytest==9.0.2
|
|
pytest-flask==1.3.0
|
|
pytest-cov==7.0.0
|
|
pytest-xdist==3.8.0
|
|
pytest-timeout==2.4.0
|
|
pytest-mock==3.15.1
|
|
|
|
# E2E testing with Playwright
|
|
playwright==1.58.0
|
|
pytest-playwright==0.7.2
|