القائمة

سجل الإصدارات

كل مدخل هو الفرق بين مخططين منشورين، مصنّفًا كقاطع أو يحتاج انتباهًا أو آمن. يظهر ما هو أحدث من آخر قطع كغير منشور.

2026-11-02

المالية: استمرارية الدفعات والضمان من الموقع القديم (docs/adr/0107، التعديل). يكتسب SellerBalanceView الحقلين awaitingMillimes وawaitingSlices — الأموال المنتظرة: طلبات مُسلَّمة أو مدفوعة بالبطاقة لم يصل مالها بعد، خارج أي رصيد — والحقل releaseSchedule، الضمان حسب يوم الإفراج (يوم تونس، 60 يومًا على الأكثر، عنصر ReleaseDayView لكل يوم: day وamountMillimes وslices). يقرأ SellerStatementView الآن الدفعة ككشف يجب دفعه: source (platform أو legacy) وshopName وpaidMillimes وresidualMillimes وinFlightMillimes (التحويلات في دفعة بنكية) وpaymentStatus (unpaid أو partial أو paid أو deferred) وdeferredReason وdeferredAt وpayments (المدفوعات المسجلة أو المجدولة على الدفعة) وdeductions (فواتير Wamia المسددة بالخصم عند هذا الإقفال، عنصر SellerInvoicePaymentView لكل فاتورة) وlegacyTransactionIds وodooBillRef لدفعة منقولة من الموقع القديم. يكتسب SellerFeeInvoiceView الحقول paidMillimes وpaymentStatus وhasXlsx (ملف العمل سطرًا بسطر موجود). إضافات فقط.

آمن · 20
  • type_added ReleaseDayView — OBJECT
  • field_added SellerBalanceView.awaitingMillimes — Float!
  • field_added SellerBalanceView.awaitingSlices — Int!
  • field_added SellerBalanceView.releaseSchedule — [ReleaseDayView!]!
  • field_added SellerFeeInvoiceView.hasXlsx — Boolean!
  • field_added SellerFeeInvoiceView.paidMillimes — Float!
  • field_added SellerFeeInvoiceView.paymentStatus — String!
  • type_added SellerInvoicePaymentView — OBJECT
  • field_added SellerStatementView.deductions — [SellerInvoicePaymentView!]!
  • field_added SellerStatementView.deferredAt — DateTime
  • field_added SellerStatementView.deferredReason — String
  • field_added SellerStatementView.inFlightMillimes — Float!
  • field_added SellerStatementView.legacyTransactionIds — [String!]
  • field_added SellerStatementView.odooBillRef — String
  • field_added SellerStatementView.paidMillimes — Float!
  • field_added SellerStatementView.paymentStatus — String!
  • field_added SellerStatementView.payments — [PayoutView!]!
  • field_added SellerStatementView.residualMillimes — Float!
  • field_added SellerStatementView.shopName — String
  • field_added SellerStatementView.source — String!

2026-11-01

الشحنات: يمكن أن تغادر الشحنة في عدة طرود تحت رقم تتبع واحد (docs/adr/0212). يكتسب ApiShipmentView الحقل packageCount، عدد الطرود المُعلن للناقل، والحقل packages، عنصر ApiShipmentPackageView لكل طرد (packageIndex بدءًا من 1، وparcelNo، وlabel — ملصق هذا الطرد، تطبع AFEX <التتبع>P01 و<التتبع>P02… — وweightGrams، الوزن المقروء على طاولة التغليف، null حتى يُغلق الطرد). شحنة من طرد واحد لها packageCount يساوي 1 وعنصر واحد في packages؛ تبقى المحاسبة والدفع عند الاستلام لكل شحنة. إضافة فقط. المرتجعات: يكتسب ReturnArrivalView الحقلين packageIndex وpackageCount، الطرد المستلم على الرصيف ومجموع الشحنة عندما تضم عدة طرود (null للطرد الواحد)؛ لا تُعتبر الشحنة عائدة إلا بعد مسح جميع طرودها. إضافة فقط.

آمن · 5
  • type_added ApiShipmentPackageView — OBJECT
  • field_added ApiShipmentView.packageCount — Int!
  • field_added ApiShipmentView.packages — [ApiShipmentPackageView!]!
  • field_added ReturnArrivalView.packageCount — Int
  • field_added ReturnArrivalView.packageIndex — Int

2026-10-30

الكتالوج: يعرض ProductFlags الحقل shipsAsIs، صحيح عندما يُشحن المنتج دون حاوية من واميا (حقل «يُشحن كما هو» من مجموعة اللوجستيك): لا يضع المستودع سوى الملصق وشريط المستند، ولا يُحتسب على الطلب الفرعي إلا تعرفة «بدون حاوية» (docs/adr/0209). إضافة فقط. مواعيد الرصيف: يكتسب AppointmentSlotView الحقل closedReason، سبب إغلاق رزنامة المنصة للموقع في هذه الفترة (عطلة رسمية، جرد — docs/adr/0173)؛ يكون remaining حينها 0 وترفض apiBookInboundAppointment وapiRescheduleInboundAppointment وapiBookWithdrawalAppointment وapiRescheduleWithdrawalAppointment الفترة بهذا السبب؛ null عندما يكون الموقع مفتوحًا. إضافة فقط. الويب هوك: تكتسب عائلتا inbound.* وwithdrawal.* الحدثين inbound.slot_closed وwithdrawal.slot_closed، يُرسلان عندما يُغلق المستودع على فترة محجوزة مسبقًا (appointmentId وstartsAt وreason)؛ لا يُنقل شيء نيابة عنكم، أعيدوا الحجز بـ apiRescheduleInboundAppointment أو apiRescheduleWithdrawalAppointment. إضافة فقط.

آمن · 2
  • field_added AppointmentSlotView.closedReason — String
  • field_added ProductFlags.shipsAsIs — Boolean

2026-10-29

زيارات الإيداع ومهلة الموعد (docs/adr/0207): يكتسب OrderSliceView الحقول slotDueAt (الموعد الأقصى لحجز موعد رصيف لطلب فرعي عابر للمستودع) وsellerClock (SellerClockView: الالتزام التالي للمتجر وأجله — SellerClockKind: ack أو slot أو arrival أو pickup أو none) وdropoffVisit (DropoffVisitView: زيارة الإيداع التي يتبعها الطلب الفرعي، مع قرارها DropoffRunDecision وموعد الرصيف والمستودع والشحنات التي تضمها، DropoffVisitShipmentView). يكتسب SliceInboundView الحقل appointmentId، موعد الرصيف الذي يغطي الشحنة — موعدها أو موعد الزيارة. إضافات فقط.

آمن · 9
  • type_added DropoffRunDecision — ENUM
  • type_added DropoffVisitShipmentView — OBJECT
  • type_added DropoffVisitView — OBJECT
  • field_added OrderSliceView.dropoffVisit — DropoffVisitView
  • field_added OrderSliceView.sellerClock — SellerClockView!
  • field_added OrderSliceView.slotDueAt — DateTime
  • type_added SellerClockKind — ENUM
  • type_added SellerClockView — OBJECT
  • field_added SliceInboundView.appointmentId — String

2026-10-27

المرتجعات والطلبات (docs/adr/0200، 0201): يكتسب RmaItemView الحقول variantLabel وimagePath وunitPriceMillimes وlineQuantity (السطر كما بيع)؛ ويكتسب RmaExchangeSummaryView الحقول targetSku وtargetLabel وreplacementSliceNo وreplacementSliceStatus (مادة الاستبدال والطلب الفرعي الذي يشحنها)؛ ويكتسب RmaView الحقل customerHistory (RmaCustomerHistoryView: المرتجعات المطلوبة والمكتملة والمرفوضة، ومرتجعات آخر 365 يومًا، وإجمالي ما استُرد للعميل). يكتسب OrderSliceView الحقل kind (OrderSliceKind: SALE أو EXCHANGE أو WARRANTY_REPLACEMENT) وsourceRmaId، المرتجع الذي نشأ عنه طلب فرعي للاستبدال. إضافات فقط.

آمن · 13
  • type_added OrderSliceKind — ENUM
  • field_added OrderSliceView.kind — OrderSliceKind!
  • field_added OrderSliceView.sourceRmaId — String
  • type_added RmaCustomerHistoryView — OBJECT
  • field_added RmaExchangeSummaryView.replacementSliceNo — String
  • field_added RmaExchangeSummaryView.replacementSliceStatus — String
  • field_added RmaExchangeSummaryView.targetLabel — String
  • field_added RmaExchangeSummaryView.targetSku — String
  • field_added RmaItemView.imagePath — String
  • field_added RmaItemView.lineQuantity — Int!
  • field_added RmaItemView.unitPriceMillimes — Float!
  • field_added RmaItemView.variantLabel — String
  • field_added RmaView.customerHistory — RmaCustomerHistoryView

2026-10-26

الإرجاعات: RmaView يكتسب returnMethod (EXPRESS_PICKUP أو DROPOFF أو CARRIER، وnull حتى يقرّر مكتب الإرجاعات)، وpickupCollectedAt (لحظة استلام سائق Wamia Express الطردَ من عند الزبون)، وpickup أي حالة هذا الاستلام المنزلي (ReturnPickupView: المحطة، الجولة ويومها، اسم السائق، الحالة، عدد المحاولات، آخر سبب فشل)؛ null دون استلام مخطَّط. يأتي معه التعدادان ExpressStopStatus وExpressRouteStatus. الاستبدال عند الباب (docs/adr/0199): RmaReturnMethod يكتسب CARRIER_EXCHANGE — يُحضر الناقل البديل ويسترجع المنتج من عند الزبون؛ RmaView يعرض returnShipment (RmaReturnShipmentView: النوع exchange أو return_document، الناقل، رقم التتبع ورابطه، الحالة، المحاولات، إشعار الاسترجاع، تذاكر الناقل RmaCarrierTicketView)، وeligibilityOutcome (ExchangeEligibilityOutcome: ALLOW_DOOR_EXCHANGE وEXCHANGE_AFTER_INSPECTION وPICKUP_ONLY وDENY_EXCHANGE)، وللموظفين eligibilitySnapshotJson وriskHold (RmaRiskHoldView، الجزء المحجوز في المحفظة) وunreturnedReportedAt. RefundLineView يقول awaitingProof وproofUploadedAt وproofUploadedByUserId لتحويل يدوي ينتظر إثباته؛ ReturnArrivalView.doorExchange يُعلم الرصيف بعودة استبدال. يكتسب RmaView أيضًا returnCarrierCode وreturnCarrierRuleId: الناقل الذي يستعيد المرتجع وقاعدة المرتجعات التي اختارته (null ما لم تحسم قاعدة).

آمن · 22
  • type_added ExchangeEligibilityOutcome — ENUM
  • type_added ExpressRouteStatus — ENUM
  • type_added ExpressStopStatus — ENUM
  • field_added RefundLineView.awaitingProof — Boolean!
  • field_added RefundLineView.proofUploadedAt — DateTime
  • field_added RefundLineView.proofUploadedByUserId — String
  • field_added ReturnArrivalView.doorExchange — Boolean!
  • type_added ReturnPickupView — OBJECT
  • type_added RmaCarrierTicketView — OBJECT
  • type_added RmaReturnMethod — ENUM
  • type_added RmaReturnShipmentView — OBJECT
  • type_added RmaRiskHoldView — OBJECT
  • field_added RmaView.eligibilityOutcome — ExchangeEligibilityOutcome
  • field_added RmaView.eligibilitySnapshotJson — String
  • field_added RmaView.pickup — ReturnPickupView
  • field_added RmaView.pickupCollectedAt — DateTime
  • field_added RmaView.returnCarrierCode — String
  • field_added RmaView.returnCarrierRuleId — String
  • field_added RmaView.returnMethod — RmaReturnMethod
  • field_added RmaView.returnShipment — RmaReturnShipmentView
  • field_added RmaView.riskHold — RmaRiskHoldView
  • field_added RmaView.unreturnedReportedAt — DateTime

2026-10-23

السحوبات: WithdrawalRequestView يكتسب holdUntil، اللحظة التي تعود فيها الوحدات المجهّزة عند المنضدة إلى التخزين ما لم يُحجز موعد رصيف (stagedHoldHours بعد جاهزيتها، أو بعد موعد فائت)؛ null ما دام موعد محجوزًا أو عندما يخدم الموقع من الرفوف. لوحة المتابعة: SellerDashboardProductView يكتسب imagePath، صورة المنتج المصغّرة (/i/<asset>/thumb.webp)، null دون صورة جاهزة.

آمن · 2
  • field_added SellerDashboardProductView.imagePath — String
  • field_added WithdrawalRequestView.holdUntil — DateTime

2026-10-22

العروض: OfferView وOfferInput يكتسبان sellerSku، مرجعك الخاص للسلعة في نظامك (ERP، نقطة البيع، جدول بيانات). فريد لكل متجر دون تمييز بين الأحرف الكبيرة والصغيرة، ولا تستخدمه وامية أبدًا في عملياتها: يبقى sku مرجع وامية، يُطبع على الملصقات ويُمسح في المستودع. إذا أُغفل sellerSku يُحتفظ به؛ وإذا كان فارغًا يُمسح؛ ويُرفض المرجع الذي يحمله عرض آخر من عروضك. البحث q في myOffersPage يتعرف عليه أيضًا (docs/adr/0192).

آمن · 2
  • field_added OfferInput.sellerSku — String
  • field_added OfferView.sellerSku — String

2026-10-16قاطع · 2

السحوبات: يتبع السحب الآن المسار نفسه الذي تتبعه عملية الاستلام (docs/adr/0185). تضيف WithdrawalStatus القيم SCHEDULED وPREPARING وREADY وARRIVED وCLOSED (سُلّم كاملاً) وHANDED_OVER (سُلّم جزئياً مع shortfallReason لكل سطر) وNO_SHOW؛ وتُحذف PICKED (تغيير كاسر: تصبح PICKED هي READY، ويصبح السحب المسلَّم سابقاً CLOSED؛ تعاملوا مع أي قيمة غير معروفة كحالة وسيطة). يعرض WithdrawalRequestView الحقول reference (RT-YYYY-N) وappointment (WithdrawalAppointmentView: الرصيف والبداية والنهاية والحالة) وreadyAt وarrivedAt وclosedAt وnoShowAt وcancelReason وshopRepresentative وphotoKeys وfacilityCode وstagingBarcode وatRisk وعدّادات الأسطر والوحدات (lineCount وrequestedUnits وstagedUnits وhandedUnits وopenTasks وtotalTasks). عمليات جديدة: apiBookWithdrawalAppointment وapiRescheduleWithdrawalAppointment (بلا مفتاح idempotency، الفترات من apiInboundSlots)؛ والموافقة تحجز الوحدات الآن. الويب هوك: تُضاف withdrawal.scheduled وwithdrawal.no_show وwithdrawal.cancelled؛ وتحتفظ withdrawal.requested وdecided وready وhanded_over بأسمائها. الاستلام: يضيف InboundShipmentView الحقول orderNo وsliceNo وphotoKeys وshopRepresentative، وInboundLineView الحقلين needsLabels وneedsMeasure، وInboundShipmentDetailView الحقل reports (InboundReportView، تقرير الاستلام المُرقَّم، docs/adr/0183). المرتجعات: يضيف RmaView الحقل logistics (ReturnLogisticsView: الوصول إلى رصيف المرتجعات وحالته والوضع stocked / cross_dock / mixed، وعند الطلب ReturnArrivalView بأسطره ونتائجه قطعةً قطعة — ReturnDestination: stock وwithdrawal وdamaged وquarantine وmissing — وسحب المتجر المفتوح لوحدات العبور، docs/adr/0186)؛ ويضيف WithdrawalRequestView الحقلين openReturnTasks وtotalReturnTasks. الاستلام من المتجر: يضيف PickupTaskView الحقل qrScannedAt وInboundShipmentDetailView الحقل pickupQr (PickupQrView). التحويلات: يصبح PayoutView.organizationId اختيارياً (تغيير كاسر) لأن التحويل قد يذهب إلى شريك توصيل؛ وتُضاف payeeKind (organization | partner) وpartnerId وpartnerName وpartnerStatementId.

قاطع · 2
  • field_type_changed PayoutView.organizationId — String! → String
  • enum_value_removed WithdrawalStatus.PICKED
يحتاج انتباهًا · 6
  • enum_value_added WithdrawalStatus.ARRIVED
  • enum_value_added WithdrawalStatus.CLOSED
  • enum_value_added WithdrawalStatus.NO_SHOW
  • enum_value_added WithdrawalStatus.PREPARING
  • enum_value_added WithdrawalStatus.READY
  • enum_value_added WithdrawalStatus.SCHEDULED
آمن · 50
  • field_added InboundLineView.needsLabels — Boolean!
  • field_added InboundLineView.needsMeasure — Boolean!
  • type_added InboundReportView — OBJECT
  • field_added InboundShipmentDetailView.pickupQr — PickupQrView
  • field_added InboundShipmentDetailView.reports — [InboundReportView!]!
  • field_added InboundShipmentView.orderNo — String
  • field_added InboundShipmentView.photoKeys — [String!]!
  • field_added InboundShipmentView.shopRepresentative — String
  • field_added InboundShipmentView.sliceNo — String
  • operation_added Mutation.apiBookWithdrawalAppointment — WithdrawalRequestView!
  • operation_added Mutation.apiRescheduleWithdrawalAppointment — WithdrawalRequestView!
  • field_added PayoutView.partnerId — String
  • field_added PayoutView.partnerName — String
  • field_added PayoutView.partnerStatementId — String
  • field_added PayoutView.payeeKind — String!
  • type_added PickupQrView — OBJECT
  • field_added PickupTaskView.qrScannedAt — DateTime
  • type_added ReturnArrivalKind — ENUM
  • type_added ReturnArrivalLineView — OBJECT
  • type_added ReturnArrivalOutcomeView — OBJECT
  • type_added ReturnArrivalStatus — ENUM
  • type_added ReturnArrivalTransferView — OBJECT
  • type_added ReturnArrivalView — OBJECT
  • type_added ReturnArrivalWithdrawalView — OBJECT
  • type_added ReturnCountMethod — ENUM
  • type_added ReturnDestination — ENUM
  • type_added ReturnLocationView — OBJECT
  • type_added ReturnLogisticsView — OBJECT
  • field_added RmaView.logistics — ReturnLogisticsView
  • type_added WithdrawalAppointmentView — OBJECT
  • field_added WithdrawalRequestView.appointment — WithdrawalAppointmentView
  • field_added WithdrawalRequestView.arrivedAt — DateTime
  • field_added WithdrawalRequestView.atRisk — Boolean!
  • field_added WithdrawalRequestView.cancelReason — String
  • field_added WithdrawalRequestView.closedAt — DateTime
  • field_added WithdrawalRequestView.facilityCode — String!
  • field_added WithdrawalRequestView.handedUnits — Int!
  • field_added WithdrawalRequestView.lineCount — Int!
  • field_added WithdrawalRequestView.noShowAt — DateTime
  • field_added WithdrawalRequestView.openReturnTasks — Int!
  • field_added WithdrawalRequestView.openTasks — Int!
  • field_added WithdrawalRequestView.photoKeys — [String!]!
  • field_added WithdrawalRequestView.readyAt — DateTime
  • field_added WithdrawalRequestView.reference — String!
  • field_added WithdrawalRequestView.requestedUnits — Int!
  • field_added WithdrawalRequestView.shopRepresentative — String
  • field_added WithdrawalRequestView.stagedUnits — Int!
  • field_added WithdrawalRequestView.stagingBarcode — String
  • field_added WithdrawalRequestView.totalReturnTasks — Int!
  • field_added WithdrawalRequestView.totalTasks — Int!

2026-10-11

الطلبات: كل شريحة (OrderSliceView) تعرض liveSale، صحيح عندما أُضيف منتج واحد على الأقل من البث المباشر للمتجر واحتُسبت عمولته بنسبة البث المباشر في جدول الرسوم (0٪ افتراضيًا)؛ وخطأ خلاف ذلك. تبقى مبالغ العمولة مقصورة على فريق واميا (docs/adr/0113). العروض: يكتسب OfferView الحقلين organizationName (الاسم المترجم للمتجر الذي يبيع العرض) وvariantLabel (المتغيّر بكلمات واضحة، مثل «256 غ.ب · أزرق»)؛ الحقلان اختياريان ويُسمّيان العرض خارج سياق متجره، مثلاً عندما تبيع عدة متاجر صفحة المنتج نفسها (buy box، docs/adr/0029). التصحيحات: يعرض OrderSliceView وInboundLineView الحقل correctionId، مرجع (COR-YYYY-N) آخر تصحيح يدوي مسّ الشريحة أو سطر الاستلام؛ فارغ ما لم يحدث تصحيح. يلغي التصحيح إجراءً سُجّل عن طريق الخطأ (استلام، خطوة عُلّمت يدويًا) ويترك أثرًا في سجل التصحيحات (docs/adr/0171). التسوية: يعرض OrderSliceView الحقل wamiaFundedMillimes، ما قدّمته واميا على الشريحة (حصة قسيمة واميا، عروض الموسم) من هامشها الخاص؛ لا يُنقص هذا المبلغ إجمالي البائع ولا صافيه ولا أساس العمولة (docs/adr/0172). مقصور على فريق واميا. اللغات: يكتسب LocalizedText وLocalizedTextInput الحقل tn، الدارجة التونسية بالحرف العربي، إلى جانب fr وen وar؛ الحقل اختياري وعند غيابه يُعتمد ar ثم fr. النص المرسل عبر Connect يُسجَّل كمستورد ولا تستبدله الترجمة الآلية لواميا أبدًا (docs/adr/0175).

آمن · 8
  • field_added InboundLineView.correctionId — String
  • field_added LocalizedText.tn — String
  • field_added LocalizedTextInput.tn — String
  • field_added OfferView.organizationName — LocalizedText
  • field_added OfferView.variantLabel — String
  • field_added OrderSliceView.correctionId — String
  • field_added OrderSliceView.liveSale — Boolean!
  • field_added OrderSliceView.wamiaFundedMillimes — Float!

2026-10-10

الإعلانات: يكتسب AdChannel القيمتين META_POOL (كتالوج Meta المشترك، القناة الافتراضية للترويج) وMETA_SOLO (إعلان Meta مخصص لمنتج واحد)؛ وتبقى META قناة المجموعات الإعلانية المخصصة القديمة. على العميل الذي يقرأ AdBoostView.channel قبول هذه القيم (docs/adr/0098). اللوجستيات: العروض المخزّنة لدى واميا تُزوَّد بموعد وتُسترجع بطلب سحب. apiInboundShipments يقبل origin (SELLER_DECLARED للتزويدات، ORDER_DRIVEN لتحويلات العبور)؛ apiInboundSlotGrid يعيد فترات الرصيف يوماً بيوم على 14 يوماً كحد أقصى، وapiRescheduleInboundAppointment ينقل موعداً محجوزاً (حدث inbound.rescheduled). apiStockedPositions يعرض عدّ المستودع (onHandQty وreservedQty وavailableQty) مقسّماً بمؤشر؛ وStockOfferFactsView يحمل fulfilmentMode. نتائج الدفعات (ApiBatchItemResultView) تكتسب skipped وskipReason: apiDeclareStocks يتخطى الآن العروض المخزّنة بـ skipReason يساوي stocked_offer بدل الكتابة فوق عدّ المستودع. عائلتا ويب هوك جديدتان inbound.* وwithdrawal.* (docs/adr/0162).

يحتاج انتباهًا · 2
  • enum_value_added AdChannel.META_POOL
  • enum_value_added AdChannel.META_SOLO
آمن · 10
  • field_added ApiBatchItemResultView.skipReason — String
  • field_added ApiBatchItemResultView.skipped — Boolean
  • type_added ApiStockedPositionPage — OBJECT
  • type_added ApiStockedPositionView — OBJECT
  • type_added AppointmentSlotDayView — OBJECT
  • operation_added Mutation.apiRescheduleInboundAppointment — InboundShipmentView!
  • arg_added Query.apiInboundShipments(origin) — InboundOrigin
  • operation_added Query.apiInboundSlotGrid — [AppointmentSlotDayView!]!
  • operation_added Query.apiStockedPositions — ApiStockedPositionPage!
  • field_added StockOfferFactsView.fulfilmentMode — FulfilmentMode

2026-10-09

الطلبات: كل شريحة (OrderSliceView) تفصّل رسوم المعالجة الإجمالية إلى packagingBoxMillimes (الصندوق) وpackagingProtectionMillimes (فقاعات، شريط، حشو)، شاملة الضريبة؛ مجموعهما هو الإجمالي كما كان. الكتالوج: ProductFlags يعرض retailBoxed، صحيح عندما يُشحن المنتج في علبته الأصلية (حقل «يُشحن في علبته الأصلية» من مجموعة اللوجستيك)؛ المنتج بدون علبة يحصل على لفة فقاعات إضافية (docs/adr/0158).

آمن · 3
  • field_added OrderSliceView.packagingBoxMillimes — Float!
  • field_added OrderSliceView.packagingProtectionMillimes — Float!
  • field_added ProductFlags.retailBoxed — Boolean

2026-10-08

الطلبات: كل سطر (OrderLineView) يعرض promoDiscountMillimes، الخصم الذي يموّله المتجر على السطر (سعر العرض، فلاش، تخفيض أو عرض كمية)؛ 0 بدون عرض. يحتفظ السطر بسعره في الكتالوج، ويُخصم الخصم من التحويل مثل الرسوم (docs/adr/0150).

آمن · 1
  • field_added OrderLineView.promoDiscountMillimes — Float!

2026-10-07

كشف المتجر: كل سطر في دفتر الأستاذ يعرض entryId، معرّف القيد المحاسبي الذي ينتمي إليه (مفتاح تفصيل رسوم التخزين اليومية). الوسائط: يعرض MediaAsset الحقول kind (صورة أو فيديو) وvideoUrl وposterUrl وdurationMs للمقاطع المضمّنة في أوصاف المنتجات؛ وأصبحت الأوصاف HTML منسّقًا (تنسيق، قوائم، جداول، صور وفيديو). اللوجستيك: يعرض ProductVariant الحقول fragile وliquid وsharp (المناولة) إضافة إلى الأبعاد التي قاسها المستودع عند الاستلام (measuredWeightGrams وmeasuredLengthMm وmeasuredWidthMm وmeasuredHeightMm وmeasuredAt — للقراءة فقط)؛ ويكتسب ProductFlags الحقلين battery (BatteryContent) وthisSideUp؛ ويعرض Product الحقل prepSteps، وهو الحماية الإضافية المطلوبة عند التغليف.

آمن · 18
  • type_added BatteryContent — ENUM
  • field_added MediaAsset.durationMs — Int
  • field_added MediaAsset.kind — MediaAssetKind!
  • field_added MediaAsset.posterUrl — String
  • field_added MediaAsset.videoUrl — String
  • type_added MediaAssetKind — ENUM
  • field_added Product.prepSteps — [String!]!
  • field_added ProductFlags.battery — BatteryContent
  • field_added ProductFlags.thisSideUp — Boolean
  • field_added ProductVariant.fragile — Boolean!
  • field_added ProductVariant.liquid — Boolean!
  • field_added ProductVariant.measuredAt — DateTime
  • field_added ProductVariant.measuredHeightMm — Int
  • field_added ProductVariant.measuredLengthMm — Int
  • field_added ProductVariant.measuredWeightGrams — Int
  • field_added ProductVariant.measuredWidthMm — Int
  • field_added ProductVariant.sharp — Boolean!
  • field_added SellerLedgerLineView.entryId — String!

2026-10-06

التزامات المتجر حسب نمط التحضير: الشرائح المخزّنة لدى Wamia للقراءة فقط (apiAcknowledgeSlice وapiMarkSlicePrepared تردّان بـ VALIDATION_FAILED)؛ شرائح العبور تعرض مهلة التأكيد، تأكيد المتجر أو رفضه، والشحنة الواردة المرتبطة (المرجع، الحالة، التاريخ المتوقع، الموعد).

آمن · 6
  • field_added OrderSliceView.inbound — SliceInboundView
  • field_added OrderSliceView.sellerAckDueAt — DateTime
  • field_added OrderSliceView.sellerAcknowledgedAt — DateTime
  • field_added OrderSliceView.sellerDeclineReason — String
  • field_added OrderSliceView.sellerDeclinedAt — DateTime
  • type_added SliceInboundView — OBJECT

2026-10-05

الإصدار العلني الأول من Wamia Connect: تدفق Connect (PKCE) والاقتران، العروض والمخزون دفعةً واحدة، الوسائط عبر الروابط، الطلبات والمرتجعات، الويب هوك الموقّعة، الضوابط وبيئة التجربة.

لا تغيير في المخطط.

سياسة الإصدارات

المخطط ينمو فقط. تُهمل الحقول قبل إزالتها بستة أشهر على الأقل، وتحصل الموصّلات على رفع للحد الأدنى للإصدار بدل كسر صامت. تُعلن التغييرات القاطعة هنا وبالبريد لأصحاب المفاتيح.