# Presale Generator

Presale Generator bierze zapytanie ofertowe (RFP) i prowadzi je aż do wycenionego, zaplanowanego presales, bez ręcznego dotykania arkusza kalkulacyjnego. Jak każdą wtyczkę Speedwave, także tę pisze, rozwija i dostarcza wyłącznie Speednet.

## Co robi

Wskazujesz Presale Generatorowi dokumenty wejściowe (RFP, brief, materiały pomocnicze), a on wyodrębnia wymagania, rozdzielając funkcjonalne od niefunkcjonalnych, i znajduje aktorów oraz przypadki użycia. Na tej podstawie buduje hierarchiczny podział prac na epiki, funkcje i zadania, szacuje każde z nich w godzinach, a na końcu tworzy harmonogram i plan zespołu. Przechowuje każdy presales jako wersjonowany stan, więc możesz go iterować i porównywać wersje w miarę zmian wymagań. Nie potrzebuje żadnych danych uwierzytelniających: nie ma żadnego zewnętrznego systemu, do którego trzeba by się logować, bo worker tylko przechowuje i przelicza stan, a analizę wykonuje model.

## Z czego się składa

Wtyczka ma trzy części:

- **Worker**, który udostępnia 53 narzędzia w postaci czystych funkcji, pogrupowane w stan, fazy i kroki procesu, iteracje i śledzenie zmian, terminy, dopasowanie zespołu, ekstrakcję dokumentów, artefakty oraz hierarchiczny podział prac. Narzędzia nie mają własnych opinii: przechowują i zwracają ustrukturyzowany stan.
- **Warstwa ekstrakcji dokumentów** napisana w Pythonie, z kilkoma silnikami (markitdown, pdftotext, pandoc, openpyxl, python-docx i docling), dzięki którym worker czyta pliki PDF, Word, Excel i inne formaty. Zobacz [Dokumenty biurowe](/pl/docs/features/office-documents/), żeby dowiedzieć się, jak Speedwave obsługuje te formaty.
- **Zestaw zasobów**: 22 komendy i 24 umiejętności, które prowadzą cały proces. Umiejętności odpowiedzialne za szacowanie i podział prac działają na najsilniejszym dostępnym modelu i z najwyższym poziomem wysiłku rozumowania, bo to one dźwigają analityczny ciężar całego procesu.
**Note:** Ta wtyczka wymaga limitu pamięci 12 GiB, największego w katalogu, żeby uruchomić silniki ekstrakcji dokumentów.

## Jak to działa

Pracujesz nad jedną szansą sprzedażową naraz. Tworzysz ją komendą `/presale:add`, wrzucasz dokumenty źródłowe (RFP, wymagania, pliki PDF, Word, Excel, PowerPoint) do jej folderu wejściowego, a potem wybierasz ją komendą `/presale:select`, żeby każda kolejna komenda działała właśnie na niej.

Od tego momentu proces przechodzi przez ustalone fazy: ekstrakcja, analiza, podział prac, szacowanie, harmonogram, zespół. Komenda `/presale:continue` mówi ci, w jakiej jesteś fazie i jaka jest dokładnie następna komenda, więc nigdy nie musisz zapamiętywać kolejności. Jeśli wolisz sterować ręcznie: `/presale:extract` zamienia dokumenty w różnych formatach na czysty markdown, `/presale:analyze` wyciąga aktorów, cele i wymagania oraz proponuje stos technologiczny, który musisz potwierdzić, `/presale:create-wbs` rozkłada wymagania na epiki, funkcje i zadania, `/presale:estimate` szacuje wyłącznie nakład pracy w godzinach, a `/presale:timeline` i `/presale:team` tworzą harmonogram i skład zespołu.

Faza jest wyliczana, a nie ustawiana ręcznie: przechodzi dalej dopiero wtedy, gdy zakończy się każdy jej krok, a wymagania wstępne są egzekwowane po kolei, więc komenda podziału prac zatrzyma się i powie ci, jeśli analiza jeszcze nie jest gotowa. Wszystko jest przechowywane lokalnie w folderze danej szansy sprzedażowej, wersjonowane dla każdej iteracji, ze śladem audytowym, a po każdej fazie zapisywany jest punkt kontrolny, więc możesz się zatrzymać i wrócić później.

## Umiejętności i komendy

Umiejętności orkiestrujące prowadzą fazy procesu i równolegle uruchamiają umiejętności podrzędne.

| Umiejętność | Co robi |
|---|---|
| `presale-rfp-analyzer` | Orkiestruje analizę RFP, dzieląc dokument na fragmenty obsługiwane przez równoległe agenty |
| `presale-breakdown` | Orkiestruje podział prac na epiki, funkcje i zadania |
| `presale-estimator` | Orkiestruje szacowanie nakładu pracy, grupując zadania między agentami |
| `presale-add` | Tworzy nową szansę sprzedażową i jej strukturę folderów |
| `presale-select` | Aktywuje istniejącą szansę sprzedażową jako bieżącą |
| `presale-auto-assume` | Zamienia każdą otwartą lukę w udokumentowane założenie z poziomem pewności i ryzykiem |
| `presale-cross-reference-builder` | Mapuje, jak artefakty odnoszą się do siebie nawzajem w całym presales |
| `presale-risk-aggregator` | Zbiera, deduplikuje i priorytetyzuje ryzyka znalezione we wszystkich fazach |
| `presale-team-composition` | Proponuje skład zespołu na podstawie stosu technologicznego i szacunków |
| `presale-timeline` | Buduje harmonogram dostawy na podstawie oszacowanego podziału prac, zależności, dostępności i dni wolnych |
| `presale-use-cases` | Wyprowadza aktorów i przypadki użycia, z głównym przebiegiem, wariantami alternatywnymi i wyjątkami |

Trzynaście kolejnych umiejętności podrzędnych wykonuje w tle pracę na poszczególnych fragmentach. Uruchamiają je powyższe orkiestratory, ty sam nigdy ich nie wywołujesz bezpośrednio.

| Umiejętność | Co robi |
|---|---|
| `presale-extract-actors` | Wyodrębnia aktorów z pojedynczego fragmentu dokumentu RFP |
| `presale-extract-business-goals` | Wyodrębnia cele biznesowe z pojedynczego fragmentu dokumentu RFP |
| `presale-extract-categories` | Wyodrębnia kategorie wymagań z pojedynczego fragmentu dokumentu RFP |
| `presale-extract-fr` | Wyodrębnia wymagania funkcjonalne z pojedynczego fragmentu dokumentu RFP, z kontekstem odniesień krzyżowych |
| `presale-extract-nfr` | Wyodrębnia wymagania niefunkcjonalne z pojedynczego fragmentu dokumentu RFP, z kontekstem odniesień krzyżowych |
| `presale-extract-gaps` | Wyodrębnia luki i otwarte pytania z pojedynczego fragmentu dokumentu RFP, z pełnym kontekstem odniesień krzyżowych |
| `presale-extract-compare` | Porównuje wyniki różnych silników ekstrakcji dla dokumentu i wybiera najlepszy |
| `presale-breakdown-epic-plan` | Przypisuje wymagania funkcjonalne do epików w sposób deterministyczny, zastępując równoległą rundę epików, żeby uniknąć duplikatów |
| `presale-breakdown-epic` | Grupuje wymagania funkcjonalne w epiki |
| `presale-breakdown-feature` | Rozkłada epiki na funkcje |
| `presale-breakdown-task` | Rozkłada funkcje na zadania |
| `presale-breakdown-decisions` | Identyfikuje decyzje techniczne i architektoniczne na podstawie zakresu podziału prac |
| `presale-estimate-task` | Szacuje partię zadań metodą pojedynczego punktu w wariancie optymistycznym, z uwzględnieniem strumieni pracy |

Komendy działają pod `/presale:`:

| Komenda | Co robi |
|---|---|
| `add`, `select`, `unselect` | Tworzy szansę sprzedażową, aktywuje ją albo czyści aktywną |
| `list`, `status`, `health` | Pokazuje szanse sprzedażowe, ogólny postęp albo wskaźnik kondycji |
| `extract` | Konwertuje dokumenty źródłowe na markdown, dobierając silnik do formatu |
| `analyze`, `analysis` | Uruchamia analizę wymagań albo pokazuje jej wyniki |
| `create-wbs`, `breakdown` | Buduje hierarchiczny podział prac albo go pokazuje |
| `estimate` | Szacuje nakład pracy w godzinach w całym podziale prac |
| `actors`, `use-cases` | Pokazuje wyodrębnionych aktorów i przypadki użycia |
| `team`, `timeline` | Pokazuje skład zespołu albo harmonogram dostawy |
| `continue` | Mówi ci, w jakiej jesteś fazie i jaka jest dokładnie następna komenda |
| `presale` | Punkt wejścia, który wyświetla dostępne subkomendy |

Komendy iteracji działają pod `/presale:iteration`:

| Komenda | Co robi |
|---|---|
| `create` | Zapisuje bieżący stan jako nową iterację, z wyzwalaczem i powodem |
| `list` | Wyświetla wszystkie iteracje zapisane dla wybranej szansy sprzedażowej |
| `switch` | Ustawia jedną z wcześniejszych iteracji jako aktywną |
| `compare` | Wylicza różnicę między dwiema iteracjami |

Żadna z tych komend nie usuwa danych szansy sprzedażowej; `unselect` tylko czyści, która jest aktywna.

## Narzędzia

53 narzędzia workera to czyste funkcje: przechowują i zwracają ustrukturyzowany stan, nie łączą się z żadnym systemem zewnętrznym. Wywołują je wprost umiejętności, a ty nigdy nie sięgasz po nie samodzielnie. Pogrupowane według przeznaczenia:

| Grupa | Narzędzia | Co robi |
|---|---|---|
| Stan i proces | `createPresaleState`, `validatePresaleState`, `updatePresaleState`, `setPhase`, `getValidTransitions`, `startStep`, `completeStep`, `failStep`, `getReadySteps`, `getWorkflowStatus`, `getStepRequirements`, `getRequiredStructure`, `getActivePresale`, `listPresales` | Tworzy i waliduje stan szansy sprzedażowej, śledzi, w jakiej jest fazie i kroku, i pilnuje, żeby kroki przebiegały we właściwej kolejności |
| Ekstrakcja dokumentów | `listInputDocuments`, `getExtractionStatus`, `extractDocument`, `getExtractionJob`, `validateExtractionQuality`, `finalizeComparison`, `initChunkExtraction`, `getNextChunkBatch`, `saveChunkResult`, `getChunkExtractionStatus`, `mergeChunkResults`, `cancelChunkExtraction`, `retryFailedChunk`, `getChunkContent`, `initDerivedExtraction`, `getNextDerivedBatch` | Konwertuje dokumenty źródłowe na markdown, dzieli je na fragmenty dla równoległych agentów i scala wyniki poszczególnych fragmentów w jedną całość |
| Podział prac i artefakty | `getBreakdownItems`, `buildBreakdownHierarchy`, `saveArtifact`, `getArtifact`, `getInputSchema`, `getTraceability`, `listArtifactTypes`, `getArtifactsSummary`, `scanArtifacts` | Buduje hierarchię epików, funkcji i zadań oraz zapisuje i pobiera każdy wyodrębniony artefakt (wymagania, aktorów, cele, luki) wraz z odniesieniami do źródła |
| Iteracje | `createIteration`, `deleteIteration`, `getIteration`, `detectChanges`, `computeDelta`, `logChange`, `analyzeChangeImpact` | Zapisuje i porównuje wersje presales oraz śledzi, co zmieniło się między nimi |
| Terminy i zespół | `setDeadline`, `updateDeadline`, `clearDeadline`, `checkDeadline`, `getTeamSkills`, `getTeamAvailability`, `calculateTeamMatch` | Śledzi terminy dostawy i dopasowuje oszacowaną pracę do umiejętności i dostępności zespołu |

## Konfiguracja

Presale Generator nie potrzebuje żadnych danych uwierzytelniających, więc konfiguracja to po prostu instalacja i włączenie wtyczki dla każdego projektu. Zobacz [Korzystanie z wtyczek](/pl/docs/plugins/using-plugins/), żeby dowiedzieć się, jak zainstalować wtyczkę i ją włączyć.

Gdy jest już włączona, zacznij od `/presale:add <nazwa>`, żeby utworzyć szansę sprzedażową, dodaj swoje dokumenty źródłowe do jej folderu wejściowego, a potem `/presale:select <nazwa>`, żeby uczynić ją aktywną. W dowolnym momencie sprawdź postęp komendą `/presale:status`, albo `/presale:health`, jeśli chcesz zobaczyć tylko wskaźnik kondycji.

<DesktopFrame screen="plugins" />

## Granice bezpieczeństwa

Worker to bezstanowy serwer logiki MCP w Node.js. Nie ma żadnych danych uwierzytelniających ani portów wystawionych na hosta: dociera do niego wyłącznie MCP Hub w sieci projektu, zabezpieczony tak samo jak każdy inny worker, z odebranymi wszystkimi uprawnieniami (capabilities), bez możliwości eskalacji uprawnień i z systemem plików tylko do odczytu. Worker ma wbudowaną warstwę ekstrakcji w Pythonie, która czyta wyłącznie dokumenty, jakie sam umieścisz w folderze wejściowym danej szansy sprzedażowej.