7.4 Zarządzanie assetami i wersjonowanie
Przy stu assetach folder wystarcza. Przy dziesięciu tysiącach to on decyduje, czy odpowiesz na pytanie w minutę, czy w dzień — a pytania, które przychodzą, nie są opcjonalne. Który model to zrobił? Co opublikowaliśmy w wersji trzeciej? Czy da się to odtworzyć? Czy to ta sama grafika, którą opublikowaliśmy w marcu?
Ten rozdział to najmniejszy system, który na nie odpowiada.
Struktura biblioteki
Pięć osi, a struktura wynika z pytań, nie z estetyki:
assets/
<persona>/ one folder per persona
00-bible/ canon, timeline register (2.3, 2.4)
10-references/ face, body, outfits, locations, props (5.3)
20-datasets/ training inputs (4.4)
30-models/ adapters, hashes, base version (4.5)
40-prompt-lists/ variant files (5.2)
50-output/ raw generations, by run
<run-id>/ one folder per batch
manifest.json prompts, seeds, model, references
60-approved/ passed QA, not yet published (5.6)
70-published/ what went out, when, where
80-queue/ fix queue and bank
99-archive/ retired versions, never overwritten
Trzy decyzje strukturalne, których warto bronić.
Folder na run. Outputy grupujemy według batcha, który je wyprodukował, bo to jest jednostka, którą trzeba będzie unieważnić. Jeśli run użył złego adaptera, chcesz zidentyfikować wszystko, co powstało — a to operacja na folderze, nie zapytanie do bazy.
Zatwierdzone i opublikowane to osobne stany. Bank z 5.6 to materiały zatwierdzone, ale jeszcze nieopublikowane, i to inny stan niż opublikowane. Scalenie ich oznacza, że nie odróżnisz, co widziała publiczność.
Archiwum, nigdy usuwanie. Wycofane reference'y i adaptery przenosisz do archiwum razem z ich datami. Procedura wycofywania z rozdziału 4.7 i rejestry ujawnienia z 11.3 potrzebują tego, żeby stare wersje istniały.
Status assetu
Sześć stanów, a każdy asset jest dokładnie w jednym:
| Status | Znaczenie | Dalej |
|---|---|---|
generated |
Surowy output, jeszcze nieprzejrzany | QA |
rejected |
Nie przeszedł QA, z kodem defektu | Kolejka poprawek albo kosz |
approved |
Przeszedł wszystkie trzy etapy QA | Bank albo publikacja |
scheduled |
Ma slot publikacji | Publikacja |
published |
Na żywo, z URL-em i datą | Analityka |
archived |
Wycofany, trzymany dla rejestrów | — |
Dlaczego statusy, a nie same foldery. Status to zapytanie. „Ile mam zatwierdzonych assetów?" i „co jest zatwierdzone dłużej niż trzydzieści dni bez publikacji?" to pytania, które zmieniają decyzje, a odpowiesz na nie tylko wtedy, gdy stan jest zapisany wprost.
Jeden status wymaga dyscypliny: rejected wymaga kodu defektu z dwunastowierszowej tabeli w 5.6, nie samej flagi. To właśnie kody zamieniają historię odrzuceń w diagnozę twojego pipeline'u — różnica między wiedzą, że rejection rate wynosi 30%, a wiedzą, że wynosi 30% z powodu dłoni.
Metadane: pola, które zasługują na swoje miejsce
Na każdy asset, z powodem dla każdego pola:
| Pole | Po co istnieje |
|---|---|
asset_id |
Stabilne odniesienie |
persona |
Rozróżnienie wielu person |
created |
Data, dla rejestru ciągłości |
prompt |
Odtworzenie; także zapis z 11.5 |
prompt_variant |
Który z czterdziestu (5.2) |
seed |
Odtworzenie (5.2) |
model + version |
Odtworzenie i diagnoza |
base_model_hash |
Pułapka niezgodności z 4.5 |
adapter + version + hash |
Wersja tożsamości |
references_used |
Który sheet/strój/lokalizacja (5.1, 5.3) |
qa_score |
Wymiary z 4.6 |
defect_code |
Dla odrzuceń (5.6) |
edits |
Co zmieniono po generacji |
status |
Sześć stanów wyżej |
published_url + date |
Zgodność i analityka |
disclosure_label |
11.3 |
Sześć z szesnastu istnieje dla zgodności. prompt, model, adapter, created, published_url i disclosure_label to pola, które pozwalają odpowiedzieć regulatorowi albo platformie na pytanie, co opublikowałeś i jak to powstało. Obowiązki oznaczenia odczytywalnego maszynowo z rozdziału 11.5 i rejestry ujawnienia z 11.3 zależą od tego, czy te dane istnieją, a odtworzyć ich później nie da się.
Praktyczny test: jeśli brand poprosi cię o dowód, jak powstał frame w reklamie, odpowiesz z systemu w minutę? Jeśli nie — brakuje jakiegoś pola.
Automatyzacja metadanych
Ręczne wpisywanie metadanych nie przeżyje zderzenia z wolumenem. Pisać je musi system.
W momencie generacji: Warstwa automatyzacji, która wywołuje silnik, przekazuje parametry i archiwizuje wyjścia; tutaj n8n. (7.3) zapisuje prompt, wariant, Losowy punkt startowy; ten sam seed z tymi samymi ustawieniami odtwarza ten sam obraz., wersję modelu, wersję adaptera i ścieżki reference'ów do manifestu runu. Pipeline już to wszystko zna — to krok odczytu i zapisu, nie nowa praca.
Na etapie QA: człowiek dopisuje wynik i status — dwa pola, które naprawdę wymagają oceny. Wszystko inne jest już zapisane.
W momencie publikacji: Harmonogram szumu, za którym idzie sampler, taki jak normal albo karras. zapisuje URL, datę, platformę i etykietę ujawnienia. Znowu mechanicznie.
Konsekwencja: jedyne pola, których dotyka człowiek, to qa_score, defect_code i status. Trzy pola — dlatego ten system jest wykonalny.
Gdzie to trzymać. Ustrukturyzowany plik na asset (JSON obok obrazu) albo baza danych. Pojedynczy JSON na asset przeżyje zmiany narzędzi, da się przeszukać grepem i nie wymaga infrastruktury; baza jest szybsza w skali, a gorsza w przenoszeniu. Zacznij od plików i przenieś się wtedy, gdy trafisz na zapytanie, na które nie umiesz odpowiedzieć.
Deduplikacja i wykrywanie near-duplikatów
Publikacja tego samego frame'a dwa razy to konkretna awaria z konkretną przyczyną: listy wariantów promptów bywają używane ponownie, a operator tego nie pamięta.
Dwa sprawdzenia, oba tanie:
Dokładne duplikaty po hashu. Banalne i łapie kopię.
Near-duplikaty przez porównanie percepcyjne nowego assetu z ostatnimi N opublikowanymi. Hash obrazu albo porównanie embeddingów łapie przypadek „ta sama scena, wygenerowana ponownie z drobną zmianą" — ten, który naprawdę dociera do publiczności.
I jedno sprawdzenie przez człowieka, którego żaden system nie zastąpi: czy to wygląda jak coś, co opublikowaliśmy niedawno? Krocząca reguła wykluczania z 5.3 to wersja ręczna i warto ją zostawić nawet przy automatyzacji, bo near-duplikat to osąd o pamięci publiczności, nie porównanie pikseli.
Wersjonowanie samych assetów
Trzy osobne przestrzenie wersji, które ludzie mieszają:
Wersje tożsamości. Mały adapter niskiego rzędu, od kilkudziesięciu do dwustu megabajtów, który popycha bazę w stronę jednej twarzy. v1, v2, v3, każda ze swoim base hashem. Zmiana tutaj zmienia twarz persony i jest zdarzeniem dużej wagi (4.5, 4.7).
Wersje reference'ów. Sheet v1 dla LoRA v1. Nowy sheet dla tego samego adaptera to zdarzenie mniejszej wagi (5.1).
Wersje produkcyjne. Lista promptów 2026-Q3, wersja graphu, wersja presetu. Ich zmiana zmienia to, jak renderowana jest ta sama tożsamość.
Reguła: każdy asset zapisuje wszystkie trzy, bo odpowiedź na pytanie „dlaczego to wygląda inaczej" zależy od tego, która przestrzeń się zmieniła. Magazyn assetów, który zapisuje tylko jedną, nie odpowie na to pytanie.
Backupy
Niegustowne i obowiązkowe, bo biblioteka to cały biznes. Utrata reference library oznacza utratę możliwości odtworzenia persony.
Trzy kopie, dwa nośniki, jedna poza siedzibą. Klasyczne sformułowanie i tutaj też się trzyma. Dysk lokalny, druga kopia lokalna na innym sprzęcie i kopia w chmurze albo zdalnie.
Najpierw kopiuj reference'y, adaptery, listy promptów i metadane. Są małe i nie do odtworzenia. Wygenerowane outputy są duże i regenerowalne, więc mają najniższy priorytet w backupie.
Raz przetestuj odtworzenie. Nieprzetestowany backup to plik — tak mówi reguła higieny z 3.6. Odtworzenie jednego folderu z backupu to piętnastominutowe ćwiczenie, które dowodzi całego systemu.
Gdzie to się psuje
Jeden płaski folder. Pytania bez odpowiedzi w ciągu miesięcy.
Scalenie zatwierdzonych z opublikowanymi. Tracisz rozeznanie, co widziała publiczność.
Usuwanie wycofanych wersji. Tracisz możliwość wyjaśnienia własnej historii.
Ręczne metadane. Nikt ich nie będzie utrzymywał.
Zapis modelu bez base hasha. Pułapka niezgodności, nie do zdiagnozowania.
Brak sprawdzania near-duplikatów. Powtórka dociera do publiczności.
Mieszanie trzech przestrzeni wersji. „Dlaczego to wygląda inaczej" staje się pytaniem bez odpowiedzi.
Brak przetestowanego backupu. Biblioteka to cały biznes.
Bramka
- Czy biblioteka ma jeden folder na personę, z osobnymi obszarami na runy, zatwierdzone, opublikowane i archiwum?
- Czy każdy asset jest dokładnie w jednym z sześciu stanów?
- Czy zapisujesz szesnaście pól, w tym sześć, które istnieją dla zgodności?
- Czy pola metadanych są zapisywane automatycznie w momencie generacji i publikacji, a człowiek dotyka tylko trzech pól?
- Czy masz sprawdzanie zarówno dokładnych duplikatów, jak i near-duplikatów?
- Czy odróżniasz wersje tożsamości, reference'ów i produkcyjne?
- Czy masz trzy kopie i czy przetestowałeś odtworzenie?
Co z tego zostaje
Pięcioosiowa struktura biblioteki z folderem na run i osobnymi stanami zatwierdzonych i opublikowanych, sześć statusów assetu z dyscypliną, że odrzucenia noszą kod defektu, szesnaście pól metadanych z sześcioma istniejącymi dla zgodności, plan automatyzacji, który sprowadza ręczne wpisywanie do trzech pól, wykrywanie dokładnych duplikatów i near-duplikatów, trzy przestrzenie wersji, które trzeba zapisywać osobno, oraz reguła backupu z jednym testem.