diff --git a/inventory-backend/app/api/v1/inbound/base.py b/inventory-backend/app/api/v1/inbound/base.py index 6f9a5d5..7a0107e 100644 --- a/inventory-backend/app/api/v1/inbound/base.py +++ b/inventory-backend/app/api/v1/inbound/base.py @@ -276,6 +276,9 @@ def create(): # 会被 _expand_operation_perms 前缀桥接放大给 material_list:operation。 'productImageRemark': 'material_list:remark_edit', 'manualLinkRemark': 'material_list:remark_edit', + # 采购链接:与读过滤 field_permissions.py 用**同一个码**, + # 避免「写用一个码、读用另一个码」再次造成读写错位。 + 'purchaseLink': 'material_list:purchaseLink', 'referencePrice': 'material_list:referencePrice', 'isEnabled': 'material_list:isEnabled' } @@ -343,6 +346,9 @@ def update(id): # 会被 _expand_operation_perms 前缀桥接放大给 material_list:operation。 'productImageRemark': 'material_list:remark_edit', 'manualLinkRemark': 'material_list:remark_edit', + # 采购链接:与读过滤 field_permissions.py 用**同一个码**, + # 避免「写用一个码、读用另一个码」再次造成读写错位。 + 'purchaseLink': 'material_list:purchaseLink', 'referencePrice': 'material_list:referencePrice', 'isEnabled': 'material_list:isEnabled' } diff --git a/inventory-backend/app/models/base.py b/inventory-backend/app/models/base.py index 9456015..7e79ff9 100644 --- a/inventory-backend/app/models/base.py +++ b/inventory-backend/app/models/base.py @@ -33,6 +33,10 @@ class MaterialBase(db.Model): product_image_remark = db.Column(db.Text, default='', comment='产品图备注') manual_link_remark = db.Column(db.Text, default='', comment='说明书备注') + # 采购链接:补货时直接跳转的购买地址(淘宝 / 1688 等)。 + # ★ 用 Text 而非 String(N):外链常带很长的查询串,截断后会得到打不开的地址。 + purchase_link = db.Column(db.Text, default='', comment='采购链接') + # 启用状态 is_enabled = db.Column(db.Boolean, default=True, index=True, comment='是否启用') # ★ 状态过滤高频列 @@ -98,6 +102,7 @@ class MaterialBase(db.Model): 'generalImage': parse_list(self.product_image), 'productImageRemark': self.product_image_remark or '', 'manualLinkRemark': self.manual_link_remark or '', + 'purchaseLink': self.purchase_link or '', # 【核心修改】:直接返回布尔值,不再转成 1 或 0 'isEnabled': bool(self.is_enabled), # 强制质检标记 diff --git a/inventory-backend/app/services/inbound/base_service.py b/inventory-backend/app/services/inbound/base_service.py index a4a8e79..c03eeb9 100644 --- a/inventory-backend/app/services/inbound/base_service.py +++ b/inventory-backend/app/services/inbound/base_service.py @@ -622,6 +622,7 @@ class MaterialBaseService: product_image=json.dumps(data.get('generalImage', [])), product_image_remark=data.get('productImageRemark', ''), manual_link_remark=data.get('manualLinkRemark', ''), + purchase_link=data.get('purchaseLink', ''), reference_price=data.get('referencePrice'), is_enabled=is_enabled_val ) @@ -668,6 +669,7 @@ class MaterialBaseService: if 'productImageRemark' in data: material.product_image_remark = data['productImageRemark'] if 'manualLinkRemark' in data: material.manual_link_remark = data['manualLinkRemark'] + if 'purchaseLink' in data: material.purchase_link = data['purchaseLink'] if 'generalManual' in data: material.manual_link = json.dumps(data['generalManual']) diff --git a/inventory-backend/app/utils/field_permissions.py b/inventory-backend/app/utils/field_permissions.py index 7cf3312..86ad289 100644 --- a/inventory-backend/app/utils/field_permissions.py +++ b/inventory-backend/app/utils/field_permissions.py @@ -18,6 +18,9 @@ STOCK_FIELD_RBAC_MAPPING = { "generalImage": "material_list:files", "generalManual": "material_list:files", "productImageRemark": "material_list:productImageRemark", "manualLinkRemark": "material_list:manualLinkRemark", + # 采购链接:读写**共用同一个码**(与 referencePrice 同模式)—— + # 从根上避免「写用了 A 码、读用了 B 码」导致的口径错位。 + "purchaseLink": "material_list:purchaseLink", "referencePrice": "material_list:referencePrice", "inventoryCount": "material_list:inventoryCount", "availableCount": "material_list:availableCount",