
Perkembangan teknologi TI modern memungkinkan untuk mengekang aliran data yang sangat besar.
Bisnis ini memiliki berbagai alat: CRM, ERP, BPM, sistem akuntansi, atau dalam kasus ekstrim hanya Excel dan Word.
Perusahaan juga berbeda. Beberapa terdiri dari banyak cabang yang terpisah. Dalam hal ini, bisnis memiliki masalah sinkronisasi data di kebun binatang sistem TI. Selain itu, cabang berbeda dalam versi vendor atau perangkat lunak. Dan perubahan yang sering terjadi dalam persyaratan pelaporan dari perusahaan manajemen menyebabkan serangan “kegembiraan” yang tidak terkendali di lapangan.
Kisah ini adalah tentang sebuah proyek di mana saya kebetulan menghadapi kekacauan yang perlu disistematisasikan dan diotomatisasi. Anggaran sederhana dan tenggat waktu yang ketat membatasi penggunaan sebagian besar solusi industri, tetapi membuka ruang untuk kreativitas.
Format universal
Pelanggan menetapkan tugas mengumpulkan data untuk laporan dari semua cabang perusahaan. Untuk memahami skala bencana, ada puluhan sistem, termasuk buatan sendiri dan monster seperti SAP, dan, tentu saja, 1C - di mana tanpa itu.
Dalam satu laporan, data dari: pembukuan, tukang reparasi, spesialis PR, Kementerian Keadaan Darurat, para ahli meteorologi bisa bersilangan.
Sebelum dimulainya proyek, sebagian besar data dikirim ke perusahaan induk melalui email dalam bentuk lampiran Word / Excel. Selanjutnya, prosesnya menyerupai matahari terbenam secara manual: data diproses oleh orang-orang yang terlatih khusus dan dimasukkan ke dalam beberapa sistem. Hasil pekerjaan itu adalah lusinan laporan, berdasarkan keputusan manajerial dibuat.
Pilihan pendekatan diminta oleh format file yang ditransfer, yaitu xlsx / docx. Bahkan sistem "kuno" di cabang mendukung pengunggahan data ke format ini, baik, atau dalam kasus yang ekstrim, tidak ada yang membatalkan salin-tempel.
Rencana keras kepala kami adalah ini:
- menggambarkan struktur setiap laporan dan aturan untuk pengirimannya;
- kami menurunkan persyaratan untuk mengatur sistem untuk mengirim dokumen melalui email sesuai dengan peraturan ke cabang. Di mana tidak ada sistem - pengiriman, seperti sebelumnya, dengan tangan;
- Kami sedang mengembangkan program yang:
- memilih dokumen tertentu dari surat masuk;
- ekstrak data dari mereka;
- menulis data yang diekstraksi ke dalam basis data, serta “mengalahkan” para pelanggar peraturan.

Implementasi
Masalah organisasi
Pada tahap pengumpulan dan formalisasi persyaratan untuk struktur dan regulasi transfer data, ternyata tidak ada deskripsi struktur laporan sama sekali. Semuanya tersimpan di benak beberapa karyawan dan dikirim sebagai cerita rakyat Rusia dari mulut ke mulut. Tetapi masalah sebenarnya dimulai kemudian - saat mengatur pertukaran data.
Masalah satu
Perbedaan antara struktur dokumen dari referensi dan kualitas data. Dalam laporan, jumlah kadang-kadang tidak konvergen, kolom dicampuradukkan atau memiliki nama yang salah. Masalahnya terutama diamati di cabang di mana data didorong secara manual.
Solusinya adalah penerapan verifikasi tiga langkah:
- Membuat referensi dokumen Excel dengan struktur yang kaku, menggunakan Excel sendiri. Dalam dokumen tersebut, hanya sel entri data yang tersedia. Yang dikenakan pemeriksaan tambahan: jenis, konvergensi jumlah, dll.
- Cek saat mengekstraksi data dari laporan. Misalnya, perbandingan tanggal dan tanggal saat ini dalam paragraf dokumen Word atau aritmatika memeriksa data dari dokumen Excel (jika tidak dapat ditentukan dalam dokumen itu sendiri).
- Analisis data mendalam setelah pengumpulan. Misalnya, deteksi penyimpangan signifikan dalam indikator utama dibandingkan dengan periode sebelumnya.
Masalah kedua
Pelanggaran sistematis atas jadwal transfer data atau upaya sabotase yang tidak bermoral: "Secara umum, kami tidak pernah mengirim data kepada siapa pun, tetapi di sini Anda bersama data saya sendiri ...", "Ya, saya mengirim semuanya tepat waktu, ini mungkin ping yang buruk."
Solusinya adalah umpan balik. Sistem secara otomatis memberi tahu orang yang bertanggung jawab di cabang jika terjadi pelanggaran jadwal. Kemudian, subsistem umpan balik disekrupkan ke sistem kontrol kualitas input data dan ke sistem pelaporan akhir, sehingga cabang akan segera menerima satu set data dan dibandingkan dengan "tetangga".
Untuk memperjelas mengapa dia menyapu.Subsistem yang Dikembangkan
- Konfigurasi jenis dokumen dengan data, di mana Anda dapat dengan cepat menjelaskan:
- tanda-tanda untuk mengidentifikasi dokumen;
- peraturan transfer;
- algoritma ekstraksi data;
- atribut lain seperti jalur ke kode yang memvalidasi dan menyimpan data.
- Penerima surat yang memindahkan lampiran ke penyimpanan terisolasi (kotak pasir) dan menyimpan informasi terkait tentang surat itu;
- Pengurai lampiran yang mendefinisikan jenis dokumen dan mengekstrak data dari mereka.

Configurator
Secara historis, semua dokumen dengan data datang ke surat umum, tempat surat itu penuh dengan surat-surat penting dan bukan lainnya. Kita membutuhkan tanda-tanda yang dengannya dokumen-dokumen yang diperlukan akan ditentukan. Nama dokumen atau teks di badan email semuanya tidak dapat diandalkan dan tidak nyaman bagi pengirim. Oleh karena itu, diputuskan bahwa keanggotaan dalam laporan hanya akan ditentukan oleh isi dokumen. Selain itu, Anda harus menentukan jenis laporan yang berisi dokumen tersebut.
Mereka datang dengan brainstorming lobak tahu berapa banyak tanda untuk mengidentifikasi dokumen: warna teks dalam sel, font, dll. Tetapi yang paling benar adalah tanda kehadiran substring di "slot" sel tertentu atau array sel untuk Excel dan paragraf atau heading untuk Word. Logika formal sederhana ditambahkan untuk “slot”: “equal”, “unequal”, “more”, “less”, dll. Contoh untuk Excel: dalam rentang A2-E4, teks sel harus sama dengan "Ringkasan harian tentang pemuatan peralatan".

Area dokumen tempat Anda ingin mencari awal dan akhir data dikonfigurasikan dengan cara yang sama (kurang-lebih Kondisi untuk menemukan akhir: 2 baris kosong berturut-turut).

Pengaturan berguna lainnya termasuk daftar pengirim yang diselesaikan, tipe dokumen (Excel / Word), dan jalur untuk mengekspor data.
Pada output, kita mendapatkan struktur JSON (templat) yang menggambarkan laporan.
Penerima surat
Pembaca surat yang meletakkan semua dokumen dari lampiran di kotak pasir, menyimpan atribut surat dan menempatkan dokumen dalam antrian tugas untuk penguraian.
Ada 2 pertanyaan keamanan:
- Bagaimana jika data dikirim ke cabang lain?
- bagaimana jika data dikirim oleh penyerang?
Masalah pertama diselesaikan dengan merekonsiliasi alamat email cabang pengiriman dan cabang yang ditentukan dalam badan laporan.
Yang kedua menggunakan
SPF .
Parser Lampiran
Hampir semua perpustakaan untuk parsing Word dan Excel memiliki batasan serius pada versi yang didukung, jadi untuk memulai dokumen perlu dikonversi. Libre Office menyelesaikan masalah ini hingga lima.
Setelah konversi:
- kami memfilter array template sesuai dengan karakteristik dasar dari konfigurator (Word / Excel, pengirim ...);
- jalankan dokumen dengan templat yang tersisa;
- jika templat ditemukan, kami mengekstrak data dan mentransfernya ke repositori.
Ringkasan
Kami berhasil!
Setelah dua bulan bekerja keras, kantor pusat mulai secara teratur menerima data untuk laporan dari semua cabang. Selain itu, kualitas dan kelengkapan data sangat berbeda dari sebelumnya, dan sumber daya manusia yang dirilis menutup biaya proyek pada akhir tahun.
Bagi kami sendiri, kami belajar bahwa integrasi tidak selalu menyakitkan dan menyoroti aspek-aspek utama kesuksesan:
- kami tidak masuk ke sistem di dalam cabang;
- memformalkan dan menyetujui satu struktur laporan dan regulasi untuk pengirimannya;
- templat format keluaran yang dibuat umumnya tersedia untuk semua sistem dalam bentuk dokumen Excel dan Word;
- memilih metode pengiriman data yang paling umum - email.
Dan dua kelemahan utama:
- Kecepatan pengiriman data rendah.
- Ukuran paket data tidak boleh melebihi ukuran lampiran email biasa.