diff --git a/inventory-backend/app/models/base.py b/inventory-backend/app/models/base.py index 8607848..e96de80 100644 --- a/inventory-backend/app/models/base.py +++ b/inventory-backend/app/models/base.py @@ -14,11 +14,11 @@ class MaterialBase(db.Model): id = db.Column(db.Integer, primary_key=True) company_name = db.Column(db.String(255), comment='所属公司') - name = db.Column(db.String(255), nullable=False, comment='名称') + name = db.Column(db.String(255), nullable=False, index=True, comment='名称') # ★ 模糊搜索/精确定位高频列 common_name = db.Column(db.String(255), comment='俗名') - category = db.Column(db.String(100), comment='类别') - material_type = db.Column(db.String(100), comment='类型') - spec_model = db.Column(db.String(255), comment='规格型号') + category = db.Column(db.String(100), index=True, comment='类别') # ★ 分类统计/过滤高频列 + material_type = db.Column(db.String(100), index=True, comment='类型') # ★ 类型分组/过滤高频列 + spec_model = db.Column(db.String(255), index=True, comment='规格型号') # ★ 模糊搜索/精确匹配高频列 unit = db.Column(db.String(50), comment='计量单位') # 可见等级 diff --git a/inventory-backend/app/models/bom.py b/inventory-backend/app/models/bom.py index d61c5e8..74a1f02 100644 --- a/inventory-backend/app/models/bom.py +++ b/inventory-backend/app/models/bom.py @@ -5,11 +5,11 @@ class BomTable(db.Model): __tablename__ = 'bom_table' id = db.Column(db.Integer, primary_key=True) - parent_id = db.Column(db.Integer, db.ForeignKey('material_base.id'), nullable=False) - child_id = db.Column(db.Integer, db.ForeignKey('material_base.id'), nullable=False) + parent_id = db.Column(db.Integer, db.ForeignKey('material_base.id'), nullable=False, index=True) # ★ 父子件关联高频列 + child_id = db.Column(db.Integer, db.ForeignKey('material_base.id'), nullable=False, index=True) # ★ 子件过滤高频列 - bom_no = db.Column(db.String(100), nullable=False, comment='BOM编号') - version = db.Column(db.String(50), nullable=False, default='V1.0', comment='版本') + bom_no = db.Column(db.String(100), nullable=False, index=True, comment='BOM编号') # ★ Redis 缓存 Key + 列表查询核心列 + version = db.Column(db.String(50), nullable=False, default='V1.0', index=True, comment='版本') # ★ 配合 bom_no 做唯一性约束 dosage = db.Column(db.Numeric(19, 4), comment='个数') loss_rate = db.Column(db.Numeric(5, 2), comment='损耗率%', default=0, nullable=True) diff --git a/inventory-backend/app/models/inbound/buy.py b/inventory-backend/app/models/inbound/buy.py index 866a447..e323937 100644 --- a/inventory-backend/app/models/inbound/buy.py +++ b/inventory-backend/app/models/inbound/buy.py @@ -13,19 +13,19 @@ class StockBuy(db.Model): __tablename__ = 'stock_buy' id = db.Column(db.Integer, primary_key=True) - base_id = db.Column(db.Integer, db.ForeignKey('material_base.id'), nullable=False) + base_id = db.Column(db.Integer, db.ForeignKey('material_base.id'), nullable=False, index=True) # ★ 批量 IN 查询高频列 # 身份标识 - sku = db.Column(db.String(100)) + sku = db.Column(db.String(100), index=True) # ★ 条码/SKU 快速定位 in_date = db.Column(db.DateTime) - barcode = db.Column(db.String(100)) + barcode = db.Column(db.String(100), index=True) # ★ 条码扫码查询高频列 serial_number = db.Column(db.String(100)) batch_number = db.Column(db.String(100)) # 状态 - status = db.Column(db.String(50), default='在库') + status = db.Column(db.String(50), index=True) # ★ 在库/锁定 过滤条件 inspection_status = db.Column(db.String(50)) - warehouse_location = db.Column(db.String(100)) + warehouse_location = db.Column(db.String(100), index=True) # ★ 按库位分组/过滤 # 数量 in_quantity = db.Column(db.Numeric(19, 4), default=0) diff --git a/inventory-backend/app/models/inbound/product.py b/inventory-backend/app/models/inbound/product.py index d15cd24..bc77ee9 100644 --- a/inventory-backend/app/models/inbound/product.py +++ b/inventory-backend/app/models/inbound/product.py @@ -12,12 +12,12 @@ class StockProduct(db.Model): __tablename__ = 'stock_product' id = db.Column(db.Integer, primary_key=True) - base_id = db.Column(db.Integer, db.ForeignKey('material_base.id'), nullable=False) + base_id = db.Column(db.Integer, db.ForeignKey('material_base.id'), nullable=False, index=True) # ★ 批量 IN 查询高频列 # 身份标识 - sku = db.Column(db.String(100)) + sku = db.Column(db.String(100), index=True) # ★ SKU 快速定位 production_date = db.Column(db.DateTime) - barcode = db.Column(db.String(100)) + barcode = db.Column(db.String(100), index=True) # ★ 条码扫码查询高频列 serial_number = db.Column(db.String(100)) # 数量 @@ -26,8 +26,8 @@ class StockProduct(db.Model): available_quantity = db.Column(db.Numeric(19, 4), default=0) # 状态与位置 - status = db.Column(db.String(50)) - warehouse_location = db.Column(db.String(100)) + status = db.Column(db.String(50), index=True) # ★ 在库/锁定 过滤条件 + warehouse_location = db.Column(db.String(100), index=True) # ★ 按库位分组/过滤 # 生产与成本 bom_code = db.Column('bom_id', db.String(100)) diff --git a/inventory-backend/app/models/inbound/semi.py b/inventory-backend/app/models/inbound/semi.py index 92794a9..c1942dd 100644 --- a/inventory-backend/app/models/inbound/semi.py +++ b/inventory-backend/app/models/inbound/semi.py @@ -11,11 +11,11 @@ class StockSemi(db.Model): __tablename__ = 'stock_semi' id = db.Column(db.Integer, primary_key=True) - base_id = db.Column(db.Integer, db.ForeignKey('material_base.id'), nullable=False) + base_id = db.Column(db.Integer, db.ForeignKey('material_base.id'), nullable=False, index=True) # ★ 批量 IN 查询高频列 - sku = db.Column(db.String(100)) + sku = db.Column(db.String(100), index=True) # ★ SKU 快速定位 production_date = db.Column(db.DateTime) - barcode = db.Column(db.String(100)) + barcode = db.Column(db.String(100), index=True) # ★ 条码扫码查询高频列 serial_number = db.Column(db.String(100)) batch_number = db.Column(db.String(100)) @@ -25,8 +25,8 @@ class StockSemi(db.Model): available_quantity = db.Column(db.Numeric(19, 4), default=0) # 状态与位置 - status = db.Column(db.String(50)) - warehouse_location = db.Column(db.String(100)) + status = db.Column(db.String(50), index=True) # ★ 在库/锁定 过滤条件 + warehouse_location = db.Column(db.String(100), index=True) # ★ 按库位分组/过滤 # 半成品特有字段 bom_code = db.Column('bom_id', db.String(100))