Průvodce vývojáře — Nastavení prostředí¶
Požadavky¶
Povinné¶
| Nástroj | Verze | Ověření |
|---|---|---|
| .NET SDK | 10.0+ | dotnet --version |
| PostgreSQL | 17 | lokálně nebo Docker |
| Visual Studio 2022 | 17.12+ | s MAUI workloadem |
| DevExpress | 25.2.x | licence nutná pro Eva.Manager |
Volitelné¶
| Nástroj | Účel |
|---|---|
| JetBrains Rider | Alternativní IDE |
| Docker Desktop | Kontejnerizované spuštění |
| Postman / Bruno | Testování API |
| pgAdmin / DBeaver | Správa PostgreSQL |
NuGet feedy¶
Projekt vyžaduje dva privátní NuGet feedy. Přidejte je do NuGet.Config nebo přes CLI:
# Bartech privátní feed
dotnet nuget add source https://baget.xtrace.cz/v3/index.json --name Bartech
# DevExpress feed (nahraďte TOKEN vaším licenčním tokenem)
dotnet nuget add source "https://nuget.devexpress.com/YOUR_TOKEN/api/v3/index.json" --name DevExpress
DevExpress licenční token získáte v DevExpress Customer Portal.
# Nastavení DevExpress licence (nutné pro build Eva.Manager)
# Windows
set DevExpress_License=VÁŠ_LICENČNÍ_KLÍČ
# Linux / macOS
export DevExpress_License=VÁŠ_LICENČNÍ_KLÍČ
Klonování a první build¶
git clone <url-repozitáře>
cd Eva.Mobile
# Obnovení NuGet balíčků
dotnet restore Eva.slnx
# Build celé solution
dotnet build Eva.slnx
Zdrojové kódy jsou v src/, solution soubory v kořeni repozitáře.
Konfigurace databáze¶
Varianta A — lokální PostgreSQL¶
- Vytvořte databázi
eva_data - Spusťte inicializační skripty z
src/Eva.Database/install/(v pořadí dle číslování) - Zkopírujte
appsettings.Development.template.jsonnaappsettings.Development.jsona upravte connection string:
{
"ConnectionStrings": {
"default": "Host=localhost;Port=5432;Database=eva_data;Username=postgres;Password=vaše_heslo"
}
}
Varianta B — Docker databáze¶
Spuštění projektů¶
# REST API (port 5000 / 5001)
dotnet run --project src/Eva.Mobile.WebApi/Eva.Mobile.WebApi.csproj
# Blazor Manager (port 5080)
dotnet run --project src/Eva.Manager/Eva.Manager.csproj
# MAUI — Android
dotnet build src/Eva.Mobile/Eva.Mobile.csproj -f net10.0-android
# MAUI — iOS
dotnet build src/Eva.Mobile/Eva.Mobile.csproj -f net10.0-ios
Swagger UI dostupné na: http://localhost:5000/swagger (jen Development)
Spuštění testů¶
# Všechny testy
dotnet test Eva.slnx
# Pouze Print testy
dotnet test src/Eva.Print.Tests/Eva.Print.Tests.csproj
# Konkrétní test
dotnet test src/Eva.Print.Tests/Eva.Print.Tests.csproj --filter "FullyQualifiedName~NázevTestu"
# API testy (integrační — ArticleTransfer, Inventory, Locations, TenantIsolation)
dotnet test tests/Eva.Mobile.WebApi.Tests/Eva.Mobile.WebApi.Tests.csproj
E2E Playwright testy (Eva.Manager.PlaywrightTests)¶
E2E testy vyžadují běžící Eva.Manager instanci a nainstalovaný Chromium:
# 1. Spusť Eva.Manager lokálně
dotnet run --project src/Eva.Manager/Eva.Manager.csproj
# 2. Nainstaluj Chromium (jednorázově po prvním buildu)
pwsh tests/Eva.Manager.PlaywrightTests/bin/Debug/net10.0/playwright.ps1 install chromium
# 3. Spusť E2E testy
dotnet test tests/Eva.Manager.PlaywrightTests/Eva.Manager.PlaywrightTests.csproj
# 4. Viditelný browser pro debugování — vytvoř testconfig.local.json
# {"Headless": false, "SlowMo": 100}
testconfig.local.json je vyloučen z gitu — slouží pro lokální override přihlašovacích údajů, URL a nastavení prohlížeče.
Pokryté scénáře: přihlášení, registrace tenanta + JoinCode flow, správa uživatelů (licence limit), správa dat (export JSON/CSV, import), report designer.
Celé prostředí přes Docker Compose¶
# Lokální vývoj — všechny 3 kontejnery (DB + API + Manager)
docker-compose up --build
# Produkční compose (bez Print)
docker-compose -f .docker/compose-EVA-xtdocker-deploy.yaml up -d
# Produkční compose (s Print service)
docker-compose -f .docker/compose-EVA-xtdocker-deploy_with_Print.yaml up -d
Lokalizace¶
Eva.Manager podporuje 5 jazyků: cs-CZ, en-US, de-DE, sk-SK (plus výchozí bez suffixu).
Resource soubory¶
| Soubor | Účel |
|---|---|
Resource.resx + varianty |
Statické popisky UI — názvy sloupců, záhlaví, tlačítka |
Messages.resx + varianty |
Dynamické zprávy — notifikace, validace, suggestion bublinky AI |
Konvence klíčů¶
- Klíče v
Resource.resxodpovídají vzoruEntita_PoleneboAkce_Kontext, např.Article_Name,Button_Save. - Klíče v
Messages.resxodpovídají vzoruOblast_Zprava, např.AiChat_SuggestionAssets. - Hardcoded texty v Razor stránkách nahrazujeme přes
@localizer["KlicZResource"]nebo@localizer["KlicZMessages"].
Přidání nového lokalizačního klíče¶
- Přidejte klíč do
Resource.resx(výchozí, cs-CZ). - Přidejte překlad do
Resource.en-US.resx,Resource.sk-SK.resx,Resource.de-DE.resx. - Injectujte
IStringLocalizer<Resource>do komponenty a použijte@localizer["VašKlíč"].
Dx-lang agent¶
Soubor .claude/skills/dx-lang.md definuje agenta pro automatizaci lokalizace hardcoded textů v Razor stránkách. Použijte ho pro hromadnou lokalizaci nových stránek.
AI Chat integrace¶
Eva.Manager obsahuje integrovaný AI chatbot na stránce /ai-chat. Detailní vývojářský průvodce je v souboru doc/ai_guide.md.
Přidání nového AI nástroje (stručný postup)¶
- Přidejte metodu do
EvaAiFunctions.css atributem[Description("...")]na každém parametru. - Zaregistrujte funkci —
EvaAiFunctionsje singletons injektovaný doEvaToolsMiddleware; nová metoda se zaregistruje automaticky při použití reflexe. - Aktualizujte systémový prompt — přidejte popis nástroje do
EvaSystemPrompt.cs(sekce dostupných nástrojů). - Otestujte — spusťte aplikaci, otevřete
/ai-chata ověřte volání nástroje v logu nebo v tabulcedbo.AiChatMessage.
Podrobnosti (popis parametrů, práce s EvaDocumentationService, konvence pojmenování) viz doc/ai_guide.md.