DevOps Engineer
f9a45e6deb
feat(HRT-66): LeadHunter S1 — core scraping, scoring, CRM SQLite et API Flask
...
- leadhunter_scraper.py : Google Places Nearby Search + Place Details
avec compteur quota daily_quota.json (limite 900/jour),
sleep(0.5) entre requêtes, fallback Overpass OSM boundary MEL,
filtre website absent, déduplcation, rgpd_ok=True
- leadhunter_scorer.py : moteur de scoring 0-8 pts
critère n°1 = site web absent (+3), avis ≥50 (+2),
note ≥4.0 (+2), téléphone (+1), note <3.0 (-1)
- leadhunter_crm.py : CRM SQLite schéma validé CTO
(id, source, name, address, phone, rating, reviews_count,
website, score, rgpd_ok, scraped_at, status)
CRUD : insert_lead, get_leads, update_lead_status, get_stats, export_csv
- leadhunter_api.py : Flask service port 8769
GET /api/leads, POST /api/leads/scrape, GET /api/leads/stats,
GET /api/leads/export, PATCH /api/leads/<id>/status, GET /health
assert GOOGLE_PLACES_API_KEY au démarrage
scraping asynchrone (thread) avec status endpoint
- infra/turf-saas-leadhunter.service : service systemd
EnvironmentFile=/home/h3r7/.env pour GOOGLE_PLACES_API_KEY
Tests : py_compile OK, scorer testé, CRM SQLite testé
Co-Authored-By: Paperclip <noreply@paperclip.ing >
2026-04-27 16:33:30 +02:00
DevOps Engineer
dce1e9b744
feat(devops): CI/CD + Docker + Monitoring infrastructure
...
- Multi-stage Dockerfile (builder+runner, <500MB target)
- docker-compose.yml: app(x4) + postgres + redis + prometheus + grafana + nginx
- .env.example with all required secrets (never hardcoded)
- requirements.txt with all dependencies including prometheus-client, alembic
- GitHub Actions CI: lint (flake8+bandit+safety) + tests + Docker build/push
- GitHub Actions CD: staging deploy -> smoke tests -> production deploy + rollback
- Alembic migration setup + initial PostgreSQL schema (001_initial_schema)
- SQLite→PostgreSQL data migration script
- Prometheus metrics module (HTTP, ML, DB, business metrics)
- Prometheus alert rules (5xx >1%, latency >2s, disk >80%, ML accuracy)
- Grafana dashboard (overview: req/s, p95, ML accuracy, error rate)
- Nginx reverse proxy config (HTTPS/TLS, rate limiting, security headers)
- Structured JSON logging module
- Automated daily DB backup script (pg_dump + 30-day retention)
Branch: feature/devops-cicd
Co-Authored-By: Paperclip <noreply@paperclip.ing >
2026-04-25 17:32:02 +02:00