|
|
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 |
|
|
|
f736cf0c13
|
修复: TaskResponse补remark字段 + 记录按时间降序取最新一条(latestRecord)
|
2026-08-05 15:37:10 +08:00 |
|
|
|
22f7bb2f79
|
全栈: Task模型+remark字段 + 前端任务卡片初始说明展示区
|
2026-08-05 15:22:50 +08:00 |
|
|
|
d04085fc38
|
feat(frontend): 认证体系 + 类型定义 + API 服务层
认证:
- AuthContext + useAuth (JWT token 持久化, 登录/登出)
- AdminLoginPage (登录表单, 对接 POST /auth/login)
- axios 拦截器自动注入 Authorization header
- 401 自动清除 token 并跳转登录页
类型:
- api.ts: TASK_STATUS 常量, TaskResponse/ProductScanResponse 扩展字段
- admin.ts: ProductResponse 扩展 + MaterialOption/BomItem
API 服务:
- authApi: login() + getMe()
- materialApi: fetchMaterialGroups() + fetchMaterialItems()
- printApi: getLabelPreview() + executePrint() + getPrinterConfig()
- antd 6.5.3 依赖
字体: simhei.ttf (标签打印用)
|
2026-08-05 14:01:08 +08:00 |
|
|
|
1fed716829
|
feat(services): 核心业务逻辑 — 接收/返工/裂变/记录/标签打印
task_service:
- receive_task() — PENDING→WIP, 记录 received_at
- reject_task() — →REJECTED + 自动返工闭环
- transfer_task() — →COMPLETED + 多路裂变 + virtual_warehouse入库
- add_task_record() — 图文记录追加
- 全链路 selectinload(Task.records)
- 全部 now 改用 get_beijing_time()
product_service:
- create_product() — PG Sequence 自动生成16位HEX
- update_overall_status() — 宏观状态校验+更新
- 扫码返回完整 task_tree (含 records)
- order_no 自由文本→自动创建 ProductionOrder
- update_product() 支持 order_no 编辑
label_service:
- 480×360 工业级排版 (QR+名/规/单+底部通栏码)
- simhei.ttf 34px/28px + stroke_width 描边
- TSPL Socket 发送到打标机
|
2026-08-05 14:00:55 +08:00 |
|
|
|
79583cf8f4
|
feat(api): 核心端点 — 接收/驳回/转交/打印/上传/用户/物料/记录CRUD
新增端点:
- POST /tasks/{id}/receive — 确认接收 (PENDING→WIP)
- POST /tasks/{id}/reject — 品质驳回 + 自动返工
- POST /tasks/{id}/transfer — 完工裂变转交 (多路分支+入库)
- PATCH /tasks/{id}/records — 追加图文记录
- PATCH /products/scan/{sn}/status — 宏观状态定调
- POST /upload/ + GET /upload/files/{name} — 文件上传
- GET /users/ — MOM用户列表
- GET /materials/groups + /materials/items — BOM物料手风琴
- POST /print/preview + /execute — 标签预览/打印
- PUT/DELETE /records/{id} — 记录编辑/删除
- GET /tasks/ 新增 assignee_id 过滤
|
2026-08-05 14:00:43 +08:00 |
|
|
|
f9e10a7dd1
|
feat(schemas): 扩充 Task/Product Pydantic Schema
Task Schema:
- TaskResponse 新增 is_rework, reject_reason, received_at, completed_at, records, product_sn
- 新增 TaskRejectRequest, TaskTransferRequest, TaskRecordCreate, TaskRecordResponse
- TaskRecordResponse 含 json.loads 反序列化 images
Product Schema:
- ProductResponse/ProductScanResponse 新增 external_serial, current_location_id, overall_status
- ProductScanResponse 新增 task_tree (递归任务树)
- ProductCreate 改为 material_id/material_name/spec_model + external_serial + order_no 自由文本
- ProductUpdate 新增 order_no
|
2026-08-05 14:00:32 +08:00 |
|
|
|
e0c01a562f
|
feat(models): Task/Product 模型扩充 + 4个Alembic迁移
Task 模型:
- 新增 received_at, completed_at, reject_reason, is_rework
- 新增 TaskRecord 模型 (remark + images JSON)
- 状态常量 PENDING/WIP/COMPLETED/REJECTED/ARCHIVED
- 全部时间字段改用北京时间 (get_beijing_time)
Product 模型:
- order_id → 可选; 新增 external_serial, current_location_id
- 新增 material_name/spec_model/category/material_type 快照字段
- 新增 overall_status (备货/生产/测试/维修/在库)
迁移:
- b2c3: HEX计数器Sequence + external_serial + order_id nullable
- c3d4: material快照4列
- d4e5: overall_status
- e5f6: task_records表
|
2026-08-05 14:00:23 +08:00 |
|