diff --git a/soneta-addon-planning/SKILL.md b/soneta-addon-planning/SKILL.md new file mode 100644 index 0000000..c95b2c4 --- /dev/null +++ b/soneta-addon-planning/SKILL.md @@ -0,0 +1,154 @@ +--- +name: soneta-addon-planning +description: > + Planowanie projektów dodatków dla platformy enova365/Soneta Enterprise. Tworzy + kompletną dokumentację projektową obejmującą: strukturę danych (tabele, relacje), + elementy konfigurowalne, definicje list i menu, formularze, workery i raporty. + Używaj gdy użytkownik prosi o zaplanowanie nowego modułu/dodatku enova365, + przygotowanie założeń projektu, stworzenie specyfikacji funkcjonalnej dodatku, + lub zdefiniowanie struktury danych i interfejsu użytkownika dla nowego modułu. +--- + +# Soneta Addon Planning + +Skill do tworzenia planów projektów dodatków dla platformy enova365. Plan projektu stanowi podstawę do dalszych prac implementacyjnych z wykorzystaniem skilli `enova365-business-xml` i `soneta-programming-basics`. + +## Struktura planu projektu + +Plan projektu dodatku enova365 składa się z następujących sekcji: + +### 1. Założenia projektu +- Cel biznesowy dodatku +- Zakres funkcjonalny (co dodatek ma robić) +- Elementy konfigurowalne na etapie wdrożenia +- Integracje z istniejącymi modułami enova365 +- Ograniczenia i wymagania niefunkcjonalne + +### 2. Model danych +- Lista tabel z podziałem na operacyjne i konfiguracyjne +- Pola każdej tabeli (nazwa, typ, wymagalność, opis) +- Relacje między tabelami (diagram lub lista) +- Klucze i indeksy + +### 3. Struktura menu modułu +- Hierarchia list w menu głównym +- Grupowanie funkcjonalne + +### 4. Definicje list +Dla każdej listy: +- Filtry (pola filtrujące, filtry predefiniowane) +- Kolumny (kolejność, szerokość, formatowanie) +- Czynności (workery) - nazwa i krótki opis +- Raporty/wydruki - nazwa i krótki opis + +### 5. Definicje formularzy +Dla każdego formularza obiektu: +- Zakładki (grupowanie logiczne) +- Pola na zakładkach (pogrupowane) +- Listy szczegółów (sublists) z kolumnami +- Czynności (workery) dostępne z formularza +- Raporty/wydruki dostępne z formularza + +### 6. Słowniki i konfiguracja +- Tabele słownikowe (config=true) +- Wartości domyślne +- Parametry konfiguracyjne modułu + +### 7. Uprawnienia +- Role użytkowników +- Prawa dostępu do obiektów i funkcji + +## Workflow tworzenia planu + +``` +1. Zebranie wymagań + ↓ +2. Zdefiniowanie założeń i elementów konfigurowalnych + ↓ +3. Zaprojektowanie modelu danych + ↓ +4. Określenie struktury menu + ↓ +5. Zdefiniowanie list (filtry, kolumny, akcje) + ↓ +6. Zdefiniowanie formularzy (zakładki, pola, sublists) + ↓ +7. Określenie słowników i konfiguracji + ↓ +8. Zdefiniowanie uprawnień +``` + +## Format dokumentu planu + +Plan projektu generowany jest jako dokument Markdown z następującą strukturą: + +```markdown +# Plan projektu: [Nazwa dodatku] + +## 1. Założenia projektu +### 1.1. Cel biznesowy +### 1.2. Zakres funkcjonalny +### 1.3. Elementy konfigurowalne +### 1.4. Integracje +### 1.5. Ograniczenia + +## 2. Model danych +### 2.1. Tabele operacyjne +### 2.2. Tabele konfiguracyjne +### 2.3. Diagram relacji + +## 3. Struktura menu +### 3.1. Menu główne modułu + +## 4. Listy +### 4.1. [Nazwa listy] +#### Filtry +#### Kolumny +#### Czynności +#### Raporty + +## 5. Formularze +### 5.1. [Nazwa formularza] +#### Zakładki i pola +#### Listy szczegółów +#### Czynności +#### Raporty + +## 6. Słowniki i konfiguracja + +## 7. Uprawnienia +``` + +## Konwencje nazewnicze + +| Element | Konwencja | Przykład | +|---------|-----------|----------| +| Tabela operacyjna | PascalCase, l.poj. | `Zlecenie`, `PozycjaZlecenia` | +| Tabela konfiguracyjna | PascalCase, l.poj. | `DefinicjaZlecenia`, `StatusZlecenia` | +| Worker | PascalCase + Worker | `ZatwierdzZlecenieWorker` | +| Raport | PascalCase | `ZestawienieZlecen`, `KartaZlecenia` | +| Lista | l.mn. lub opis | `Zlecenia`, `ZleceniaDoRealizacji` | + +## Poziom szczegółowości + +Plan projektu zawiera **ogólne opisy** elementów: +- Nazwy i krótkie opisy (1-2 zdania) +- Typy danych bez szczegółów implementacyjnych +- Logiczne grupowanie bez dokładnych pozycji + +**Szczegóły doprecyzowywane w kolejnych etapach:** +- Dokładne atrybuty kolumn (długość, walidacje) +- Implementacja workerów (algorytmy, kroki) +- Szablony raportów (układ, pola) +- Warunki filtrów (wyrażenia, wartości domyślne) + +## Powiązanie z innymi skillami + +Po zatwierdzeniu planu projektu: +1. **enova365-business-xml** - generowanie pliku business.xml na podstawie modelu danych +2. **soneta-programming-basics** - implementacja workerów i logiki biznesowej + +## Szczegółowa dokumentacja + +- **[references/project-template.md](references/project-template.md)** - pełny szablon dokumentu planu projektu +- **[references/checklist.md](references/checklist.md)** - lista kontrolna kompletności planu diff --git a/soneta-addon-planning/references/checklist.md b/soneta-addon-planning/references/checklist.md new file mode 100644 index 0000000..369cdf3 --- /dev/null +++ b/soneta-addon-planning/references/checklist.md @@ -0,0 +1,136 @@ +# Lista kontrolna planu projektu dodatku enova365 + +Lista kontrolna do weryfikacji kompletności planu projektu przed rozpoczęciem implementacji. + +## 1. Założenia projektu + +- [ ] Zdefiniowany cel biznesowy (problem do rozwiązania) +- [ ] Określony zakres funkcjonalny (lista funkcji) +- [ ] Wymienione elementy konfigurowalne z opisem sposobu konfiguracji +- [ ] Zidentyfikowane integracje z istniejącymi modułami enova365 +- [ ] Opisane ograniczenia i wymagania niefunkcjonalne + +## 2. Model danych + +### Tabele + +- [ ] Każda tabela ma określone: + - [ ] Nazwę (PascalCase, l.poj.) + - [ ] Typ (operacyjna / konfiguracyjna) + - [ ] Atrybut guided (Root / Exported / inner / brak) + - [ ] Krótki opis przeznaczenia + +### Pola + +- [ ] Każde pole ma określone: + - [ ] Nazwę (PascalCase) + - [ ] Typ danych (string, int, date, relacja, enum itp.) + - [ ] Wymagalność (Tak/Nie) + - [ ] Krótki opis + +### Relacje + +- [ ] Wszystkie relacje między tabelami są opisane +- [ ] Tabele szczegółów mają wskazaną tabelę główną (relguided="inner") +- [ ] Relacje do modułów zewnętrznych są zidentyfikowane +- [ ] Istnieje diagram relacji lub lista powiązań + +### Klucze + +- [ ] Zdefiniowane klucze unikalne (keyprimary, keyunique) +- [ ] Określone klucze wyszukiwania (indeksy) + +## 3. Struktura menu + +- [ ] Zdefiniowana hierarchia menu modułu +- [ ] Listy pogrupowane logicznie +- [ ] Konfiguracja wydzielona do osobnej grupy + +## 4. Listy + +Dla każdej listy: + +- [ ] Określona tabela źródłowa +- [ ] Opisane przeznaczenie listy +- [ ] Zdefiniowane filtry: + - [ ] Filtry polowe (wyszukiwanie po polach) + - [ ] Filtry predefiniowane (najczęstsze scenariusze) + - [ ] Filtry zakresowe (daty, wartości) +- [ ] Określone kolumny z kolejnością +- [ ] Lista czynności (workerów) z krótkim opisem działania +- [ ] Lista raportów/wydruków z krótkim opisem zawartości + +## 5. Formularze + +Dla każdego formularza: + +- [ ] Określona tabela źródłowa +- [ ] Zdefiniowane zakładki: + - [ ] Nazwa zakładki + - [ ] Przeznaczenie (co grupuje) +- [ ] Pola przypisane do zakładek i grup +- [ ] Zdefiniowane listy szczegółów (sublists): + - [ ] Tabela szczegółów + - [ ] Kolumny na liście + - [ ] Ewentualne filtry +- [ ] Lista czynności z kontekstem (pojedynczy/zaznaczone/bez kontekstu) +- [ ] Lista raportów z kontekstem + +## 6. Słowniki i konfiguracja + +- [ ] Wszystkie tabele konfiguracyjne zidentyfikowane +- [ ] Określone wartości początkowe słowników +- [ ] Zdefiniowane parametry konfiguracyjne modułu +- [ ] Opisane definicje obiektów (jeśli występują) + +## 7. Uprawnienia + +- [ ] Zdefiniowane role użytkowników +- [ ] Przypisane prawa dostępu do: + - [ ] List + - [ ] Formularzy + - [ ] Workerów + - [ ] Raportów + +## 8. Kompletność ogólna + +- [ ] Wszystkie nazwy zgodne z konwencjami enova365 +- [ ] Brak duplikatów nazw tabel/pól +- [ ] Relacje nie tworzą cykli (poza świadomymi wyjątkami) +- [ ] Każdy worker i raport ma krótki opis +- [ ] Otwarte kwestie są udokumentowane + +## 9. Gotowość do implementacji + +Po pozytywnej weryfikacji listy kontrolnej można przystąpić do: + +1. **Generowania business.xml** (skill: enova365-business-xml) + - Definicje tabel i relacji + - Klucze i indeksy + - Enumy i interfejsy + +2. **Implementacji logiki** (skill: soneta-programming-basics) + - Workery i ich algorytmy + - Walidacje biznesowe + - Raporty i wydruki + +--- + +## Typowe braki do uzupełnienia + +| Sekcja | Typowy brak | Jak uzupełnić | +|--------|-------------|---------------| +| Model danych | Brak tabeli historii | Dodać tabelę z okresami (FromTo) | +| Model danych | Brak tabeli notatek/załączników | Rozważyć użycie standardowego mechanizmu Attachments | +| Listy | Brak filtra po dacie | Dodać filtr zakresowy dla dat | +| Formularze | Brak zakładki "Historia" | Dodać zakładkę z ChangeInfos | +| Konfiguracja | Brak statusów | Dodać tabelę słownikową statusów | +| Uprawnienia | Brak roli administratora | Dodać rolę z pełnymi uprawnieniami | + +## Pytania kontrolne + +1. Czy użytkownik może wykonać wszystkie operacje biznesowe opisane w zakresie? +2. Czy dane wprowadzone przez użytkownika mogą być później wyszukane i zmodyfikowane? +3. Czy administrator może skonfigurować wszystkie elementy konfigurowalne? +4. Czy można wygenerować wszystkie potrzebne raporty? +5. Czy uprawnienia pozwalają na bezpieczne rozdzielenie obowiązków? diff --git a/soneta-addon-planning/references/project-template.md b/soneta-addon-planning/references/project-template.md new file mode 100644 index 0000000..4f6ba0c --- /dev/null +++ b/soneta-addon-planning/references/project-template.md @@ -0,0 +1,297 @@ +# Szablon planu projektu dodatku enova365 + +Poniżej znajduje się kompletny szablon dokumentu planu projektu. Sekcje oznaczone `[...]` należy wypełnić zgodnie z wymaganiami projektu. + +--- + +# Plan projektu: [Nazwa dodatku] + +**Wersja:** 1.0 +**Data:** [Data utworzenia] +**Autor:** [Imię i nazwisko] + +--- + +## 1. Założenia projektu + +### 1.1. Cel biznesowy + +[Krótki opis problemu biznesowego, który dodatek ma rozwiązać. 2-3 zdania.] + +### 1.2. Zakres funkcjonalny + +[Lista głównych funkcjonalności dodatku:] +- [Funkcjonalność 1] +- [Funkcjonalność 2] +- [Funkcjonalność 3] + +### 1.3. Elementy konfigurowalne + +Elementy, które będą dostosowywane podczas wdrożenia u klienta: + +| Element | Opis | Sposób konfiguracji | +|---------|------|---------------------| +| [Nazwa elementu] | [Co konfigurujemy] | [Słownik / Parametr / Definicja] | + +**Przykłady elementów konfigurowalnych:** +- Słowniki (statusy, typy, kategorie) +- Definicje dokumentów (numeracja, pola wymagane) +- Parametry algorytmów (stawki, progi, limity) +- Szablony wydruków +- Uprawnienia i role + +### 1.4. Integracje z modułami enova365 + +| Moduł | Typ integracji | Opis | +|-------|----------------|------| +| [Nazwa modułu] | [Odczyt / Zapis / Relacja] | [Krótki opis] | + +**Typowe integracje:** +- **Handel** - dokumenty handlowe, towary, kontrahenci +- **CRM** - kontrahenci, osoby kontaktowe +- **Kadry** - pracownicy, struktury organizacyjne +- **Księgowość** - ewidencje, rozrachunki + +### 1.5. Ograniczenia i wymagania niefunkcjonalne + +- [Ograniczenie 1] +- [Wymaganie wydajnościowe] +- [Wymaganie bezpieczeństwa] + +--- + +## 2. Model danych + +### 2.1. Tabele operacyjne + +Tabele przechowujące dane wprowadzane podczas codziennej pracy. + +#### [Nazwa tabeli 1] (guided="Root") + +**Opis:** [Krótki opis przeznaczenia tabeli] + +| Pole | Typ | Wymagane | Opis | +|------|-----|----------|------| +| [Nazwa pola] | [Typ danych] | [Tak/Nie] | [Krótki opis] | + +**Klucze:** +- `Wg[NazwaPola]` - [opis przeznaczenia klucza] + +**Relacje:** +- → [Tabela docelowa] (przez pole [Nazwa pola]) + +#### [Nazwa tabeli szczegółów] (relguided="inner") + +**Opis:** [Pozycje/szczegóły dla tabeli głównej] + +| Pole | Typ | Wymagane | Opis | +|------|-----|----------|------| +| [Tabela główna] | [Relacja] | Tak | Relacja do obiektu głównego | +| [Pole szczegółu] | [Typ] | [Tak/Nie] | [Opis] | + +### 2.2. Tabele konfiguracyjne + +Tabele zawierające dane konfiguracyjne tworzone podczas wdrożenia (config="true"). + +#### [Nazwa słownika] (config="true") + +**Opis:** [Słownik/definicja dla...] + +| Pole | Typ | Wymagane | Opis | +|------|-----|----------|------| +| Kod | string | Tak | Unikalny kod elementu | +| Nazwa | string | Tak | Wyświetlana nazwa | +| Blokada | boolean | Nie | Blokuje wyświetlanie na listach wyboru | + +**Wartości początkowe:** +- [Wartość 1] +- [Wartość 2] + +### 2.3. Diagram relacji + +``` +┌─────────────────┐ ┌─────────────────┐ +│ [Tabela główna]│────<│ [Tabela szczeg.]│ +│ │ │ │ +│ - Pole1 │ │ - TabelaGłówna │ +│ - Pole2 │ │ - PoleSzczegółu │ +└────────┬────────┘ └─────────────────┘ + │ + │ relacja + ▼ +┌─────────────────┐ +│ [Tabela słown.] │ +│ (config) │ +└─────────────────┘ + +Legenda: +────< relacja 1:N (inner) +──── relacja N:1 (lookup) +``` + +--- + +## 3. Struktura menu modułu + +### 3.1. Menu główne modułu + +``` +[Nazwa modułu] +├── [Grupa 1] +│ ├── [Lista 1.1] - [krótki opis] +│ └── [Lista 1.2] - [krótki opis] +├── [Grupa 2] +│ ├── [Lista 2.1] - [krótki opis] +│ └── [Lista 2.2] - [krótki opis] +└── Konfiguracja + ├── [Słownik 1] + └── [Słownik 2] +``` + +--- + +## 4. Listy + +### 4.1. [Nazwa listy] + +**Tabela źródłowa:** [Nazwa tabeli] +**Przeznaczenie:** [Krótki opis co lista pokazuje i dla kogo] + +#### Filtry + +| Filtr | Typ | Opis | +|-------|-----|------| +| [Nazwa filtra] | [Pole / Predefiniowany / Zakres dat] | [Opis działania] | + +**Filtry predefiniowane:** +- [Nazwa filtra] - [Warunek filtrowania] + +#### Kolumny + +| Kolumna | Źródło | Opis | +|---------|--------|------| +| [Nagłówek kolumny] | [Nazwa pola lub wyrażenie] | [Opis zawartości] | + +#### Czynności (Workery) + +| Czynność | Opis | +|----------|------| +| [Nazwa czynności] | [Krótki opis działania - 1-2 zdania] | + +#### Raporty i wydruki + +| Raport | Opis | +|--------|------| +| [Nazwa raportu] | [Krótki opis zawartości - 1-2 zdania] | + +--- + +## 5. Formularze + +### 5.1. Formularz: [Nazwa obiektu] + +**Tabela:** [Nazwa tabeli] +**Przeznaczenie:** [Edycja/Podgląd obiektu typu...] + +#### Zakładki i pola + +##### Zakładka: [Nazwa zakładki 1] + +**Przeznaczenie:** [Co zawiera ta zakładka] + +| Grupa | Pola | +|-------|------| +| [Nazwa grupy] | [Pole1], [Pole2], [Pole3] | +| [Nazwa grupy 2] | [Pole4], [Pole5] | + +##### Zakładka: [Nazwa zakładki 2] + +**Przeznaczenie:** [Co zawiera ta zakładka] + +| Grupa | Pola | +|-------|------| +| [Nazwa grupy] | [Pole1], [Pole2] | + +#### Listy szczegółów (Sublists) + +##### Lista: [Nazwa listy szczegółów] + +**Tabela:** [Tabela szczegółów] +**Relacja:** [Pole relacji do obiektu głównego] + +| Kolumna | Opis | +|---------|------| +| [Nazwa kolumny] | [Opis] | + +**Filtry listy szczegółów:** +- [Nazwa filtra] - [Opis] + +#### Czynności (Workery) + +| Czynność | Kontekst | Opis | +|----------|----------|------| +| [Nazwa] | [Pojedynczy obiekt / Zaznaczone / Bez kontekstu] | [Opis] | + +#### Raporty i wydruki + +| Raport | Kontekst | Opis | +|--------|----------|------| +| [Nazwa] | [Pojedynczy / Lista] | [Opis] | + +--- + +## 6. Słowniki i konfiguracja + +### 6.1. Słowniki + +| Słownik | Przeznaczenie | Pola konfiguracyjne | +|---------|---------------|---------------------| +| [Nazwa] | [Do czego służy] | [Jakie dodatkowe pola poza Kod/Nazwa] | + +### 6.2. Parametry konfiguracyjne modułu + +| Parametr | Typ | Domyślnie | Opis | +|----------|-----|-----------|------| +| [Nazwa parametru] | [Typ] | [Wartość] | [Co parametr kontroluje] | + +### 6.3. Definicje obiektów + +| Definicja | Przeznaczenie | Elementy definiowalene | +|-----------|---------------|------------------------| +| [Nazwa] | [Typ obiektów, które definiuje] | [Co można skonfigurować w definicji] | + +--- + +## 7. Uprawnienia + +### 7.1. Role użytkowników + +| Rola | Opis | Typowe uprawnienia | +|------|------|-------------------| +| [Nazwa roli] | [Kto to jest] | [Ogólny zakres uprawnień] | + +### 7.2. Prawa dostępu + +| Obiekt/Funkcja | [Rola 1] | [Rola 2] | [Rola 3] | +|----------------|----------|----------|----------| +| [Lista/Formularz/Worker] | [Pełny/Odczyt/Brak] | [...] | [...] | + +--- + +## 8. Załączniki + +### 8.1. Słownik terminów + +| Termin | Definicja | +|--------|-----------| +| [Termin biznesowy] | [Wyjaśnienie w kontekście dodatku] | + +### 8.2. Otwarte kwestie + +| Nr | Kwestia | Status | Decyzja | +|----|---------|--------|---------| +| 1 | [Opis problemu do rozstrzygnięcia] | [Otwarta/Zamknięta] | [Podjęta decyzja] | + +--- + +**Koniec dokumentu**