Periyodik Asansör Muayene Raporlarını Otomatikleştiren, Analiz Eden ve Yöneten Sistem
Özellikler • Mimari & Teknolojiler • Kurulum • Kullanım • Desteklenen Firmalar
Asansör Denetçisi, Gmail (veya yerel klasörler) üzerinden gelen periyodik asansör kontrol raporlarını (PDF) ve randevu e-postalarını otomatik olarak indiren, regex algoritmalarıyla ayrıştıran ve veritabanında (SQLite) indeksleyen bir otomasyondur.
Bina adını, asansör kimlik numarasını, muayene tarihini ve etiket rengini (Kırmızı, Sarı, Mavi, Yeşil) tespit eder. Yasal sürelere göre bir sonraki muayene tarihini hesaplayarak bir Web Arayüzü ve CLI üzerinden kullanıcıya sunar.
- 🛡️ AES-256 Veri Güvenliği: Google OAuth2 jetonları ve sistem yapılandırmaları,
cryptography.fernetmodülü kullanılarak veritabanında şifrelenmiş olarak saklanır. - ⚡ Çoklu İş Parçacığı: E-posta indirme, PDF okuma ve etiketleme süreçleri Python
threadingvequeuemimarisi ile asenkron yürütülür; büyük veri setlerinde dahi anında tepki verir. - 🧠 Akıllı Çözümleme Filtresi: Aynı asansöre ait yeni tarihli olumlu (Yeşil/Mavi) bir rapor varsa, sistem eski olumsuz raporları işlemeyi atlar, performansı artırır.
- 📱 Termux (Android) Optimizasyonu: Kurulum scripti (
setup.py), çalışma ortamını dinamik analiz eder. Termux ortamındacryptographymodülü derleme hatalarını önlemek için sistem paket yöneticisini (pkg) arka planda otonom olarak kullanır. - 🌐 Canlı Web Arayüzü: Flask ve
flask-socketiotabanlı; canlı log akışı, dark/light tema, grid/liste görünümü ve gelişmiş JSON ayar editörü sunan hızlı panel. - 🧹 Otonom Gmail Bakımı: Yanlış etiketleri temizler, eski mailleri çöpe atar ve hatalı (ulaşılamamış) PDF'leri karantinaya alır.
- 📊 Çoklu Dışa Aktarma: Sonuçları Terminal,
TXT,CSVve günlük raporlama için WhatsApp (WA) uyumlu mesaj formatlarında dışa aktarır.
Sistem, muayene kuruluşlarının kendilerine ait PDF şablonlarını otomatik tanır (registry.py) ve ilgili Parser sınıfını otonom olarak devreye sokar:
- TMMOB Makina Mühendisleri Odası (MMO)
- Optimal Denge
- Adetsis / Kent Grup Belgelendirme / Asansör Kontrol
- Artıbel Belgelendirme
Sisteminizde Python 3.9 veya üzeri yüklü olmalıdır. Android cihazlarda kullanmak için Termux kurmanız önerilir.
git clone https://github.com/ciwga/gmail-asansor-rapor-takip.git
cd gmail-asansor-rapor-takip(Sanal ortam oluşturulması tavsiye edilir.)
# Sanal ortam oluşturun ve aktif edin:
python -m venv .venv
source .venv/bin/activate # Windows için: .venv\Scripts\activate
# Projeyi ve bağımlılıklarını kurun:
pip install -e .Not (Termux Kullanıcıları): Yüklemeden önce depolama izni vermek için
termux-setup-storagekomutunu çalıştırdığınızdan emin olun.setup.pygerekli Android bağımlılıklarını otomatik çözecektir.
- Google Cloud Console'dan Gmail API'yi aktifleştirin.
- Bir Masaüstü Uygulaması için OAuth 2.0 İstemci Kimlikleri (Credentials) oluşturun ve dosyayı indirin.
- İndirdiğiniz dosyayı
credentials.jsonadıyla projenin ana dizinine bırakın veya Web Arayüzü -> ⚙️ Ayarlar kısmından yükleyin.
Uygulamanın merkez kontrol noktası run.py dosyasıdır. İster komut satırından ister modern arayüzden yönetebilirsiniz.
En iyi deneyim için web sunucusunu başlatın:
python run.py --webTarayıcınızdan http://127.0.0.1:5001 giderek sistemi kullanabilirsiniz.
E-postaları arka planda belirtilen aralıklarla (örn: 30 dakikada bir) taramak için:
python run.py --watch -i 30Sistemi bir defaya mahsus çalıştırıp terminal üzerinden özet almak için:
python run.py# Sadece belirli etiketlere sahip okunmamış mailleri ara ve işleyince arşive taşı
python run.py --by-label -l "Kırmızı Etiketli" "Sarı Etiketli" --read --archive
# Veritabanındaki tüm PDF kayıtlarını tablo şeklinde listele
python run.py -L
# Veritabanında 15 ID'sine sahip PDF dosyasını dışa aktar
python run.py -E 15 -O ./DışaAktarılanlar
# Tüm veritabanını zorla yeniden analiz et ve mükerrerleri atlama
python run.py --force --dupsProje SOLID prensiplerine uygun, MVC benzeri modüler bir hiyerarşide tasarlanmıştır:
📦 gmail-asansor-rapor-takip
┣ 📂 app/ # Uygulama ana paketi
┃ ┣ 📂 core/ # SQLAlchemy Modelleri, AES-256 DB, Multi-Thread Engine ve Resolution Filtresi
┃ ┣ 📂 downloaders/ # Dinamik İndirme Motoru, Scraping Profilleri ve HTTP Yardımcıları
┃ ┣ 📂 gmail/ # OAuth2 Kimlik Doğrulama, Rate-Limit Korumalı API Client ve Bakım
┃ ┣ 📂 parsers/ # Firmalara özel PDF Okuma Sınıfları (Artibel, MMO, Optimal, Adetsis)
┃ ┣ 📂 reporters/ # Tarih hesaplamaları (dates.py) ve Çıktı Üreticiler (writers.py)
┃ ┣ 📂 utils/ # Regex Desenleri (patterns.py), Renkli Loglama ve String Normalizasyon
┃ ┣ 📂 web/ # Flask Server, Socket.IO, HTML/JS/CSS Canlı Arayüz Kodları
┃ ┣ 📜 config.py # Akıllı Konfigürasyon Yöneticisi ve Varsayılan Ayarlar
┃ ┗ 📜 paths.py # İşletim Sisteminden Bağımsız Güvenli Dizin Sabitleri
┣ 📂 data/ # Veritabanı ve loglar için ayrılmış alan
┃ ┗ 📜 .gitkeep # Klasörün Git tarafından takip edilmesini sağlayan boş dosya
┣ 📂 tests/ # Birim Testleri
┃ ┗ 📜 test_core.py # Çekirdek modüller, db işlemleri ve regex örüntü testleri
┣ 📜 run.py # Ana Tetikleyici ve Parametre Yönlendirici
┣ 📜 setup.py # Dinamik Bağımlılık ve Termux Çözümleyici (Kurulum Scripti)
┣ 📜 requirements.txt # Gerekli Python kütüphaneleri listesi
┣ 📜 pyproject.toml # Modern Python paket inşa yapılandırması
┣ 📜 MANIFEST.in # Statik dosyaların (HTML/CSS) paketlemeye dahil edilme kuralları
┣ 📜 README.md # Proje dokümantasyonu ve kullanım rehberi
┣ 📜 LICENSE # GNU GPLv3 Açık Kaynak Lisans Dosyası
┗ 📜 .gitignore # Git tarafından takip edilmeyecek dosyalar
config.py modülü, güvenli klasör yapılarını işletim sisteminize göre otomatik tanımlar. Konfigürasyon veritabanında tutulur. Hiyerarşik (Ağaç) Gmail etiketleri, hariç tutulacak kelimeler, özel çöp kutusu kuralları, manuel veri yolları gibi ince ayarlar, Web Arayüzündeki ⚙️ Ayarlar sekmesinden gerçek zamanlı olarak düzenlenebilir.
Bu proje asansör bakım firmaları, yöneticiler ve denetçilerin iş yükünü hafifletmek amacıyla geliştirilmiştir. Yeni bir firmanın PDF şablonunu sisteme eklemek çok kolaydır!
- Projeyi fork'layın.
- Yeni özelliğiniz için bir branch açın (
git checkout -b feature/YeniFirmaParser). - Kodunuzu PEP8 standartlarına uygun olarak yazıp commit'leyin.
- Branch'inizi gönderin (
git push origin feature/YeniFirmaParser). - Bir Pull Request oluşturun.
Bu proje GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 altında lisanslanmıştır. Daha fazla bilgi için lisans dosyasına göz atabilirsiniz.