Skip to content

v0.30.0 - Krok 23 etap 1: Debug + split

Choose a tag to compare

@mtsle mtsle released this 28 Jul 17:43
· 103 commits to main since this release

v0.30.0 - Krok 23 etap 1 "Debug + split"

Audyt calej wtyczki szescioma subagentami (2x mapa zachowania, redteam,
wydajnosc, architektura, korektnosc+martwy kod) przed przystapieniem do
domkniecia v1.0.0. Ta wersja domyka caly etap 1: 10 CONFIRMED znalezisk z
poprzedniej sesji + dekompozycja RestController.php + zawezenie uprawnien
publikacji + 8 znalezisk PLAUSIBLE.

Dekompozycja RestController.php

1385 -> 427 linii. Siedem nowych klas w src/Rest/:
RouteRegistrar (rejestracja 15 tras), GuestIdentity (ip_hash/proxy),
PairsInput (normalizacja par Q&A, trzy sciezki: eksport/snapshot/publikacja),
AskService, AdminService (w tym crawl_progress() - zerwana bezposrednia
zaleznosc REST -> CrawlQueue), GeneratorService (limiter wyszedl z
handle_generate_faq()), PublishService. RestController zostal fasada -
stale, bramki uprawnien i cienkie handle_*() bez zmian, zero wplywu na
kod/testy spoza tego pliku.

Uprawnienia publikacji zawezone do Redaktora

Nowa stala CAPABILITY_PUBLISH = 'edit_others_posts' + bramka
require_publish_user() na /admin/faq/publish i /admin/faq/unpublish.
Dotad Autor (publish_posts) mogl publikowac FAQ na publicznej podstronie
tak samo latwo jak je generowac - decyzja usera po audycie: publikacja
tresci widocznej dla wyszukiwarki jest niedowrocona bez recznego
przywrocenia snapshotu, wiec dostaje wyzszy prog. Przycisk publikacji
ukryty w UI dla rol bez tego capa.

Osiem naprawionych dlugow

  • Parser LLM-JSON lapal pierwszy [ w prozie modelu ([wersja robocza])
    zamiast realnej tablicy - teraz szuka [ po ktorym idzie {.
  • Sciezka publikacji omijala sanityzacje - pary z przegladarki szly na
    publiczna podstrone przez metode zakladajaca dane juz sanityzowane w
    bazie. Nowa PairsInput::from_request_for_publish() laczy sanityzacje
    (jak eksport) z przycieciem dlugosci (jak snapshot).
  • Przerwany crawl blokowal reindeks na zawsze po reaktywacji wtyczki -
    Activator teraz odtwarza harmonogram crona CrawlQueue, jesli kolejka
    zostala niepusta.
  • isBlock() mylil Classic Editor z Gutenbergiem - pusty wynik z
    wp.data (nie wyjatek) teraz tez spada do TinyMCE/pola klasycznego.
  • WpContentSource::is_indexable() fail-open przy wyjatku obcej
    wtyczki -> fail-closed, spojnie z reszta klasy.
  • Granice sekcji lapaly tylko ASCII ### - rozszerzone o ##, warianty
    pelnej szerokosci i separatory ---/***.
  • Duplikat petli normalizacji Exporter::normalize() vs
    PairsInput::from_snapshot() - normalize() publiczna, from_snapshot()
    deleguje.

Swiadomie pominiete: mbDescFrame vs systemInstruction (efekt
probabilistyczny, wymaga zywego API), cache wektorow w Retriever (nowa
funkcja wydajnosciowa, nie dlug), martwy kod (decyzja usera z wczesniejszej
sesji tego samego Kroku).

Odbior

runner 49/49 plikow tests/*.php - 0 niezaliczonych (4 nowe segmenty
  krok23-etap1-{index-crawl,metabox-js,parser-granice,rest-sanityzacja}-test.php)
php -l / node --check - czysto na wszystkich zmienionych plikach
budzet API: 0 - caly zestaw statyczny/jednostkowy
zero zmian schematu bazy (DB_VERSION bez zmian, '5')

Metoda: agent tokenizator (dwa uruchomienia w tle - dekompozycja, potem
8 fixow), kazdy wynik zweryfikowany niezaleznie w glownej sesji (runner +
php -l + odczyt kodu kluczowych napraw) przed przyjeciem raportu.

NASTEPNY KROK: Krok 23 etap 2 - "Testy while" (tresc etapu jeszcze do
wyjasnienia przez usera). Etap "Fix" usuniety z listy etapow Kroku 23
(decyzja usera) - lista skrocona z 11 do 10 pozycji.