This commit is contained in:
2026-05-15 23:19:26 +02:00
parent def1fae0fc
commit 75b9434de5
113 changed files with 50906 additions and 1305 deletions

View File

@@ -166,6 +166,80 @@ Popros uzytkownika tylko o numer. Po wyborze:
- `2` pokaz liste klientow,
- `3` zakoncz.
## Raport klienta
Gdy uzytkownik poprosi o raport klienta albo poda komende w stylu:
```text
analiza-klienta aruba.rzeszow.pl 02-2026
```
uruchom:
```powershell
python gads.py analiza-klienta aruba.rzeszow.pl 02-2026
```
To jest alias dla generowania miesiecznego raportu HTML klienta. Obslugiwane sa formaty miesiaca `MM-YYYY`, `MM.YYYY` i `YYYY-MM`.
Jesli uzytkownik napisze tylko:
```text
raport-klienta
```
uruchom:
```powershell
python gads.py raport-klienta
```
Pokaz uzytkownikowi liste klientow i popros o numer. Po wyborze klienta oraz miesiaca uruchom:
```powershell
python gads.py raport-klienta --client-number <numer-klienta> --month <YYYY-MM>
```
Komenda najpierw pobiera dane i zatrzymuje sie przed generowaniem HTML. Tworzy plik roboczy:
```text
scripts/reports/output/<domena>_<YYYY-MM>_recommendations.json
```
Wnioski i rekomendacje przygotowuje agent AI, nie skrypt. Agent ma przeczytac dane raportu i kontekst w pliku rekomendacji, uzupelnic `recommendations` konkretnymi wnioskami, pokazac je uzytkownikowi i zapytac o akceptacje.
Wnioski pisz z perspektywy osoby, ktora obsluguje konto Google Ads klienta. Nie pisz do klienta, ze `warto cos sprawdzic`, `trzeba zweryfikowac` albo `nalezy przeanalizowac`, jakby decyzja byla po jego stronie. Pisz decyzyjnie: co robimy, co zostawiamy, co ograniczamy, co kontrolujemy i jaki jest nastepny krok po naszej stronie. Unikaj bezosobowych, nijakich rekomendacji.
W tekstach raportu dla klienta uzywaj poprawnych polskich znakow. Dotyczy to szczegolnie tytulow, wnioskow i rekomendacji w pliku `recommendations`. Nie zapisuj tam wersji bez ogonkow typu `zwiekszamy`, `wartosc`, `srednia`, jezeli tekst trafi do HTML widocznego dla klienta.
Po akceptacji wnioskow uruchom:
```powershell
python gads.py raport-klienta --client <domena> --month <YYYY-MM> --confirm-recommendations TAK
```
Dopiero wtedy komenda generuje lokalny raport HTML w:
```text
scripts/reports/output/<domena>/<YYYY-MM>/index.html
```
Jeżeli klient ma w `config/clients.toml` ustawione `sales_history_sheet`, historia sprzedaży miesięcznej oraz trzy kafelki w sekcji `E-commerce — Sprzedaż` mają pochodzić z tego arkusza Google Sheet. Arkusz powinien zawierać kolumny: `Miesiąc`, `Transakcje`, `Przychody`, `Średnia wartość koszyka`. Nie zastępuj tych danych GA4, jeżeli arkusz jest skonfigurowany.
Po wygenerowaniu raportu pokaz uzytkownikowi sciezke do pliku i popros o akceptacje przed wysylka na serwer. Nie wysylaj raportu bez jasnej zgody uzytkownika.
Po akceptacji uruchom upload:
```powershell
python gads.py raport-klienta --client <domena> --month <YYYY-MM> --confirm-upload TAK
```
Po wysylce podaj URL:
```text
https://adspro.projectpro.pl/raporty/<slug>/<YYYY-MM>/
```
## Zasady komunikacji
- Pisz po polsku.
@@ -245,6 +319,58 @@ Przed wdrozeniem tytulow agent musi uzupelnic docelowe wartosci tytulow w zapisa
Przed wdrozeniem kategorii agent musi uzupelnic docelowe wartosci kategorii w zapisanym planie JSON i dopiero wtedy zapytac uzytkownika o zgode.
Unit pricing moze byc proponowany przez skrypt, jezeli da sie go jednoznacznie odczytac z nazwy produktu.
## Reczne przypisywanie regul
Gdy uzytkownik napisze:
```text
Przypisz regule:
- tresc reguly do oceny
```
agent ma potraktowac to jako prosbe o kuracje pojedynczej reguly wiedzy.
Kolejnosc pracy:
1. Sprawdz aktualne grupy i zadania w `config/tasks.toml`.
2. Nie przywracaj usunietych zadan ani grup. Jesli lista zadan jest ograniczona, uznaj to za swiadoma decyzje uzytkownika.
3. Ocen, czy regule warto dodac do narzedzia.
4. Zaproponuj docelowe brzmienie reguly: `condition`, `recommendation`, `risk`, `rule_type`, `topic`, `confidence` i docelowe `task_ids`.
5. Zaproponuj policzalny `machine_condition` i `machine_effect`, jezeli regule da sie bezpiecznie zastosowac w skrypcie na danych pobieranych przez dane zadanie.
6. `machine_condition` ma uzywac tylko pol, ktore naprawde istnieja w planie danego zadania, np. `channel_type`, `conversions_30d`, `bidding_strategy_type`, `budget_context`, `search_budget_lost_impression_share`.
7. Jesli nie da sie zbudowac bezpiecznego warunku maszynowego, napisz to wprost i zaproponuj zapis reguly bez automatycznego wplywu, jako kontekst dla agenta AI/czlowieka.
8. Uzywaj tylko istniejacych identyfikatorow zadan z `config/tasks.toml`.
9. Jesli nie ma dobrego zadania, powiedz, ze regule lepiej odlozyc albo dodac dopiero po utworzeniu nowego zadania.
10. Nie zapisuj reguly do `knowledge/rules.jsonl`, dopoki uzytkownik jasno nie odpowie `Dodaj`.
11. Po odpowiedzi `Dodaj` dopisz jedna kompletna linie JSONL do `knowledge/rules.jsonl`.
Przy zapisie do `knowledge/rules.jsonl` uzupelnij pola: `id`, `status`, `topic`, `task_ids`, `suggested_task_ids`, `rule_type`, `condition`, `recommendation`, `risk`, `source`, `source_file`, `confidence`, `duplicate_of`, `supersedes`, `text`, `created_at`, `updated_at`. Jezeli regula ma dzialac automatycznie, dodaj tez `machine_condition` i `machine_effect`.
Przyklad policzalnej czesci reguly:
```json
{
"machine_condition": {
"all": [
{"field": "channel_type", "op": "eq", "value": "SEARCH"},
{"field": "conversions_30d", "op": "lt", "value": 15},
{"field": "bidding_strategy_type", "op": "in", "value": ["MAXIMIZE_CONVERSIONS", "TARGET_CPA", "MAXIMIZE_CONVERSION_VALUE", "TARGET_ROAS"]}
]
},
"machine_effect": {
"level": "ostroznie",
"action": "nie przechodz na automatyzacje konwersyjna",
"reason_prefix": "Regula wiedzy"
}
}
```
Ten tryb jest reczna alternatywa dla komendy:
```powershell
python gads.py wiedza przypisz
```
## Reguly i wyjatki klientow
Ustawienia globalne i wyjatki per klient sa w: