astroklient: warstwa pośrednia — pełne astro, bez generowania i administracji (4/5) #83
Reference in New Issue
Block a user
Delete Branch "feat/astroklient"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Trzeci produkt drabiny: astrodemo (dwie funkcje) → astroklient → astrololo.
Po trzech poprzednich krokach jest cienki, bo jest złożeniem, a nie kopią: własne
main.pyz ośmioma importami, a rdzeń — ekrany, szablony, zasoby — bierze z warstwy prezentacji przy budowaniu obrazu. Jedno źródło, dwa produkty; inaczej te same 2500 linii szablonów żyłyby w dwóch egzemplarzach i rozjechały się w ciągu tygodni, po cichu.Ma: Horoskop, Interpretacje, Kalendarz, Synastria, Sygnifikatory, wgrywanie plików. Wyszukiwarka miejsca i strefa czasowa — zgodnie z ustaleniem.
Nie ma i nie da się włączyć: plików usuniętych wg
usun.txtnie ma w obrazie. Nie istnieje uprawnienie, którym dałoby się je odsłonić, bo katalog funkcji składa się ze zgłoszeń ekranów obecnych w obrazie. To dlatego „każde konto dostaje wszystko, co ta usługa umie" jest tu bezpieczne i nie wymaga wypisywania listy — zbiór liczy się z katalogu, więc opisuje ten produkt.Pule per konto — tu była realna dziura
Warstwa logiczna przenosiła pulę tylko przy raporcie i operacjach na plikach. Kalendarz i Sygnifikatory czytałyby cały udział — jedno konto widziałoby pliki drugiego, mimo że izolacja pul jest całą przesłanką tego produktu.
Domknięte:
TimelineRequestiQueryRequestniosą teraz pulę, aQueryServicebuduje klienta danych na żądanie. Pula jedzie w każdym żądaniu w dół i bierze się z kontekstu ustawianego przy wejściu, nigdy z formularza — test podstawiatenant=ktos-innyw POST i sprawdza, że w dół poszedł login zalogowanego.Warstwa wspólna rozdzielona od pojęcia administratora
base.htmlmiał wpisany na sztywnocan(request, 'admin')i odsyłacz do ekranu kont — czyli w produkcie bez tego ekranu zostawał martwy link i nazwa czegoś, czego nie ma. Rejestr niesie teraz wymagane uprawnienie, a szablon dostaje gotową listę.podstawa.pyprzestała też importować moduły służące jednemu ekranowi (konta, stany plików).Zapora słownikowa nad realnym drzewem
Test buduje złożenie tak samo jak Dockerfile i szuka słów o funkcjach, których nie ma — w odpowiedziach oraz w plikach.
Pierwsza wersja znalazła dziesięć trafień, w tym trzy moje własne docstringi wyliczające nieobecne funkcje. Zdanie „nie ma tu generowania tekstu" mówi wprost, że coś takiego istnieje — jest więc takim samym śladem jak przycisk. Po poprawkach: zero. Test ma kontrolę negatywną: podrzucony plik ma go wywrócić.
usun.txtjest danymi, nie tekstem w Dockerfile — czyta go też test pilnujący, żeby zgadzał się ze złożeniem wmain.py. Rozjazd znaczyłby albo martwy kod w obrazie, albo błąd dopiero przy uruchomieniu.CI
astroklient buduje się z korzenia repozytorium (jego Dockerfile sięga po rdzeń), a zmiana w warstwie prezentacji też go przebudowuje — bez tego jego obraz zostawałby ze starymi ekranami, a różnicy nie byłoby widać aż do zgłoszenia użytkownika.
Testy: astroklient 12 · presentation 368 · astrodemo 28 · logic 342 · data 42 · render 41.
Zostaje PR 5: manifesty wdrożeniowe astroklienta (własny host, sekret
astrololo-astroklient, udział NFS na pule, wpis w liście obserwowanych obrazów). Dorzucę tam poprawkę listy węzłów NFS — runbooki wymieniają trzy, a klaster ma cztery.