Studium przypadku
Chess Tactical Lens
Lokalne narzędzie szachowe, które pokazuje natychmiastowe groźby i konsekwencje każdego ruchu—bez silnika, oceny pozycji i rekomendowania najlepszego posunięcia.
Wewnątrz projektu
Kontekst
Typowe narzędzia szachowe odpowiadają na inne pytanie niż to, które zadaje sobie osoba analizująca partię. Silnik potrafi uszeregować ruchy, ale jego ocena nie wyjaśnia od razu, co ostatnie posunięcie zaatakowało, odsłoniło, przestało bronić lub zmieniło w otoczeniu króla. Chess Tactical Lens powstał z myślą o analizie prowadzonej przez człowieka ruch po ruchu: wizualizuje wyłącznie nowe konsekwencje ostatniego posunięcia, zamiast rysować wszystkie relacje już obecne na szachownicy.
Rola
Zaprojektowałem i zaimplementowałem cały produkt: interaktywną szachownicę z pełną legalnością ruchów, deterministyczny analizator zmian taktycznych, semantyczny model nakładek, lokalny zapis danych, historię partii, warstwę HTTP, interfejs, zestaw demonstracyjny i testy automatyczne. Zdefiniowałem również granicę produktu, dzięki której aplikacja wyjaśnia, ale nie podpowiada—nie ma tu silnika, komputerowego przeciwnika, oceny pozycji ani języka sugerującego najlepszy ruch.
Ograniczenia
Każde wyjaśnienie musiało wynikać z ostatniego ruchu, być wystarczająco wiarygodne do natychmiastowego pokazania i nie wymagać głębokiego przeszukiwania wariantów. Aplikacja musiała też zapewniać pełną legalność szachową, obsługę promocji, dokładną rekonstrukcję pozycji i bezpieczne modyfikowanie historii. Ponieważ projekt jest świadomie lokalny i jednoosobowy, korzysta z SQLite bez kont i infrastruktury chmurowej, a udostępniany jest jako kod źródłowy, nie publiczna usługa.
Podejście
Rdzeń analizatora buduje kompletne migawki PRZED i PO ruchu, a następnie porównuje ataki geometryczne, ataki faktycznie możliwe, obrońców, związania bezwzględne, legalne pola króla oraz lokalne wyniki wymian materiału. Różnica staje się zestawem typowanych zdarzeń semantycznych—szachów, widełek, wiszących figur, utraconych i odkrytych obron, zablokowanych linii, rentgenów, związań i ataków z odsłony—z priorytetami, opisami, strzałkami, podświetleniami i bilansem atakujących oraz obrońców. React jedynie renderuje te zdarzenia i nie wyprowadza samodzielnie wniosków szachowych. Stan kanoniczny tworzą początkowy FEN oraz uporządkowany dziennik ruchów; Route Handlery Next.js korzystają z jednej usługi aplikacyjnej, transakcje SQLite chronią zapisy, a kontrola współbieżności i idempotencja zapobiegają cichym konfliktom i duplikowaniu ruchów.
Rezultat
Gotowa aplikacja obsługuje ruchy przez kliknięcie i przeciąganie, walidację legalności, jawny wybór figury przy promocji, obracanie szachownicy, kanoniczny zapis SAN, niezależnie przełączane nakładki taktyczne, stałą wizualizację kontroli pól wokół obu króli oraz dokładny, tylko do odczytu, podgląd każdej zapisanej pozycji. Użytkownik może cofnąć ostatni ruch albo świadomie skrócić dalszy ciąg przed rozegraniem nowej kontynuacji. Siedem deterministycznych demonstracji motywów ułatwia poznanie systemu, a 83 testy automatyczne obejmują analizator, reguły szachowe, zapis danych, współbieżność, modyfikacje historii i kontrakty HTTP.
Wnioski
Najtrudniejsze nie było narysowanie strzałek, lecz ustalenie, kiedy strzałka mówi prawdę. Porównywanie przejść między pozycjami zamiast statycznych map ataków usunęło szum relacji istniejących już wcześniej, a rozdzielenie geometrii od relacji faktycznie legalnych zapobiegło mylącym wnioskom dotyczącym związanych figur i niedozwolonych bić królem. Umieszczenie logiki taktycznej w czystej warstwie domenowej pozwoliło precyzyjnie testować złożone reguły przyczynowości i pozostawić interfejs skupiony na wyjaśnianiu, nie rekomendowaniu.
