Ten rozdział to wizualny przewodnik po dwóch widokach grafowych AITM: Contract Explorer (mapa wszystkich behavioral contracts w projekcie) oraz App Flow (mapa tego, jak jeden konkretny element aplikacji wiąże się ze wszystkim innym). Wyjaśnia, co pokazuje każdy graf, jak czytać węzły, kolory i linie łączące, co oznacza legenda i do czego te dwa widoki faktycznie służą.
Contract Explorer & App Flow
Osoby, które jeszcze nie wiedzą, czym jest Contract i knowledge graph, powinny najpierw przeczytać rozdział Contracts, Knowledge Graph & Hints. Ten rozdział się na nim opiera i skupia się wyłącznie na nawigacji po obu wizualizacjach.
Contract Explorer — mapa Contracts projektu
Do czego służy: Contract Explorer to interaktywny graf wszystkich behavioral contracts w projekcie — zapisanych faktów o tym, jak zachowuje się każda część kodu. Na jednym ekranie widać, ile wiedzy AITM ma o projekcie, jak dobrze jest ona pokryta testami, które moduły są największe oraz jak Contracts łączą się z plikami, zmiennymi i dokumentacją. To najszybszy sposób, by odpowiedzieć na pytanie „co AITM wie o moim projekcie?” — oraz gdzie są słabe punkty (Contracts bez testów lub z testami zakończonymi niepowodzeniem).
Gdzie go znaleźć: w panelu projektu należy kliknąć podzakładkę Contracts (podzakładki projektu to Develop, Testing, Archive, Setting, Optimize, Contracts, Graph i Multi Graph). Sąsiednia podzakładka Graph rysuje graf kodu projektu, a Multi Graph rysuje go dla wszystkich projektów danej zakładki razem (jest widoczna tylko wtedy, gdy zakładka zawiera więcej niż jeden projekt).
Co jest na ekranie
Ekran składa się z czterech głównych obszarów:
- Górny pasek — zakładki zbiorów danych, statystyki zbiorcze i przyciski akcji.
- Lewy panel boczny — wyszukiwanie, filtry modułów i lista Contracts.
- Główny obszar grafu — interaktywny graf (przybliżanie kółkiem myszy, przesuwanie przez przeciąganie, węzły można przeciągać).
- Legenda (panel nakładkowy w lewym dolnym rogu grafu) — wyjaśnia kolory węzłów i typy linii.
Górny pasek — zakładki i statystyki
| Element | Znaczenie |
|---|---|
| Contracts (liczba) | Contracts wyprowadzone z kodu — główny zbiór danych pokazywany w grafie. |
| Doc Contracts (liczba) | Contracts wyodrębnione z dokumentacji (wyniki Tasks). Ta zakładka pokazuje listę zamiast grafu. |
| Doc Pointers (liczba) | Odwołania z plików dokumentacji do Contracts — „gdzie w dokumentacji jest o tym mowa”. |
| Needs Review (liczba) | Contracts oczekujące na przegląd (np. o niskiej pewności lub po konfliktowej zmianie). |
| Total / Passing / Failing / Unknown | Podsumowanie kondycji: ile Contracts istnieje, ile ma testy zakończone powodzeniem, ile niepowodzeniem, a ile ma status nieznany. |
| Coverage | Odsetek Contracts pokrytych testami. |
| Fix Contracts | Uruchamia naprawę niespójnych Contracts. |
| Reimport | Ponownie wczytuje Contracts ze źródeł projektu (pełna resynchronizacja). |
Poziomy szczegółowości — Module View a All Contracts
Nad grafem znajduje się przełącznik poziomu szczegółowości:
- Module View (domyślny dla dużych projektów, powyżej 500 Contracts) — każdy węzeł to cały moduł (np. „AI Chat”, „Backup Service”). Rozmiar bąbla odzwierciedla liczbę Contracts w module; linie między modułami oznaczają, że współdzielą pliki źródłowe. To „widok z lotu ptaka” — idealny punkt wyjścia.
- Kliknięcie modułu wchodzi głębiej do Module Detail — graf pokazuje wtedy poszczególne Contracts wybranego modułu.
- All Contracts — kompletny graf wszystkich Contracts naraz. W dużych projektach ze względu na wydajność jest ograniczony do 500 węzłów (plakietka pokazuje liczbę, a link „Show all” pozwala świadomie ominąć limit).
W prawym górnym rogu grafu znajduje się także przełącznik renderera: SVG, Sigma (domyślny — WebGL, radzi sobie z dużymi grafami), 3D, Cosmo i deck.gl. Nie zmienia on funkcjonalności, a jedynie sposób rysowania grafu — jeśli graf przycina się w dużym projekcie, warto wybrać Sigma.
Czytanie grafu — węzły
Każdy węzeł (kółko) to jedna encja. Kolor wskazuje jej typ — a w przypadku Contracts jednocześnie status testów:
| Kolor węzła | Typ / status | Znaczenie |
|---|---|---|
| Contract — Tested (passing) | Contract ma testy i wszystkie przechodzą. | |
| Contract — Failing | Contract ma test zakończony niepowodzeniem — tu warto zajrzeć w pierwszej kolejności. | |
| Contract — Untested | Contract bez żadnych testów — zachowanie jest opisane, ale niezabezpieczone. | |
| Module | Moduł (grupa Contracts) — główne bąble w Module View. | |
| File | Plik źródłowy współdzielony przez Contracts. | |
| Doc (Doc Pointer) | Plik dokumentacji odwołujący się do Contracts. | |
| Doc Contract / zmienna | Contract wyprowadzony z dokumentacji lub zmienna języka komunikacji. | |
| Behavior Doc | Wygenerowany dokument z opisem zachowania. |
Większy węzeł = ważniejsza encja (moduł z większą liczbą Contracts, Contract ze strefy ryzyka itp.).
Czytanie grafu — linie (relacje)
Linie między węzłami oznaczają „te dwie rzeczy są ze sobą powiązane”. Typ relacji jest zakodowany w stylu linii:
| Styl linii | Relacja | Znaczenie |
|---|---|---|
| ciągła | Module → Contract | Contract należy do modułu. W Module View grubość linii odzwierciedla liczbę plików współdzielonych między modułami. |
| ciągła cienka | Contract → File / Variable / Doc | Contract dotyka pliku, steruje zmienną lub jest opisany przez dokument. |
| przerywana fioletowa | DocContract → Contract | Contract z dokumentacji potwierdza lub rozszerza Contract z kodu. |
| przerywana pomarańczowa | Contract → Doc Pointer | Plik dokumentacji odwołuje się do Contract. |
| przerywana jasnofioletowa | DocContract ↔ Doc Pointer | Doc Contract i Doc Pointer dotyczą tego samego Contract — łańcuch dokumentacji. |
Praktyczna wskazówka: linie ciągłe = relacje w kodzie, linie przerywane = relacje przez dokumentację. Przerywana linia wychodząca z Contract oznacza, że istnieje dla niego pisemna dokumentacja — kliknięcie pomarańczowego węzła otwiera ją wprost w aplikacji.
Legenda
Legenda (panel w lewym dolnym rogu grafu) podsumowuje dokładnie to, co opisano powyżej — kolory węzłów i typy połączeń. Dla trzech stanów Contract pokazuje dodatkowo bieżące liczby i wartości procentowe (np. Tested (passing) 4/2403 (0%)): ile Contracts z aktualnie wyświetlanego zbioru znajduje się w każdym ze stanów. Liczby przeliczają się zgodnie z aktywnym filtrem — w Module View odnoszą się do modułów widocznych na ekranie, a po wejściu w moduł — do jego Contracts.
Lewy panel boczny
- Search — wyszukiwanie pełnotekstowe po identyfikatorach Contracts, opisach zachowania, plikach i zmiennych.
- Filters / Groups — przełącza między filtrem modułów (przyciski z nazwami modułów;
Allczyści filtr) a drzewem grupowanym. - Lista Contracts (na dole) — wypełnia się Contracts wybranego modułu. Każdy wiersz ma kolorową kropkę o takiej samej semantyce jak węzły grafu (zielony/czerwony/bursztynowy) oraz ikonę
dla Contracts w danger zone (miejscach, w których niewielka zmiana historycznie powodowała nieproporcjonalnie duże szkody).
Szczegóły Contract
Kliknięcie Contract (w grafie lub na liście) otwiera okno szczegółów Contract:
| Sekcja | Co pokazuje |
|---|---|
| Nagłówek + plakietki | Identyfikator Contract (np. DPL-001), moduł, status (code-only = wyprowadzony z kodu, bez testu, tested = ma testy) oraz plakietka kondycji (unverified, passing, failing). |
| Behavior | Sam Contract — jedno lub dwa zdania precyzyjnie opisujące zachowanie („co ta część robi i co zwraca, gdy…”). |
| Tests | Testy zabezpieczające to zachowanie (plik + nazwa testu). |
| Files | Pliki źródłowe, których dotyka Contract — kliknięcie filtruje graf. |
| Variables | Zmienne języka komunikacji (BL.*, UI.* …), którymi Contract steruje. |
| Reliability Score | Wskaźnik wiarygodności Contract (mieszanka wieku, testów i historii zmian). Niski wynik = informacje należy traktować z rezerwą. |
| Related Tasks | Tasks, które utworzyły lub zmodyfikowały Contract. |
| Screenshot | Dla Contracts interfejsu — podgląd elementu (przechwycony podczas kroku E2E w Pipeline). |
| Change History | Kiedy i przez który Task Contract został zmieniony. |
| Related Contracts / Documentation | Pokrewne Contracts (współdzielące pliki) oraz dokumenty odwołujące się do tego Contract. |
U góry szczegółów znajdują się dwa ważne przyciski:
Assembled doc — otwiera kompletny złożony dokument dla Contract.
Flow — przenosi bezpośrednio do widoku App Flow (patrz niżej), wycentrowanego na pierwszej zmiennej Contract. To most między obiema wizualizacjami: od „co obowiązuje” (Contract) do „jak to się wpisuje w aplikację” (przepływ).
App Flow — mapa relacji jednego elementu
Do czego służy: podczas gdy Contract Explorer pokazuje projekt z góry, App Flow odpowiada na pytanie „jak ten jeden konkretny element wiąże się z resztą aplikacji?”. Widać każdą zmienną języka komunikacji sąsiadującą z elementem — przez jej przestrzeń nazw, przez wspólne Contracts, przez wspólne pliki i przez nawigację w interfejsie. To idealne narzędzie do oszacowania wpływu zmiany („jeśli to ruszę, co jeszcze zostanie dotknięte?”) oraz do pisania precyzyjnych promptów Task.
Gdzie go znaleźć:
- Z Dev Panel — w działającej aplikacji należy kliknąć element; otworzy się okno jego szczegółów z zakładkami Graph | Guide & Flow | App Flow.
- Z Contract Explorer — przez przycisk
Flow w szczegółach Contract (patrz wyżej).
Co jest na ekranie
- Lewa kolumna — dane badanego elementu: nazwa, opis, warstwa, a przede wszystkim lista Contracts, które nim sterują (z identyfikatorem, statusem testów, kondycją, plikami i wynikiem). To te same informacje co w Contract Explorer, tylko z perspektywy pojedynczego elementu.
- Środek — graf — interaktywny graf z badanym elementem pośrodku i powiązanymi zmiennymi wokół niego.
- Prawy panel — filtry typów relacji (pola wyboru) oraz lista powiązanych zmiennych, odzwierciedlająca graf w czytelnej formie listy.
Czytanie grafu — węzły
| Wygląd węzła | Znaczenie |
|---|---|
| podpisany prostokąt | Variable — etykieta to ostatni segment notacji kropkowej (np. CODEMAP dla BL.CODEMAP). |
| węzeł z niebieską obwódką | Badany element — środek grafu, to, co zostało kliknięte. |
| przerywana obwódka | Ghost node — zmienna logiki biznesowej bez własnego elementu na ekranie (np. czysto backendowa zmienna BL.*). Kliknięcie ghost node wczytuje go do lewej kolumny i także można go przypiąć do promptu. |
Czytanie grafu — kolory krawędzi (typy relacji)
Każda linia jest kolorowana według tego, dlaczego zmienne są ze sobą powiązane:
| Kolor krawędzi | Relacja | Jak powstaje |
|---|---|---|
| namespace | Rodzeństwo w przestrzeni nazw — współdzielą prefiks z kropkami (np. UI.PANEL.CHAT i UI.PANEL.BRAINSTORM). Mówi: „należymy do tej samej rodziny”. | |
| contract | Zmienne wymienione w tych samych Contracts — ich zachowanie podlega tym samym regułom. Najcenniejsza relacja przy analizie wpływu. | |
| file | Zmienne innych Contracts dotykających tych samych plików źródłowych — relacja przez kod. | |
| navigation | Relacja w rzeczywistym interfejsie: kliknięcie tego elementu pokazuje lub przenosi do elementu docelowego (wyprowadzona z zmapowanych efektów DOM). |
Prawy panel — filtry i lista
U góry znajdują się cztery pola wyboru — Namespace, Contract, File, Navigation — filtrujące zarówno graf, jak i listę. Domyślnie zaznaczone są Namespace + Contract (najbardziej użyteczne, najmniej szumu); File i Navigation warto włączyć, gdy trzeba prześledzić powiązania przez kod lub przepływ w interfejsie.
Każdy wiersz listy pokazuje kod zmiennej, nazwę i plakietki typów relacji. Przycisk
(insert into prompt) przypina kod zmiennej bezpośrednio w pisanym prompcie Task — typowy scenariusz pracy to więc: znaleźć element w aplikacji → sprawdzić jego App Flow → przypiąć powiązane zmienne → opisać zmianę. Agent AI otrzymuje wtedy dokładne adresy miejsc, których zmiana dotyczy, i nie musi ich szukać.
Legenda i pomoc
W lewym dolnym rogu grafu znajduje się legenda podsumowująca style węzłów i kolory krawędzi (dokładnie tak, jak opisano powyżej). W prawym górnym rogu jest przycisk (?), który otwiera okienko pomocy wyjaśniające, co pokazuje App Flow i jak wyprowadzany jest każdy typ relacji:
Guide & Flow — przepływ logiki biznesowej
Obok App Flow szczegóły elementu mają zakładkę Guide & Flow. Wyjaśnia ona wybrany element od góry do dołu, prostymi krokami — najpierw sam element interfejsu, a potem business contracts opisujące jego zachowanie (każdy wraz ze zmiennymi, których dotyczy) — a przycisk Copy as Markdown kopiuje całe wyjaśnienie do schowka, gotowe do wklejenia w prompt Task.
AITM Dev Panel
Czym jest: niewielki pływający pasek narzędzi, który AITM może wstrzyknąć do aplikacji webowej zarządzanego projektu. Podczas korzystania z aplikacji w przeglądarce panel działa jak oczy AITM wewnątrz niej: rejestruje otagowane elementy interfejsu, które widzi (budując mapę ekranów, przycisków i okien dialogowych projektu, z której korzystają Contract Explorer i App Flow), oraz przechwytuje błędy JavaScript z konsoli przeglądarki i wysyła je do AITM, gdzie pojawiają się w projekcie i mogą zostać zamienione w Tasks naprawiające błędy.
Jak się tam znajduje: panel to jeden skrypt serwowany przez serwer AITM i dołączany do strony aplikacji w trybie deweloperskim. Wizard New Project dodaje go automatycznie do tworzonych projektów webowych; własny Dashboard AITM także go zawiera.
Co widać: cztery zakładki —
- Elements — elementy kliknięte lub przypięte, każdy z kodem zmiennej, stojącymi za nim Contracts i plikami oraz ostrzeżeniami z Contracts typu danger zone. Overlay podświetla wszystkie otagowane elementy na stronie; Pin / One Pin zbierają elementy do promptu; ikony w każdym wierszu kopiują kod, otwierają szczegóły elementu (Graph, Guide & Flow, App Flow) i usuwają przypięcie. Clear Pins opróżnia listę.
- Records — elementy interfejsu zarejestrowane przez panel na stronie.
- Errors — błędy JavaScript i konsoli przechwycone w tej przeglądarce, z liczbą w nazwie zakładki.
- Settings — własne opcje panelu.
Panel pojawia się tylko w trybie deweloperskim i jest przeznaczony dla programistów oraz agentów AI, a nie dla użytkowników końcowych aplikacji. Pełna dokumentacja otwiera się z menu w nagłówku: Help → AITM Dev Panel. Rozmiary czcionek panelu można regulować w Settings → Font & Style.
Praktyczne scenariusze pracy
Znalezienie słabych punktów modułu: Contracts → Module View → kliknięcie modułu → wypatrywanie
bursztynowych (bez testów) i
czerwonych (z niepowodzeniami) węzłów w grafie. Legenda od razu podaje wartości procentowe.
Oszacowanie wpływu zmiany przed zgłoszeniem Task: znaleźć element w aplikacji przez Dev Panel (albo Contract w Contract Explorer i przycisk Flow) → App Flow → włączyć relacje contract i file → wszystko, co jest połączone, może zostać dotknięte zmianą.
Napisanie precyzyjnego promptu: w App Flow należy przypiąć
odpowiednie zmienne do promptu — Task zaczyna wtedy mówić językiem zrozumiałym zarówno dla człowieka, jak i dla agentów AI w Pipeline (język komunikacji).
Sprawdzenie, czy zachowanie jest udokumentowane: w Contract Explorer należy podążać za przerywanymi liniami wychodzącymi z Contract — prowadzą one do dokumentów (pomarańczowe węzły), które otwierają się kliknięciem wprost w aplikacji.