|
|
de47d27cfb
|
fix(backend): _recalc_product_location 修复 func.or_() → or_()
func 是 SQL 函数调用(如 func.now()),不能替代 WHERE 条件中的 or_ 运算符。
这会导致结束协助分支时 SQL 抛错 500。
|
2026-08-11 10:05:13 +08:00 |
|
|
|
718e205f53
|
feat(backend): 完工转交智能父节点继承算法
- complete_task: MAIN转交保持平级(parent_task_id),SPAWN转交认当前为父(task.id)
- 基因严格继承: task_type不会篡位成MAIN
|
2026-08-11 10:02:01 +08:00 |
|
|
|
1fe9c3d59d
|
feat: 留言板 API + 零信任安全:后端 Token 鉴权强制覆写 operator_id
- 新增 GET/POST /products/{id}/messages 端点
- POST 创建留言时注入 current_user = Depends(get_current_user)
- operator_id 优先取 Token 中的 username,防止前端越权伪造发言身份
- 同时将 product.current_location_id 显示改为 formatUserName 映射
|
2026-08-10 17:37:10 +08:00 |
|
|
|
b14773f81b
|
feat: 产品协同留言板 — ProductMessage 模型 + API + 迁移
- 新增 ProductMessage 模型,挂载在 products.id(ON DELETE CASCADE)
- GET/POST /products/{id}/messages 接口
- 注册到 Alembic 自动发现
|
2026-08-10 17:37:01 +08:00 |
|
|
|
e326f8d311
|
fix: 修复任务完工/结束 500 + 后端基因继承
- 移除 task.child_tasks 的 ORM 属性直接赋值(导致 SQLAlchemy 状态机崩溃)
- complete_task 创建 next_task 时补上 task_type=task.task_type 基因继承
|
2026-08-10 17:36:54 +08:00 |
|
|
|
2440e9bdaa
|
fix: 修复产品删除 500 — ImportError + FK 自引用约束
- 修正 TaskLog 导入路径:app.models.task → app.models.task_log
- 删除任务前先切断 parent_task_id 自引用外键
- 删除产品前先切断 parent_product_id 自引用外键
- 真正执行 delete(TaskRecord) 和 delete(TaskLog) 替代空 select
|
2026-08-10 17:36:48 +08:00 |
|
|
|
34724e478c
|
fix: SQL语法错误—func.and_()/or_()改为sqlalchemy.and_()/or_()
|
2026-08-10 11:41:10 +08:00 |
|
|
|
e447de6cfa
|
feat: 当前位置100%动态主干化—与宏观状态同源,只跟主分支,静态字段仅兜底
|
2026-08-10 11:32:07 +08:00 |
|
|
|
b43bded0ef
|
feat: 宏观状态动态从主干任务获取+任务树assignee中文姓名映射(后端+前端)
|
2026-08-10 11:25:44 +08:00 |
|
|
|
60af3b9998
|
feat: 物料选择全量展示(移除成品/半成品限制)
|
2026-08-10 11:02:22 +08:00 |
|
|
|
2880ea6df7
|
fix: Grid回退grid-cols-12精确对齐+分组标题按device/order切换+宏观状态receive/transfer只主线
|
2026-08-10 10:58:33 +08:00 |
|
|
|
4854eb626e
|
feat: 宏观状态只同步主线+删除5s倒计时+序列号确认+分组切换(订单/设备)+序列号列
|
2026-08-10 10:37:56 +08:00 |
|
|
|
ad9fb8d37e
|
refactor: 位置回溯极简—只跟主干任务(WIP>PENDING>COMPLETED),无视协助分支
|
2026-08-09 18:49:59 +08:00 |
|
|
|
45b5376537
|
fix: 三致命Bug—macro_status预计算+排除已完工脏读+flush落盘+递归深度限制10
|
2026-08-09 18:23:55 +08:00 |
|
|
|
f33396b9f1
|
fix: 位置回溯父任务优先 + Tab筛选改为本地calcProductStatus过滤
|
2026-08-09 18:10:13 +08:00 |
|
|
|
3c4c16a1cc
|
fix: 四Bug—权限互斥+中文姓名+记录弹窗+后端位置回溯(含RecordsModal)
|
2026-08-09 17:55:40 +08:00 |
|
|
|
65ff05fb2f
|
feat: 状态渲染修复+中文姓名映射+SUPERVISOR/SUPER_ADMIN权限控制(前端+后端)
|
2026-08-07 17:26:14 +08:00 |
|
|
|
beea543fbd
|
fix: 创建产品时自动将当前位置设为当前登录用户(谁创建谁持有)
|
2026-08-07 15:42:10 +08:00 |
|
|
|
bc43b5a732
|
feat: 产品管理 — 当前位置显示真实姓名 + 编辑弹窗 + 删除确认
|
2026-08-07 15:38:01 +08:00 |
|
|
|
0de981ea81
|
fix: OTA检测闭环 — 新增GET /check-update + App端uni.getSystemInfoSync版本对比
|
2026-08-07 12:35:00 +08:00 |
|
|
|
bff8787e62
|
feat: OTA热更新 — 版本检测API + App端WGT下载安装 + app_versions表
|
2026-08-07 11:49:59 +08:00 |
|
|
|
b71c5a2d07
|
feat: 双Token认证(Access 2h/Refresh 7d) + 通知系统(转交/驳回自动推送)
|
2026-08-07 11:44:04 +08:00 |
|
|
|
6a79e21302
|
闭环修复: transfer/spawn/receive补TaskRecord + reject加task_type + branchLabel只对SPAWN编号
|
2026-08-06 13:14:26 +08:00 |
|
|
|
0d323e8181
|
血缘锚定法: task_type字段+迁移+三大接口写入+TreeCanvas基于task_type布局
|
2026-08-06 13:03:25 +08:00 |
|
|
|
e5e2a395e7
|
撤回链式接力: CANCELED后生成WIP子任务还给操作人+TreeCanvas CANCELED视为串行换行
|
2026-08-06 12:53:23 +08:00 |
|
|
|
616638a6c8
|
撤回改为CANCELED状态标记+TaskRecord留痕+TreeCanvas灰度渲染+全部状态映射更新
|
2026-08-06 12:51:40 +08:00 |
|
|
|
eb97c12bed
|
修复撤回: 移除parent_task_id空校验+兼容无父任务场景(仅删除)
|
2026-08-06 12:39:47 +08:00 |
|
|
|
58cb9a23ef
|
修复撤回: transfer新任务parent_task_id=task.id(溯源链) + canRecall放宽(兼容旧数据)
|
2026-08-06 12:38:26 +08:00 |
|
|
|
67755c7847
|
修复撤回500: 先删task_logs+task_records再删task,加delete import
|
2026-08-06 11:41:45 +08:00 |
|
|
|
57884d7baa
|
撤回转交: recall接口删除子任务恢复父WIP + 前端canRecall判断 + 红色撤回按钮
|
2026-08-06 11:39:22 +08:00 |
|
|
|
b2cfa3871e
|
取消转交的协助分支阻塞: transfer_task移除_check_children_done,仅end_task保留
|
2026-08-06 11:29:58 +08:00 |
|
|
|
ef9e5bbae5
|
修复get_all_tasks: 改用_to_flat_response(不递归children)彻底消除MissingGreenlet
|
2026-08-06 11:19:19 +08:00 |
|
|
|
9846dd6c8f
|
修复: MissingGreenlet_product访问try/catch + spawn_subtask不再覆盖overall_status
|
2026-08-06 11:16:07 +08:00 |
|
|
|
999f8c2f3e
|
IRIS过滤容错: 后端SQL失败时降级全量+前端严格过滤department===IRIS
|
2026-08-06 10:08:18 +08:00 |
|
|
|
eccf79b8d1
|
IRIS部门过滤: 后端users接口按department=IRIS过滤 + 前端双重兜底
|
2026-08-06 10:07:47 +08:00 |
|
|
|
e183ea5583
|
工业级重构: 用户Grid选择+工序由接收人定+隐藏结束按钮(次分支卡片内结束)+蓝图网格背景
|
2026-08-06 09:52:21 +08:00 |
|
|
|
eb52e2fd48
|
修复: create_task同步current_location_id到接收人 + receive_task兜底同步产品位置
|
2026-08-06 09:12:07 +08:00 |
|
|
|
f3fb000bda
|
产品宏观状态自动同步: create_task/transfer_task/spawn_subtask均更新overall_status
|
2026-08-06 09:06:07 +08:00 |
|
|
|
f665cf7e24
|
紧急修复: transfer中real_assignees→real_branches变量名 + SpawnRequest BaseModel导入
|
2026-08-05 18:16:07 +08:00 |
|
|
|
b547844dca
|
并发模型: spawn派发协助分支 + 转交简化为单线 + 子分支未完成拦截(409)
|
2026-08-05 18:01:14 +08:00 |
|
|
|
d9f4e7e66e
|
紧急修复: product_service._task_to_response补remark — 扫码详情页remark=null的根因
|
2026-08-05 17:41:09 +08:00 |
|
|
|
21aa608db3
|
工艺节点树: 新增结束分支(终止)接口 + 前端🏁结束分支按钮 + WIP可无下游完结
|
2026-08-05 16:37:05 +08:00 |
|
|
|
e2d9590c48
|
修复remark丢失(_to_response漏字段) + UI重构swiper专注卡片看板
|
2026-08-05 16:35:14 +08:00 |
|
|
|
4ee3cb7552
|
紧急修复: get_all_tasks移除parent_task_id过滤 — 子任务也能出现在我的任务列表
|
2026-08-05 16:30:45 +08:00 |
|
|
|
9978714d40
|
紧急修复: receive_task语法错误 — raise HTTPException括号未闭合导致后端启动失败
|
2026-08-05 16:25:34 +08:00 |
|
|
|
71e8eeb7e8
|
权限: receive/reject校验assignee_id匹配 + 前端myActiveTask只显示本人任务 + 403处理
|
2026-08-05 16:21:27 +08:00 |
|
|
|
62422e7558
|
全栈: 接收任务写入remark — 后端receive接口+Body参数+前端接收弹窗备注输入
|
2026-08-05 16:16:35 +08:00 |
|
|
|
353633f061
|
修复: 409错误提示可见 + PENDING状态拦截(必须先接收) + request.js显示409详情
|
2026-08-05 16:10:45 +08:00 |
|
|
|
4f14a40bd9
|
修复: 驳回返工任务追溯上一环转交人 — parent.assignee → TaskLog.operator_id 三层兜底
|
2026-08-05 16:03:33 +08:00 |
|
|
|
7810097b39
|
全栈修复: remark字段全链路打通 — TaskCreate+TransferRequest+transfer_task+前端Payload
|
2026-08-05 15:59:20 +08:00 |
|