/small_eod

System służący do usprawnienia obiegu dokumentów Stowarzyszenia na potrzeby prowadzonych litygacji Stowarzyszenia

Primary LanguagePythonMIT LicenseMIT

Small_EOD

Build Status Build Status Slack join

System służący do usprawnienia obiegu dokumentów Stowarzyszenia, w szczególności w zakresie:

  • obiegu korespondencji w zakresie spraw sądowych
  • archiwizacji dokumentacji

Założenia

  • system rozwijany będzie małymi etapami, aby jak najszybciej dostarczał wartość dla biura Stowarzysznia

  • w początkowych etapach system będzie przeznaczony do archiwizacji dokumentów pochodzących z różnych mediów

  • w przyszłości system będzie służył także do:

    • zarządzanie przebiegiem procesu sporządzenia pism
    • powiadamiania o nowych pismach
    • kontroli terminów
    • wysyłkę pism poprzez odpowiednie kolejki:
      • Envelo - realizowane automatycznie
      • ePUAP - realizowane manualnie przez osoby uprawnione, a następnie automatycznie
      • Poczta tradycyjna - realizowane manualnie przez osoby uprawnione
  • należy w trakcie rozwoju zachować ciągłość funkcjonowania procesów Stowarzyszenia

  • system trwale będzie miał charakter wewnętrzny dla Stowarzyszenia

    • publikacja danych z systemu odbywać się będzie poprzez API
  • Platforma udostępnia skuteczne API w celu umożliwienia powstania wokół systemu integracji

  • Uwierzytelnienie z wykorzystaniem GSuite

Architektura

System składa się z następujących komponentów:

  • Back-end - Django, dostępny w podkatalogu backend-project
  • Front-end - React, dostępny w podkatalogu frontend-project
  • Minio - podsystem składowania plików binarnych (dokumenty, zdjęcia itp.)
  • Baza danych PostgreSQL

Dodatkowe uwagi:

  • Projekt Stowarzyszenia korzysta z kontenerów Docker.
  • Dodatkowe integracje tj. e-mail, ePUAP, Envelo mogą być odrębnymi usługami, lecz komunikującymi się (microservices)
  • Back-end udostępnia dokumentacja REST API zgodną z Swagger
  • Została opracowana biblioteka: small-eod-sdk-javascript

Historia

Stowarzyszenie prowadziło jedynie rejestr korespondencji w oparciu o interfejs webowy dla dwóch tabelach SQL (przychodzące i wychodzące)

Opracowano small_eod v1, który umożliwiał rejestracje rejestracje dokumentów papierowych i rejestracje spraw. Całość została wykonana w oparciu o django-admin, co ograniczało rozwój, lecz pozwoliło na poznanie podstawowych koncepcji.

Rozpoczęto opracowanie small_eod v2, który stanowić ma trwałe rozwiązanie dla Stowarzyszenia poprzez m. in.: elastyczny interfejsu użytkownika nie opartego o django-grappeli, w szczególności umożliwiającego:

  • sprawne zarejestrowanie sprawy
  • zarejestrowanie sprawy i jednoczesne wielu archiwalnych listów
  • przesłanie załączników poprzez przeciągnięcie i upuszczenie

Szczegółowe założenia i wymagania dla small_eod v2 zostały przedstawione w docs.

Udział w projekcie

W celu rozwoju projektu kod źródłowy projektu można pobrać za pomocą komendy git:

git clone git@github.com:watchdogpolska/small_eod.git

W przypadku pracy w środowisku Windows/Mac można wykorzystać GitHub Desktop. W celu pobrania należy postępować zgodnie z instrukcją.

Projekt realizowany jest zgodnie z filozofią open-source. Szczegółowe informacje na temat:

Zadania do wykonania są zarejestrowane jako zagadnienia oznaczone etykietą good first issue w portalu GitHub. W celu ich realizacji wystarczy komentarz o rozpoczęciu prac, a następnie utworzenie żądania wcielenia zmian (pull request).

Bieżąca komunikacja projektu odbywa się z wykorzystaniem Slacka organizacji CodeForPoznań na kanale #watchdog. Odbywają się regularne spotkania statusowe (szczegóły w zagadnieniu https://github.com/watchdogpolska/small_eod/issues/547), gdzie można uzyskać wprowadzenie w projekt, dowiedzieć się na temat zadań i usunąć inne trudności we współpracy.

Uruchomienie projektu

W celu ułatwienia rozwoju projektu wykorzystywane jest oprogramowanie Docker. Umożliwia ona uruchomienie wszystkich usług niezbędnych do pracy nad projektem. Usługi zostały opisane w pliku docker-compose.yml.

W celu uruchomienia środowiska aplikacji wymagane jest:

Aby dowiedzieć się więcej o oprogramowaniem zapoznaj się z wideo Docker dla webdevelopera - #01 - Czym jest Docker?.

W celu uruchomienia projektu należy wykonać:

docker-compose up

Po pomyślnym uruchomieniu projektu środowisko pod adresem http://localhost:8000/admin/ winno być możliwe logowanie z wykorzystaniem loginu i hasła, a wszelkie zmiany kodu aplikacji w lokalnym repozytorium będą automatycznie załadowane przez Django.

W celu utworzenia konta administratora należy wykonać:

docker-compose run backend python manage.py createsuperuser

W celu utworzenia próbnych danych należy wykonać:

docker-compose run backend python manage.py init_data

W razie problemów z uruchomieniem projektu utwórz nowe zagadnienie

Testy automatyczne

Projekt wykorzystuje testy automatyczne, które zapewniają weryfikacje wszystkich wprowadzonych zmian. Wszelkie proponowane zmiany z wykorzystaniem GitHub Actions.

Wszelkie zmiany w repozytorium będą uruchamiały serie testów automatycznych, ale przed ich dodaniem masz możliwość wykonania testów lokalnie za pomocą Makefile.

W celu wykonanie testów automatycznych formatowania należy wykonać:

make lint

Większość problemów w formatowania można naprawić z wykorzystaniem automatycznego formatowania za pomocą wykonania:

make fmt

W celu wykonania testów automatycznych back-endu należy wykonać:

make test-django-backend

Wdrożenie automatyczne

Każda zmiana znajdująca się na gałęzi dev jest wdrażana z wykorzystaniem GitHub Actions do usługi Strona od HyperOne, która jest usługą klasy platform-as-a-service.

Publiczny dostęp do środowiska testowego odbywa się z wykorzystaniem adresu: dev.small-eod.siecobywatelska.pl. Dostępne jest konto użytkownika root z hasłem root. W przypadku uszkodzenia konta – utwórz nowe zagadnienie.

Dla potrzeb środowiska testowego w HyperOne zostały uruchomione:

  • dwie odrębne usługi Strona:
    • dla back-endu – oparte o środowisko wykonawcze h1cr.io/website/python-passenger:3.7
    • dla front-endu – oparte o środowisko wykonawcze h1cr.io/website/nginx-static:latest
  • usługa Baza danych w wariancie PostgreSQL 11
  • kontenery w klasycznej infrastrukturze Stowarzyszenia (bazującej na Wirtualnych Maszynach HyperOne):
    • Minio – dla usługi składowania plików – do momentu opracowania zarządzanej usługi przez dostawcę usług chmurowych
    • Balancer – dla zintegrowania usług Strona – do momentu opracowania zarządzanej usługi przez dostawcę usług chmurowych

Dostęp do wersji demo

W sprawie dostępu do wersji demo napisz na Slacku. Dostęp do API również wymaga loginu i hasła, które można otrzymać na Slacku.

Materiały dodatkowe

Wsparcie Vercel

Projekt wspierany jest przez firmę Vercel