Mango.Nop.Plugins/Nop.Plugin.Misc.AIPlugin/docs/ORDERDRAFT/ORDERDRAFT_ISSUES.md

3.5 KiB

ORDER-DRAFT — Known Issues

Companion to 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) mindkét ágban (preorder és azonnali) StoreId = 1 konstanssal hozza létre a PreOrder-t:

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.csApproveAsync (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.csApproveAsync.

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) 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.csValidateApiKey.