|
|
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 |
|
|
|
82f474f71f
|
chore: 基础设施 — 阿里云源、北京时间、HEX计数器、打印机配置
|
2026-08-05 14:00:13 +08:00 |
|
|
|
b22de514a1
|
feat: 实现后端核心业务逻辑 (Auth鉴权、二维码服务、看板与产品端点)
|
2026-08-04 17:09:47 +08:00 |
|
|
|
2b967afbf6
|
chore: 更新后端依赖,初始化数据库迁移与 MOM 外部系统连接
|
2026-08-04 17:09:33 +08:00 |
|
|
|
e0bd1ad44e
|
chore: 完善全栈 Docker 开发环境与容器基础设施
|
2026-08-04 17:09:30 +08:00 |
|
|
|
9ec4f8efa7
|
feat(api): 新增核心 API 端点 + 数据库迁移
新增 3 个 API 端点:
- POST /tasks/{id}/receive: 确认接收 (PENDING→WIP)
- POST /tasks/{id}/reject: 品质驳回 + 返工闭环
- POST /tasks/{id}/transfer: 完工裂变转交 (多路分支+入库)
数据库迁移 (a1b2c3d4e5f6):
- tasks 表新增 received_at, completed_at, reject_reason, is_rework
- products 表新增 current_location_id
- 数据迁移: 已有任务状态小写→大写 (pending→PENDING 等)
|
2026-08-04 17:03:43 +08:00 |
|
|
|
8028be58c4
|
feat(services): 重写核心业务逻辑 — 接收/驳回返工/裂变转交
task_service 新增 3 个核心业务函数:
- receive_task(): PENDING→WIP, 记录 received_at, 仅 PENDING 状态可接收
- reject_task(): →REJECTED, 记录 reject_reason+completed_at,
防呆闭环: 自动查找父任务负责人, 创建 is_rework=True 的返工任务
- transfer_task(): →COMPLETED, 记录 completed_at,
裂变转交: 遍历 next_assignees 批量创建 PENDING 任务,
多路裂变(>1)时子任务挂载形成树状分支,
virtual_warehouse 入库逻辑更新 Product.current_location_id
- complete_task(): 保留兼容, 同步使用新状态常量 TASK_STATUS_*
product_service 重构:
- get_product_by_serial(): 新增 task_tree 返回完整递归任务树
- _load_task_tree(): 递归加载产品关联的所有任务嵌套关系
|
2026-08-04 17:03:37 +08:00 |
|
|
|
cb97d390ad
|
feat(schemas): 更新 Pydantic Schema,新增请求/响应模型
Task Schema 更新:
- TaskResponse/TaskSummaryResponse 新增 is_rework, reject_reason, received_at, completed_at 字段
- 新增 TaskRejectRequest (品质驳回请求, reason 必填)
- 新增 TaskTransferRequest (裂变转交请求, next_assignees + next_task_name 必填)
- 新增 TaskTransferResponse (裂变转交响应)
- TaskCreate 新增 is_rework 字段
Product Schema 更新:
- ProductResponse/ProductScanResponse 新增 current_location_id 字段
- ProductScanResponse 新增 task_tree 字段 (递归任务树,供十字矩阵树状图)
|
2026-08-04 17:03:29 +08:00 |
|
|
|
817be6b036
|
feat(models): 扩充 Task 和 Product 数据库模型
Task 模型新增:
- received_at: DateTime (操作员确认接收时间)
- completed_at: DateTime (任务完工转交时间)
- reject_reason: String(500) (驳回原因)
- is_rework: Boolean (是否为返工任务,默认 False)
- 状态常量: PENDING/WIP/COMPLETED/REJECTED/ARCHIVED
- 默认状态由 'pending' 升为大写 'PENDING'
Product 模型新增:
- current_location_id: String(64) (当前持有者ID 或 'virtual_warehouse')
|
2026-08-04 17:03:23 +08:00 |
|
|
|
895fed6ac3
|
chore: 添加 .gitignore 并移除敏感/缓存文件
- 添加 .gitignore (Python __pycache__, .env, .idea, node_modules 等)
- 从追踪中移除 backend/.env, frontend/.env (密钥文件)
- 从追踪中移除 __pycache__/ 目录 (编译缓存)
- 从追踪中移除 .idea/ (IDE 配置)
|
2026-08-04 17:03:17 +08:00 |
|
|
|
17105dc9c2
|
初始提交:项目基础结构
- backend: FastAPI 后端服务 (Python)
- frontend: React + Tauri 前端应用
- docker-compose.yml: 容器编排配置
|
2026-08-04 10:05:59 +08:00 |
|