feat(astroklient): własna warstwa danych i pule per konto (PRE-29)
Zmiana wobec pierwszej wersji: demo NIE pracuje już na produkcyjnej warstwie danych. Ma własną logikę i własne dane, na osobnym udziale astrololo-demo, pustym na starcie. Oryginalne bazy są dla demo nieosiągalne — nie przez uprawnienia, tylko dlatego, że nie ma do nich drogi. DLACZEGO OSOBNA JEST TEŻ WARSTWA LOGICZNA. Zna ona JEDEN adres warstwy danych, więc astroklient korzystający z produkcyjnej logiki i tak trafiłby na produkcyjne bazy. Izolacja musi sięgnąć obu warstw naraz, inaczej nie ma jej wcale. Jedyną różnicą logic-demo wobec produkcyjnej jest DATA_URL — i to jest cała izolacja, więc wpisanie tam „logic" cofnęłoby ją jednym słowem. Stąd komentarz przy tej linii i sąsiedztwo obu plików. PULE PER KONTO. Każde konto demo dostaje własny podkatalog na tym udziale, niewidoczny dla pozostałych — w liście plików i w wynikach wyszukiwania. Konta są listą `login:sekret` w sekrecie, bo jedno wspólne oznaczałoby wspólną pulę, czyli klientów oglądających nawzajem swoje wgrania. Ten sam OBRAZ co produkcja dla data i logic — różni je wyłącznie konfiguracja. Osobny obraz to drugi kod do utrzymania i pewność, że kiedyś się rozjadą. Logika demo nie dostaje kluczy do modeli językowych: astroklient nie umie o nie prosić, więc nie ma powodu, żeby leżały w tym podzie. Runbook opisuje IMPORT PULI KLIENTA do pełnej aplikacji — sedno całego układu, bo klient przechodzący na pełną wersję nie może stracić wgrań. Jego pula to jeden katalog: sprawdzenie kolizji nazw, kopiowanie z -n (nigdy nadpisania bazy produkcyjnej), bez pliku stanu (produkcja ma własny), a na końcu świadome włączenie w zakładce Pliki. Nie włączają się same, bo przeniesienie jest czynnością techniczną, a decyzja o użyciu należy do właściciela. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -3,10 +3,14 @@
|
||||
# Osobna usługa o DWÓCH funkcjach: dodanie pliku bazy i zapytanie o interpretację
|
||||
# urodzeniową. Pozostałe funkcje nie są tu ukryte — nie ma ich w obrazie.
|
||||
#
|
||||
# ⚠️ PRACUJE NA PRODUKCYJNEJ WARSTWIE DANYCH (świadoma decyzja właściciela).
|
||||
# Kto ma dostęp do demo, czyta oryginalne bazy interpretacyjne, a pliki przez nie
|
||||
# wgrane trafiają do produkcyjnego zbioru. Dlatego konto jest OSOBNE: demo odcina
|
||||
# się skasowaniem sekretu astrololo-demo, bez ruszania kont głównej aplikacji.
|
||||
# IZOLACJA (PRE-29): astroklient ma WŁASNĄ warstwę logiczną i WŁASNĄ warstwę
|
||||
# danych (astroklient-stack.yaml), pracujące na osobnym, pustym na starcie
|
||||
# udziale. Oryginalne bazy interpretacyjne są dla demo NIEOSIĄGALNE.
|
||||
#
|
||||
# Wewnątrz demo każde konto ma własną pulę plików — swój podkatalog na tym
|
||||
# udziale — niewidoczną dla pozostałych kont. Dzięki temu demo można rozdawać
|
||||
# szeroko, a pliki jednego klienta da się później przenieść do pełnej aplikacji
|
||||
# jako jeden katalog (patrz README-astroklient.md).
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
@@ -25,15 +29,20 @@ spec:
|
||||
image: gitea.czernobog.pl/gitea/astrololo-astroklient:latest
|
||||
ports: [{ containerPort: 8005 }]
|
||||
env:
|
||||
# WŁASNA warstwa logiczna, wskazująca na WŁASNĄ warstwę danych.
|
||||
# Wpisanie tu produkcyjnego `logic` cofnęłoby całą izolację demo
|
||||
# jednym słowem — dlatego stoi to tuż obok siebie w jednym pliku.
|
||||
- name: LOGIC_URL
|
||||
value: "http://logic:8001"
|
||||
value: "http://logic-demo:8001"
|
||||
# Konto demo — WŁASNE, nie astrololo-auth. Sekret tworzony POZA repo
|
||||
# (jak pozostałe), patrz README-astroklient.md.
|
||||
- name: DEMO_USER
|
||||
value: "demo"
|
||||
- name: DEMO_PASSWORD
|
||||
# KONTA DEMO — lista `login:sekret` po przecinku. Każde konto ma
|
||||
# WŁASNĄ, niewidoczną dla pozostałych pulę baz (PRE-29), więc jedno
|
||||
# wspólne konto oznaczałoby klientów oglądających swoje wgrania
|
||||
# nawzajem. Sekrety najlepiej jako hash scrypt.
|
||||
- name: DEMO_USERS
|
||||
valueFrom:
|
||||
secretKeyRef: { name: astrololo-demo, key: DEMO_PASSWORD }
|
||||
secretKeyRef: { name: astrololo-demo, key: DEMO_USERS }
|
||||
# Token międzywarstwowy i klucz łącza — TE SAME co prezentacja:
|
||||
# demo nie jest furtką omijającą ochronę warstwy logicznej.
|
||||
- name: INTERNAL_TOKEN
|
||||
|
||||
Reference in New Issue
Block a user