|
|
1527d552d4
|
feat: 出库/借库记录记录并展示库位快照(DB加列+后端写入+记录页展示)
|
2026-09-04 11:42:44 +08:00 |
|
|
|
1b760f351e
|
fix: 出库/借库扫码查库存与 BOM 子件物料选择加行级公司隔离(超管/跨域不受限)
|
2026-09-04 09:40:00 +08:00 |
|
|
|
2c092c4c01
|
feat: MOM 出库联动 Track 标记已出库
- 发货出库时反查库存表 serial_number(Track 身份证),commit 后通知 Track mom-outbound
- notify_track 支持指定 webhook url(TRACK_OUTBOUND_WEBHOOK_URL)
|
2026-09-01 13:53:00 +08:00 |
|
|
|
39f3f8af45
|
feat(outbound): 审批单手动完结/作废功能
- 后端: outbound_service 新增 close_request 方法(状态 1-已通过 → 4-已完结)
- 后端: 新增 POST /api/v1/outbound/request/<id>/close 接口
- 模型: status_text 数组增加「已完结」
- 前端: create.vue 审批单选择区新增「强制完结此单」按钮
完结后刷新列表,该单从已通过下拉中移除
- 权限: 超级管理员/审批人/拥有 outbound_create:operation 的用户可完结(库管可操作)
|
2026-08-31 10:15:33 +08:00 |
|
|
|
05832e913b
|
fix: can_approve 增加 outbound_approval:operation RBAC 权限判断,前端按钮权限与后端审批权限统一对齐
|
2026-07-17 15:17:26 +08:00 |
|
|
|
2556b77530
|
perf: 系统级性能优化与并发安全修复
## 并发安全修复 (4处)
- scrap.py: 报废执行添加 SELECT FOR UPDATE 悲观锁,消除 TOCTOU 竞态
- stock.py (adjust_stock): 盘点调整添加 for_update=True 行锁
- outbound_service.py: 低库存预警 SMTP 调用移到 commit 之后,避免长事务
- trans_service.py: execute_dispatch 按 (source_table, id) 排序 items,消除死锁风险
## N+1 查询优化 (2处)
- inventory_task.py: _prefetch_inventory_map 单条 UNION ALL+GROUP BY 替代循环内逐条查询(N*4次→2次)
- stock.py (export_stocktake): get_borrowed_qty 批量 GROUP BY 替代逐条 TransBorrow 查询(~18000次→1次)
## BOM 列表性能重构
- bom_service.py: get_bom_list 单条 GROUP BY+string_agg+分页,消除 N+1 循环查询
- bom_service.py: 新增 get_bom_summary (轻量 GROUP BY category+COUNT)
- bom.py: 新增 /api/v1/bom/summary 路由,/list 支持 category 过滤
## Odoo 基础信息懒加载
- base_service.py: 新增 get_odoo_summary (GROUP BY category+COUNT)
- base.py: 新增 /api/v1/inbound/base/odoo-summary 路由
- buyOdoo.vue: 懒加载分组架构 (fetchOdooSummary + loadGroupItems)
- material_base.ts: 新增 getOdooSummary API
## 前端 Bug 修复
- BomManage.vue: 懒加载分组 (fetchBomSummary + loadGroupItems + collapse)
- BomManage.vue: 适配新 API 格式 (res.data.items 替代 res.data)
- buyOdoo.vue: 移除 "点击展开加载" 文字
- Selection.vue + borrow/apply/index.vue: openBomSelect 适配新 API 格式
|
2026-07-15 17:37:57 +08:00 |
|
|
|
9988d1b7eb
|
fix: 补全审计/出库审批/采购管理/借库审批的权限保护+公司隔离
- audit.py: 补@permission_required(system_audit)+import, 审计日志通过split_part关联用户表过滤公司
- outbound.py: 出库审批5个端点全补@permission_required(outbound_list)
- purchase.py: 采购管理7个端点全补@permission_required(inbound_buy)
- borrow_service: 借库审批列表通过applicant_id关联用户表过滤公司
- outbound_service: 出库审批列表通过applicant_id关联用户表过滤公司
- purchase_service: 采购列表通过base_id+requester_id双路过滤公司
- base_service/search_material: 去除debug日志
- decorators: 去除debug日志
|
2026-07-15 11:49:53 +08:00 |
|
|
|
e1417d740a
|
feat: 全模块公司隔离 + crossDomain权限码动态跨域控制
- get_current_company_filter: 新增_has_cross_domain_permission, 权限码替代硬编码
- 补全11个Service的get_current_company_filter调用(semi/product/service/outbound/bom/trans/scrap/summary)
- base/search修复: search_material此前无隔离, 已补全
- get_current_company_filter兜底: JWT缺company_name时返回__NO_COMPANY__防止放行
- permission.py: _get_operator_company补全返回值, 修复权限页保存逻辑
- 新增crossDomain迁移脚本, element_type=element挂system_mgmt下
|
2026-07-15 11:11:40 +08:00 |
|
|
|
5c0c1632c3
|
fix(审批邮件): items_json序列化Bug修复 + 邮件方法出库/借库物理隔离
|
2026-06-12 15:04:57 +08:00 |
|
|
|
48651ffd01
|
perf: 消除出库列表和还库操作的 N+1 查询,改用批量 IN + joinedload
|
2026-05-19 09:49:30 +08:00 |
|
|
|
3dae206828
|
feat(outbound): 完善出库审批邮件通知逻辑,支持申请人与审批人同时收到邮件(带物料明细),审批通过后申请人和库管均收到带物料明细的通知
|
2026-05-12 13:42:15 +08:00 |
|
|
|
c86da38a70
|
chore(pre-change): 准备修改出库审批邮件通知逻辑与自审批能力
|
2026-05-12 13:36:18 +08:00 |
|
|
|
259f3a7e0d
|
4.29扫码获取库位小工具接口
|
2026-04-29 15:40:43 +08:00 |
|
|
|
8276597a67
|
fix(email): 审批通知逻辑重构 - 通过时同时通知库管和申请人,驳回仅通知申请人;精简 DEBUG 日志
|
2026-04-29 09:10:34 +08:00 |
|
|
|
ccbce82c2e
|
fix(email): 审批通过后库管通知增加明细+DEBUG日志,修复MAIL_DEFAULT_SENDER格式问题
|
2026-04-28 16:46:12 +08:00 |
|
|
|
62c0e3738e
|
fix(outbound+trans): 修复POST接口错误数据清洗导致的sku/quantity字段被清除Bug,并新增出库审批工作流全链路
|
2026-04-28 16:02:34 +08:00 |
|
|
|
0a9c8cd39c
|
fix(repair): add edit action, mandatory validations, default date, and fix outbound SN mapping
|
2026-04-09 08:49:50 +08:00 |
|
|
|
09936cb045
|
fix(outbound): integrate TransRepair into global barcode scanning and outbound checkout flow
|
2026-04-09 08:38:48 +08:00 |
|
|
|
f612c47143
|
fix(filter): append 23:59:59 to end_date to resolve midnight truncation bug in date range queries
|
2026-04-07 17:39:14 +08:00 |
|
|
|
30ab1c186c
|
fix: filter zero quantity items in inventory export and add batch/sn traceability to outbound record details
|
2026-04-07 16:41:53 +08:00 |
|
|
|
c8810891d8
|
fix(api): globally replace invalid material_base/material_name attributes with correct base relationship
|
2026-03-26 17:14:26 +08:00 |
|
|
|
71e5f075d2
|
feat: implement composite debounced search with prepended select and wipe out duplicate root permission nodes
|
2026-03-20 10:26:45 +08:00 |
|
|
|
3bb3975022
|
fix: use .c to access SQLAlchemy subquery columns correctly
|
2026-03-20 10:15:11 +08:00 |
|
|
|
34629b432a
|
fix: correct SQLAlchemy join condition to resolve MaterialBase AttributeError
|
2026-03-20 10:06:22 +08:00 |
|
|
|
74089c7d7d
|
fix: clean orphaned permission tree nodes and enhance outbound search with material name/spec model
|
2026-03-20 09:53:32 +08:00 |
|
|
|
09a2af0b55
|
refactor: rename unit_price to pre_tax_unit_price in outbound service
Co-authored-by: aider (openai/DeepSeek-V3.2-Thinking) <aider@aider.chat>
|
2026-02-27 16:43:30 +08:00 |
|
|
|
b98f89bfe4
|
chore: add .material->.base refactor check comments
Co-authored-by: aider (openai/DeepSeek-V3.2-Thinking) <aider@aider.chat>
|
2026-02-10 11:34:50 +08:00 |
|
|
|
c1ddb8093f
|
出库进行修改,确保可以进行多个样例的出库以及出库的记录展示
|
2026-02-05 16:54:11 +08:00 |
|
|
|
4f90e02dcf
|
修改时间时区问题
|
2026-02-05 14:36:36 +08:00 |
|
|
|
f3b60dfc54
|
出库操作逻辑上面实现,成功跑通
|
2026-02-05 10:20:52 +08:00 |
|
|
|
797b611530
|
出库逻辑添加,扫码识别编码成功,后续对应逻辑没有完成
|
2026-02-04 17:22:20 +08:00 |
|