🗄️ Closed elsewhere (merged/declined outside this tool) (2)
This PR touches nearly every core module of the scraper platform (config, mailer, runner, routers, scrapers, seen_store, webhook, schemas) plus all individual portal scrapers, alongside a large volume of new documentation. It removes the N8N webhook integration entirely, changes mail-sending/dedup logic (seen_store, mailer, aanvraag normalization), alters save/output behavior for failed runs, and modifies concurrency/locking behavior in the runner and API trigger endpoint — any regression here could cause duplicate or missed emails to the Salesforce mailbox, silent data loss, or broken scraper scheduling in production.
- Very large, sprawling diff (4016+/440- across 44 files) touching almost every core app module at once
- Changes to core business logic: mailer.py, seen_store.py (dedup), aanvraag/normalize.py (data parsing), runner.py (concurrency/locking), webhook.py removal
- Modifies save/failure semantics in scrapers (e.g., APG Magnit no longer overwrites output on failed runs) which changes data integrity guarantees
- Touches API endpoints (app/routers/api.py, app/routers/dashboard.py) and trigger/locking behavior which affects public-facing behavior and concurrency safety
- Removes an integration (N8N webhook) and .env.example entries, which is a behavior/contract change for any downstream consumers
- Security-relevant history mentioned in added AUDIT.md (leaked credentials in git history, missing auth on /api/trigger) indicating high sensitivity of the surrounding system even though this PR itself doesn't fix those
- Changes span 8+ independent scraper integrations plus shared common/ modules used by all of them, so a subtle bug could cascade across multiple production scrapers
This PR is primarily documentation (new AUDIT.md, MISLUKTE_RUNS_LOG.md, per-scraper READMEs) plus a couple of small, well-targeted bug fixes (APG Magnit no longer clobbers previous successful output on a failed run; StaffingNow now uses the cross-platform kill_process_tree instead of Windows-only taskkill). The diff is large but low-risk — no correctness or security issues found in the reviewable portions. Note: the diff was truncated before I could see the full contents of several files (app/config.py, app/runner.py, app/mailer.py, app/scrapers.py, common/normalize.py, Stedin/Striive/Flextender scraper changes, tests), so this review only covers what was visible.
This PR is a massive, sprawling change (147 files, +8120/-91933 lines) that overhauls the entire application architecture: replacing the old main.py dashboard server with a new FastAPI app, adding a new mailer module that sends live emails to Salesforce, rewriting Docker deployment config (Dockerfile, docker-compose, non-root user, healthcheck, port change from 8765 to 8000), deleting the committed .env with live production credentials, and modifying every scraper module's shared driver/setup code. A regression in the mailer, scheduler, or Docker/deploy config could break scraper execution, mis-deliver or leak sales lead emails, or take down the deployed service entirely.
- Very large, sprawling diff touching 147 files across nearly every module in the repo simultaneously
- New mailer module (app/mailer.py) sends real emails to a business-critical Salesforce mailbox — a bug could spam, leak, or drop sales leads
- Infrastructure/deployment changes: Dockerfile rewritten (non-root user, new CMD/entrypoint, port 8765->8000, healthcheck), docker-compose.yml modified
- Secrets handling changed: committed .env with live credentials deleted and replaced by .env.example — risk of breaking deployed configs if not migrated correctly
- Architectural replacement of the main runner/dashboard (main.py) with a new FastAPI app (app/main.py, routers, runner, scheduler) — significant behavior change to a running service
- Shared refactor of scraper base code (common/scraper_base.py) used by all scraper modules (Magnit, Mercell, Bergler, APG Magnit, etc.), so a bug affects multiple independent scraping pipelines at once
- Diff includes binary/output artifacts and downloaded customer documents committed to the repo, indicating messy scope and potential data handling concerns
Large PR bundling a big architectural refactor (Flask/CLI dashboard → FastAPI app, new common/ shared scraper helpers, mail module, tests) together with committing/removing hundreds of unrelated binary artifacts (scraped output, downloaded .docx/.xlsx/.pdf files, .pyc files, node_modules-style n8n workflow json). Given the diff truncation I could only review a subset in detail (Dockerfile, .env handling, scrapers refactor, README). No blocking correctness bugs found in what was reviewed, but there are real repo-hygiene and security concerns that should be addressed before merge.