Budżet: 1111 UAH Termin: 1 dzień
Dzień dobry!
Szczegółowo przeanalizowałem oba dokumenty, audyt i TZ. Projekt jest zrozumiały, zadania sformułowane są poprawnie. Poniżej moja ocena i propozycja.
O mnie: Backend/fullstack programista, główny stos: Laravel, MySQL, Redis, Vue 3, Docker. Doświadczenie z katalogami +10k+ pozycji, zrozumienie technicznego SEO (canonical, Schema.org, mapa strony, przekierowania).
Ocena terminów (pełny etat):
| Zadania 1-2: Stabilizacja (500-te, marki, Cloudflare, Redis, wyszukiwanie) | 5-7 dni |
| Zadania 3-4: Infrastruktura SEO (przekierowania, canonical, mapa strony, Schema.org) | 5-8 dni |
| Zadania 5-7: Media, landing page dla marek, moduł ekspertów | 7-10 dni |
| Zadania 8-10: Q&A, opinie, AI-konsultant, monitoring | 4-7 dni |
To bez migracji serwera i aktualizacji Laravel, oceniam je osobno po audycie kodu. Stawka: 15 USD/godz.
Jak proponuję pracować:
1. Rozpocząć od audytu bazy kodu (1-2 dni), uzyskać dostęp do repozytorium i serwera, ocenić rzeczywisty stan, doprecyzować terminy.
2. Etapowo według priorytetów z TZ (czerwone, pomarańczowe, żółte, zielone), z odbiorem po każdym bloku.
3. Migrację na Contabo zrobić jako pierwszą. Nie ma sensu optymalizować kod na niestabilnym serwerze.
4. Aktualizacja Laravel po zakończeniu głównych zadań, jako osobny etap. Aktualizacja równolegle z rozwojem funkcji na legacy to droga do problemów.
Co proponuję zrobić inaczej (ulepszenia do TZ):
- Wyszukiwanie: Meilisearch zamiast TNTSearch. TNTSearch przechowuje indeks w plikach, przy 120k produktach będą problemy z pamięcią i prędkością. Meilisearch to ten sam sterownik Scout, ale osobna usługa, błyskawiczne wyszukiwanie, tolerancja błędów i facety z pudełka. Jeden kontener Docker, nakłady pracy te same.
- AI-konsultant: RAG zamiast gołego promptu. Systemowy prompt "nie wymyślaj produktów" nie działa, LLM będzie halucynować. Należy przy pytaniu użytkownika najpierw przeszukać katalog przez Scout, przekazując 10-15 odpowiednich produktów w kontekście API. Dodatkowe nakłady ~1 dzień, ale wynik z zabawki przekształca się w narzędzie robocze.
- top_category_id: MySQL CTE zamiast rekurencji PHP. Rekurencyjny PHP przy 120k produktach to setki tysięcy zapytań. Jeden WITH RECURSIVE CTE robi to samo w sekundy.
- Schema.org: Komponenty Blade. Zamiast kopiowania JSON-LD do każdego szablonu, wielokrotnego użytku "x-schema.product", "x-schema.breadcrumb". Łatwiejsze do utrzymania na 5-6 typach stron.
- WebP: Cloudflare Polish pokrywa 80% zadania. Skoro Cloudflare już jest podłączone, Polish automatycznie konwertuje na WebP przy dostawie. Zadanie w kolejce potrzebne tylko dla miniatur w konkretnych rozmiarach.
Jestem gotów na długoterminową współpracę.