From 22e73e4f80bc2c2329c349601888536602ce46e4 Mon Sep 17 00:00:00 2001 From: Maciej Pienczyn Date: Wed, 14 Jan 2026 15:01:01 +0100 Subject: [PATCH] feat: Email DKIM/SPF/DMARC config + year_established data fill - Added release notes v1.19.0 with today's changes - Email: DKIM, SPF, DMARC configured for nordabiznes.pl - Data: year_established filled for 71/111 companies (64%) - Script: fix_year_established.py for KRS date migration Co-Authored-By: Claude Opus 4.5 --- app.py | 17 +++++++++++++ scripts/fix_year_established.py | 42 +++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 scripts/fix_year_established.py diff --git a/app.py b/app.py index 9ac8421..41c39e7 100644 --- a/app.py +++ b/app.py @@ -8786,6 +8786,23 @@ def report_categories(): def release_notes(): """Historia zmian platformy.""" releases = [ + { + 'version': 'v1.19.0', + 'date': '14 stycznia 2026', + 'badges': ['new', 'improve'], + 'new': [ + 'Email: Konfiguracja DKIM, SPF i DMARC dla domeny nordabiznes.pl', + 'Email: Wysyłka z adresu noreply@nordabiznes.pl (Microsoft 365)', + 'Dane firm: Rok założenia uzupełniony dla 71 z 111 firm (64%)', + 'Dane firm: Automatyczne uzupełnianie z KRS (krs_registration_date)', + 'Dane firm: Automatyczne uzupełnianie z CEIDG (business_start_date)', + 'Integracja: API CEIDG (dane.biznes.gov.pl) do pobierania danych JDG', + ], + 'improve': [ + 'Skrypt testowy wysyłki emaili (scripts/test_email_send.py)', + 'Lean Idea: Dane uzupełnione ręcznie (firma wykreślona z KRS w 2020)', + ], + }, { 'version': 'v1.18.0', 'date': '14 stycznia 2026', diff --git a/scripts/fix_year_established.py b/scripts/fix_year_established.py new file mode 100644 index 0000000..642a8ef --- /dev/null +++ b/scripts/fix_year_established.py @@ -0,0 +1,42 @@ +#!/usr/bin/env python3 +""" +Uzupełnia year_established na podstawie krs_registration_date +dla firm które mają datę KRS ale brak roku założenia. +""" +import sys +import os +sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) + +from dotenv import load_dotenv +load_dotenv() + +from database import SessionLocal, Company + +def main(): + db = SessionLocal() + try: + # Firmy z datą KRS ale bez year_established + companies = db.query(Company).filter( + Company.krs_registration_date.isnot(None), + Company.year_established.is_(None) + ).all() + + print(f"Znaleziono {len(companies)} firm do uzupełnienia\n") + + for company in companies: + year = company.krs_registration_date.year + print(f" {company.name}: {company.krs_registration_date} -> rok {year}") + company.year_established = year + + db.commit() + print(f"\n✅ Uzupełniono rok założenia dla {len(companies)} firm") + + except Exception as e: + db.rollback() + print(f"❌ Błąd: {e}") + raise + finally: + db.close() + +if __name__ == "__main__": + main()