Przejdź do treści

FAQ - Często zadawane pytania

Setup i instalacja

Ile czasu zajmuje setup środowiska?

Pierwsze setup: - Instalacja narzędzi: 30-60 min - Sklonowanie repo i npm install: 10-15 min - Docker setup: 5-10 min - Pierwsze uruchomienie: 5 min - Razem: ~1-2 godziny

Kolejne setupy (nowy komputer): - Z doświadczeniem: 30-45 min

Czy muszę mieć dostęp do Azure?

Do developmentu lokalnego: NIE - SQL Server: lokalny Docker - Storage: Azurite emulator - Email: MailHog

Do deploymentu: TAK - Potrzebujesz dostępu do Azure DevOps - Poproś team lead o uprawnienia

Jakie są wymagania sprzętowe?

Minimum: - 8 GB RAM (16 GB zalecane) - 4 core CPU - 20 GB wolnego miejsca

Zalecane: - 16+ GB RAM - 8+ core CPU - SSD - Dobre połączenie internetowe (npm install!)

Czy mogę używać VS Code czy muszę mieć Visual Studio?

Frontend: VS Code w zupełności wystarcza (i jest zalecany)

Backend: - VS Code: OK (z C# extension) - Visual Studio: Lepsze dla debugowania .NET - Rider: Świetna alternatywa (płatne)

Git workflow

Na jakim branchu mam pracować?

NIE commituj bezpośrednio na: - main - produkcja - develop - development

Twórz feature branche:

git checkout -b feature/nazwa-zadania

Jak często mam pushować?

  • Commit lokalnie często (atomowe zmiany)
  • Push min. raz dziennie (backup)
  • Push przed code review

Co jeśli mam konflikty?

git checkout develop
git pull origin develop
git checkout feature/moj-branch
git merge develop
# Rozwiąż konflikty
git commit
git push

Frontend

Nie mogę zaimportować modułu @msk/...

# Build wszystkich bibliotek
npx nx run-many --target=build --all

# Lub konkretnej biblioteki
npx nx build budgets

Port 4200 jest zajęty

# Zabij proces
lsof -ti:4200 | xargs kill -9

# Lub użyj innego portu
ng serve --port 4300

npm install trwa wieki

To normalne przy pierwszym razie (32+ bibliotek!).

Przyspieszenie:

# Wyczyść cache
npm cache clean --force

# Użyj yarn (szybszy)
yarn install

Jak dodać nową bibliotekę Nx?

# Wygeneruj bibliotekę
nx generate @nrwl/angular:library nazwa-biblioteki

# Dodaj do tsconfig.base.json paths
{
  "@msk/nazwa-biblioteki": ["projects/nazwa-biblioteki/src/index.ts"]
}

Błędy TypeScript w IDE ale build działa

# Restart TS Server w VS Code
Cmd+Shift+P  "TypeScript: Restart TS Server"

Backend

Connection string do lokalnej bazy

Server=localhost,1433;Database=Masaku;User=sa;Password=Masaku123;TrustServerCertificate=True

Jak zresetować lokalną bazę?

cd masaku-api/docker
docker-compose down -v
docker-compose up -d

# Migracje wykonają się automatycznie

Czy muszę uruchamiać wszystkie projekty (.API, .MessageReceiver, .EmailQueue)?

Do developmentu: - Masaku.API - TAK - Masaku.MessageReceiver - opcjonalnie - Masaku.EmailQueue - opcjonalnie

Do testowania background jobs: - Uruchom wszystkie

Jak dodać nowy endpoint?

  1. Controller: Masaku.API/Controllers/
  2. Service: Masaku.Services/
  3. Repository: Masaku.Repository/
  4. DTO/Model: Masaku.Domain/Models/

EF Core - jak dodać nową tabelę?

Projekt używa Liquibase, nie EF Migrations!

  1. Utwórz changelog: Sql/Liquibase/XX_nazwa.xml
  2. Dodaj do liquibase.properties
  3. Uruchom: liquibase update
  4. Dodaj entity w Masaku.Domain
  5. Dodaj do DbContext

Testy

Jak uruchomić testy?

Frontend:

npm test                 # Wszystkie
npx nx test budgets      # Konkretna biblioteka
npm run test:coverage    # Z coverage

Backend:

dotnet test              # Wszystkie
dotnet test Masaku.Tests.Unit
dotnet test --filter "FullyQualifiedName~BudgetServiceTests"

Testy nie przechodzą lokalnie ale CI/CD OK

  • Sprawdź timezone (może być różny)
  • Sprawdź zmienne środowiskowe
  • Sprawdź czy masz najnowszego developa

Jak mockować serwisy w testach?

Frontend (Jasmine):

const mockService = jasmine.createSpyObj('BudgetService', ['getAll']);
mockService.getAll.and.returnValue(of([...]));

TestBed.configureTestingModule({
  providers: [
    { provide: BudgetService, useValue: mockService }
  ]
});

Backend (Moq):

var mockService = new Mock<IBudgetService>();
mockService.Setup(s => s.GetAll()).Returns(budgets);

Deployment

Jak wygląda proces deploymentu?

  1. Merge do develop → auto deploy to Testing (DE/AT)
  2. Manual deploy to Staging
  3. Manual deploy to Production
  4. Każdy przez Azure Pipelines

Czy mogę deployować samodzielnie?

Testing: Auto deploy po merge Staging/Production: Potrzebujesz uprawnień (poproś team lead)

Jak zrobić rollback?

Zobacz: Rollback strategies

Debugowanie

Nie widzę request logów w API

Sprawdź appsettings.Development.json:

{
  "Logging": {
    "LogLevel": {
      "Default": "Debug"  // Zmień z Information
    }
  }
}

CORS errors w przeglądarce

Development: Sprawdź Masaku.API/Startup.cs - powinna być policy "Development" z http://localhost:4200

Production: To jest OK - frontend i backend są na różnych domenach, ale CORS jest skonfigurowany.

Redux DevTools nie pokazuje NGXS actions

Sprawdź czy masz zainstalowane: 1. Redux DevTools Extension w przeglądarce 2. @ngxs/devtools-plugin w package.json

Performance

Frontend ładuje się wolno lokalnie

To normalne w dev mode (bez optimizations).

Build production:

npm run build:test-de
# Sprawdź dist/ - będzie dużo szybszy

Backend response times są długie

Lokalnie: - Sprawdź czy SQL Server ma dość RAM (Docker settings) - Włącz query logging aby zobaczyć slow queries

Production: - Sprawdź Application Insights - Może być problem z indeksami w bazie

Azure AD B2C

Nie mogę się zalogować lokalnie

Opcja A: Poproś o testowe credentials Opcja B: Użyj mock authentication (tylko dev) Opcja C: Poproś o dodanie twojego konta do tenant

Redirect URI not matching

Sprawdź environment.ts:

redirectUri: 'http://localhost:4200'  // MUSI być dokładnie to samo co w Azure

Różnice DE vs AT

Czym różnią się regiony DE i AT?

  • Różne Azure tenants
  • Różne API endpoints
  • Różne environment configurations
  • Inne compliance rules

Jak testować dla AT?

# Frontend
npm run build:test-at

# Backend
# Zmień environment na Austria w launchSettings.json

Inne

Gdzie znajdę dokumentację API?

Lokalnie: http://localhost:5000/swagger Testing: https://testing-api.masaku.com/swagger

Jak zgłosić buga?

  1. Azure DevOps → Boards → Work Items
  2. New Work Item → Bug
  3. Wypełnij template

Jak poprosić o feature?

  1. Azure DevOps → Boards → Work Items
  2. New Work Item → Feature
  3. Opisz wymagania

Kto może pomóc jeśli utknę?

  1. Sprawdź tę dokumentację
  2. Zapytaj na team channel (Teams/Slack)
  3. Code review - poproś o parę programowania
  4. Team lead

Gdzie są hasła/secrets?

NIE commituj secrets do repo!

  • Lokalnie: appsettings.Development.json (w .gitignore)
  • Produkcja: Azure Key Vault
  • Poproś team lead o dostęp

Czy mogę używać macOS/Linux?

Frontend: Tak, wszystko działa Backend: Tak, .NET 6 jest cross-platform

Jedyna różnica: Używaj docker-compose zamiast Docker Desktop GUI.

Jak długo trwa build na CI/CD?

  • Frontend: 5-8 minut
  • Backend: 3-5 minut
  • Integration tests: 2-3 minuty

Co jeśli pipeline failuje?

  1. Sprawdź logi w Azure Pipelines
  2. Uruchom testy lokalnie
  3. Prawdopodobnie:
  4. Failing test
  5. Lint error
  6. Build error

Przydatne komendy - cheatsheet

Git

git checkout develop
git pull origin develop
git checkout -b feature/nazwa
git add .
git commit -m "feat: opis"
git push -u origin feature/nazwa

Frontend

npm start              # Dev server
npm test              # Testy
npm run lint          # Linting
npx nx graph          # Dependency graph

Backend

dotnet run            # Uruchom API
dotnet test           # Testy
dotnet build          # Build

Docker

docker-compose up -d     # Start usług
docker-compose down      # Stop
docker-compose logs -f   # Logi
docker ps               # Status kontenerów

Potrzebujesz więcej pomocy?

W razie problemów: - Zapytaj na team channel - Stwórz issue w Azure DevOps - Poproś o pair programming session