# Recon pass 1 — real OurVend product/ad/machine flows ## Product library pages found ### Commodity categories - page: `/CommodityType/Index` - list: `/CommodityType/ListJson` - add: `/CommodityType/AddCMT` - edit: `/CommodityType/CMTEdit` - delete: `/CommodityType/Delete` - refresh/cloud sync: `/CommodityType/RefCmt` ### Commodity info (local/cloud product library) - page: `/CommodityInfo/Index` - list: `/CommodityInfo/ListJson` - add: `/CommodityInfo/AddCI` - edit: `/CommodityInfo/EditCI` - delete: `/CommodityInfo/Delete` - top/pin: `/CommodityInfo/ChangeTop` - get one/product data: `/CommodityInfo/GetProductData` - manufacturers: `/CommodityInfo/GetManufacturer` - categories/types: `/CommodityInfo/GetType`, `/CommodityInfo/GetCitype` - upload/import: `/CommodityInfo/ExcelUploadSubmit`, `/CommodityInfo/GetExcel` - export: `/CommodityInfo/CommodityInfoExecl` - reserve/download-to-machine flow helpers: - `/CommodityInfo/DownLoad` - `/CommodityInfo/AuditList` - `/CommodityInfo/getPrCode` - `/CommodityInfo/ReserveList` - `/CommodityInfo/DeleteReserve` - `/CommodityInfo/GetReserveUrl` ## Machine slot/product assignment page found - page: `/Selection/Index` - list/inspect: - `/Selection/SoltInfo` - `/Selection/SoltInfoNo` - `/Selection/GetSoltInfo` - `/Selection/GetProduct` - `/Selection/GetProductUrl` - `/Selection/GetPorductPrice` - `/Selection/ListJsonExcel` - writes: - `/Selection/Edit` - `/Selection/MultiEdit` - `/Selection/DeleteQuantity` - `/Selection/ClearSoltInfo` - `/Selection/ClearSoltInfoAll` - `/Selection/EditWarningQuantity` - `/Selection/SetSlotHot` - `/Selection/AddWarm` - machine/group helpers: - `/SaleSummarize/GetMachineGroup` - `/SaleSummarize/GetMachineID` - `/AssetsManage/GetStringMachineGroup` - `/AssetsManage/GetMachineMiAccuracy` - `/Selection/GetCabinetList` ## Confirmed write payload shapes from official UI ### Product create `POST /CommodityInfo/AddCI` - `PrAdultLimit` - `PrAliAdultLimit` - `ProductCode` - `ProductName` - `PrSpecification` - `PrRetailPrice` - `Manufacturers` - `CiType` - `PrCostPrice` - `PrPromotionPrice` - `PrMemberPrice` - `PrDiscount` - `PrTaxRate` - `QualityPeriod` - `ImgPath` - `PrContent` ### Product edit `POST /CommodityInfo/EditCI` - `PrAdultLimit` - `PrAliAdultLimit` - `PrID` - `ProductCode` - `ProductName` - `PrSpecification` - `PrRetailPrice` - `Manufacturers` - `CiType` - `PrCostPrice` - `QualityPeriod` - `ImgPath` - `PrContent` ### Slot edit (machine-product linkage + prices) `POST /Selection/Edit` - `MachineID` - `SiCoilId` - `SiBarCode` - `SiPrice` - `SiCustomPrice` - `SiCapacity` - `SiExtantQuantity` - `WxDiscount` - `AliDiscount` - `IDcardDiscount` - `WarningQuantity` - `warmTime` - `SelectWarm` - `Ext` ### Multi-slot edit `POST /Selection/MultiEdit` - same as edit plus: - `StartGoods` - `EndGoods` ## Ads status - No dedicated ad CRUD page found yet in the captured PC pages. - We only have manual/spec evidence around `GoodsAdUrl` in the vendor integration doc. - Need separate recon pass for ad management surface or hidden workflow. ## Implication for implementation - Real product CRUD is feasible from PC UI endpoints. - Real machine-product assignment is not the fake local machine link model; it should map to slot management via `/Selection/*`. - Real ads CRUD is not confirmed yet. Must not fake it. If not found, hide/disable in next read-model pass.