47 lines
3.5 KiB
Markdown
47 lines
3.5 KiB
Markdown
# ORDER-DRAFT — Known Issues
|
|
|
|
> Companion to [`README.md`](README.md). Topic `ORDD`, prefix `MGFBANKPLUG` → entry IDs `MGFBANKPLUG-ORDD-I-<RAND>` (issue) / `-B-` (confirmed bug) / `-T-` (tech-debt).
|
|
> ID format, Status vocabulary, type codes and archival → `../../.github/TOPIC_CODES.md` (→ framework registry).
|
|
|
|
Scope: az AI-alapú rendelésfelvevő (OrderDraft) problémái — beérkező üzenet parse-olása, termék/partner feloldás, tanuló mappingek, draft életciklus, jóváhagyási belépési pont a PRE-ORDER folyamatba.
|
|
|
|
## Active entries
|
|
|
|
## MGFBANKPLUG-ORDD-I-Q4N7: Az `ApproveAsync` fixen `StoreId = 1`-et használ
|
|
|
|
**Status:** Open (2026-06-15) · **Priority:** P3 · **Type:** I (multi-store helyesség)
|
|
|
|
`OrderDraftService.ApproveAsync` ([`Services/OrderDraftService.cs`](../../Services/OrderDraftService.cs)) mindkét ágban (`preorder` és `azonnali`) `StoreId = 1` konstanssal hozza létre a `PreOrder`-t:
|
|
|
|
```csharp
|
|
var preorder = new PreOrder { CustomerId = draft.CustomerId!.Value, StoreId = 1, ... };
|
|
```
|
|
|
|
**Hatás:** jelenleg egy store-os környezetben nincs gond. Multi-store esetén viszont a draftból mindig az 1-es store-ba kerül a rendelés, függetlenül a partner/üzenet kontextusától — rossz store-hoz rendelt rendelések.
|
|
|
|
**Javítási irány:** a store-t a draft kontextusából vagy a partner (`Customer`) alapértelmezett store-jából vezessük le, ne hardcode-oljuk. (Megj.: a `PreOrderAdminController.CreatePreOrder` is hasonló fallback-logikát használ — érdemes közös segédbe emelni.)
|
|
|
|
**Affected:** `Services/OrderDraftService.cs` → `ApproveAsync` (mindkét `new PreOrder { StoreId = 1 }`).
|
|
|
|
## MGFBANKPLUG-ORDD-T-R8W3: A jóváhagyás preorder/azonnali ága szinte duplikátum
|
|
|
|
**Status:** Open (2026-06-15) · **Priority:** P3 · **Type:** T (tech-debt / refaktor)
|
|
|
|
`ApproveAsync`-ben a `preorderItems` és az `orderItems` (azonnali) ág kódja közel azonos: `PreOrderItem` lista építése (`UnitPriceInclTax = 0`, `Status = Pending`), `PreOrder` létrehozás, `InsertPreOrderAsync`, majd `ConvertPreOrdersForProductsAsync` hívás. Az egyetlen érdemi különbség a `CustomerNote` szövege és hogy az azonnali ág a végén visszaolvassa az `OrderId`-t.
|
|
|
|
Mivel mindkét ág ugyanazon a `PreOrder` + konverzió flow-n megy keresztül (a konverziós ablak dönti el, hogy azonnal teljesül-e), a kettő **egyetlen** közös ággá vonható össze, dátum szerinti elágazás nélkül — vagy egy közös privát helperrel (`CreatePreOrderFromDraftItemsAsync(items, note)`).
|
|
|
|
**Affected:** `Services/OrderDraftService.cs` → `ApproveAsync`.
|
|
|
|
## MGFBANKPLUG-ORDD-I-M2K9: Az API-kulcs összehasonlítása nem konstans idejű
|
|
|
|
**Status:** Open (2026-06-15) · **Priority:** P3 · **Type:** I (security hardening)
|
|
|
|
`OrderDraftApiController.ValidateApiKey` ([`Controllers/OrderDraftApiController.cs`](../../Controllers/OrderDraftApiController.cs)) `string.Equals(..., StringComparison.Ordinal)`-lal hasonlítja össze a beküldött és a tárolt API-kulcsot. Ez **nem konstans idejű** — elvi timing-oldalcsatorna a kulcs kitalálására.
|
|
|
|
**Hatás:** alacsony (a kulcs hosszú, és a háló-jitter elnyomja a mikro-eltérést), de egy publikus, csak-API-kulccsal védett végpontnál a fixed-time összehasonlítás az elvárt gyakorlat.
|
|
|
|
**Javítási irány:** fixed-time összehasonlítás, pl. `CryptographicOperations.FixedTimeEquals` a két kulcs UTF-8 byte-jaira (hossz-eltérés előzetes kezelésével). Opcionálisan rate-limiting a végponton.
|
|
|
|
**Affected:** `Controllers/OrderDraftApiController.cs` → `ValidateApiKey`.
|