1
0
Fork 0
mirror of https://github.com/s-frick/effigenix.git synced 2026-03-28 11:59:35 +01:00

feat: TUI-Screens für Inventar und Produktion + API-Client Typ-Migration

Neue TUI-Features:
- Inventar: Lageorte auflisten, anlegen, bearbeiten, (de-)aktivieren
- Produktion: Rezepte auflisten, anlegen, Detail-Ansicht
- Navigation erweitert (Hauptmenü, Routing)

API-Client auf generierte OpenAPI-Typen umgestellt:
- 6 neue Alias-Dateien in @effigenix/types (supplier, category, article,
  customer, inventory, production)
- api-client Re-Exports direkt von @effigenix/types statt via Resources
- Backend: @Schema(requiredProperties) auf 16 Response-Records
- Backend: OpenApiCustomizer für application-layer DTOs (UserDTO, RoleDTO)

Hinweis: Backend-Endpoints für GET /api/recipes und
GET /api/inventory/storage-locations/{id} fehlen noch (separate Issues).
This commit is contained in:
Sebastian Frick 2026-02-19 13:45:35 +01:00
parent bee3f28b5f
commit c26d72fbe7
48 changed files with 2090 additions and 474 deletions

View file

@ -0,0 +1,16 @@
/**
* Article types
* Re-exports types from the auto-generated OpenAPI schema
*/
import type { components } from './generated/api';
// Response DTOs
export type ArticleDTO = components['schemas']['ArticleResponse'];
export type SalesUnitDTO = components['schemas']['SalesUnitResponse'];
// Request types
export type CreateArticleRequest = components['schemas']['CreateArticleRequest'];
export type UpdateArticleRequest = components['schemas']['UpdateArticleRequest'];
export type AddSalesUnitRequest = components['schemas']['AddSalesUnitRequest'];
export type UpdateSalesUnitPriceRequest = components['schemas']['UpdateSalesUnitPriceRequest'];

View file

@ -0,0 +1,13 @@
/**
* Product Category types
* Re-exports types from the auto-generated OpenAPI schema
*/
import type { components } from './generated/api';
// Response DTOs
export type ProductCategoryDTO = components['schemas']['ProductCategoryResponse'];
// Request types
export type CreateCategoryRequest = components['schemas']['CreateProductCategoryRequest'];
export type UpdateCategoryRequest = components['schemas']['UpdateProductCategoryRequest'];

View file

@ -0,0 +1,19 @@
/**
* Customer types
* Re-exports types from the auto-generated OpenAPI schema
*/
import type { components } from './generated/api';
// Response DTOs
export type CustomerDTO = components['schemas']['CustomerResponse'];
export type DeliveryAddressDTO = components['schemas']['DeliveryAddressResponse'];
export type FrameContractDTO = components['schemas']['FrameContractResponse'];
export type ContractLineItemDTO = components['schemas']['ContractLineItemResponse'];
// Request types
export type CreateCustomerRequest = components['schemas']['CreateCustomerRequest'];
export type UpdateCustomerRequest = components['schemas']['UpdateCustomerRequest'];
export type AddDeliveryAddressRequest = components['schemas']['AddDeliveryAddressRequest'];
export type SetFrameContractLineItem = components['schemas']['LineItem'];
export type SetFrameContractRequest = components['schemas']['SetFrameContractRequest'];

File diff suppressed because it is too large Load diff

View file

@ -11,6 +11,12 @@ export * from './user';
export * from './role';
export * from './common';
export * from './enums';
export * from './supplier';
export * from './category';
export * from './article';
export * from './customer';
export * from './inventory';
export * from './production';
// Re-export generated types for advanced usage
export type { components, paths } from './generated/api';

View file

@ -0,0 +1,14 @@
/**
* Inventory types
* Re-exports types from the auto-generated OpenAPI schema
*/
import type { components } from './generated/api';
// Response DTOs
export type StorageLocationDTO = components['schemas']['StorageLocationResponse'];
export type TemperatureRangeDTO = components['schemas']['TemperatureRangeResponse'];
// Request types
export type CreateStorageLocationRequest = components['schemas']['CreateStorageLocationRequest'];
export type UpdateStorageLocationRequest = components['schemas']['UpdateStorageLocationRequest'];

View file

@ -0,0 +1,14 @@
/**
* Production types
* Re-exports types from the auto-generated OpenAPI schema
*/
import type { components } from './generated/api';
// Response DTOs
export type RecipeDTO = components['schemas']['RecipeResponse'];
export type IngredientDTO = components['schemas']['IngredientResponse'];
// Request types
export type CreateRecipeRequest = components['schemas']['CreateRecipeRequest'];
export type AddRecipeIngredientRequest = components['schemas']['AddRecipeIngredientRequest'];

View file

@ -0,0 +1,21 @@
/**
* Supplier types
* Re-exports types from the auto-generated OpenAPI schema
*/
import type { components } from './generated/api';
// Response DTOs
export type SupplierDTO = components['schemas']['SupplierResponse'];
export type AddressDTO = components['schemas']['AddressResponse'];
export type ContactInfoDTO = components['schemas']['ContactInfoResponse'];
export type PaymentTermsDTO = components['schemas']['PaymentTermsResponse'];
export type QualityCertificateDTO = components['schemas']['QualityCertificateResponse'];
export type SupplierRatingDTO = components['schemas']['SupplierRatingResponse'];
// Request types
export type CreateSupplierRequest = components['schemas']['CreateSupplierRequest'];
export type UpdateSupplierRequest = components['schemas']['UpdateSupplierRequest'];
export type RateSupplierRequest = components['schemas']['RateSupplierRequest'];
export type AddCertificateRequest = components['schemas']['AddCertificateRequest'];
export type RemoveCertificateRequest = components['schemas']['RemoveCertificateRequest'];