Commit Graph

  • d3d501dfeb fix: 产品管理页响应式Grid + 丰富卡片信息(物料/规格/位置/状态) duxingchen 2026-08-07 15:14:11 +08:00
  • 1b4af0a7af fix: 全端隐藏用户角色标签(SUPER_ADMIN/操作员等) duxingchen 2026-08-07 14:53:46 +08:00
  • 9ed85f88bb feat: 切换公网域名 track.iris-rs.cn + track_back.iris-rs.cn duxingchen 2026-08-07 14:45:30 +08:00
  • 472d4ad67a fix: 登录页版本号改为动态读取(WGT热更新后自动变) duxingchen 2026-08-07 14:06:10 +08:00
  • 45102eb23f fix: WGT安装强制模式(force:true)绕过同版本号拦截 duxingchen 2026-08-07 13:55:24 +08:00
  • 3e8ccf3444 chore: 生产环境新增WGT升级包volumes映射 duxingchen 2026-08-07 13:49:55 +08:00
  • 6382aa6d45 feat: Web端关于弹窗 + 帮助反馈Toast + 版本号T1.0.3 duxingchen 2026-08-07 13:49:06 +08:00
  • 355f1bae66 feat: 关于弹窗 + 帮助反馈Toast + 动态版本号(WGT热更新后自动变化) duxingchen 2026-08-07 13:41:55 +08:00
  • abbf0f5a24 chore: bump version to T1.0.2 (versionCode 102) duxingchen 2026-08-07 13:22:10 +08:00
  • a72c8c89e3 fix: 移除模块级detectEnv()避免启动时网络探测失败 duxingchen 2026-08-07 13:19:11 +08:00
  • 0e5b2e42e9 chore: 同步HBuilderX生成的main.js(Vue2/Vue3兼容) duxingchen 2026-08-07 13:09:19 +08:00
  • 0de981ea81 fix: OTA检测闭环 — 新增GET /check-update + App端uni.getSystemInfoSync版本对比 duxingchen 2026-08-07 12:35:00 +08:00
  • 43baa1de8e feat: 移动端流转卡片组件 + 静态资源 duxingchen 2026-08-07 11:53:40 +08:00
  • 41dfc53f83 chore: Docker生产部署配置 + 部署脚本 duxingchen 2026-08-07 11:53:40 +08:00
  • bff8787e62 feat: OTA热更新 — 版本检测API + App端WGT下载安装 + app_versions表 duxingchen 2026-08-07 11:49:59 +08:00
  • 0df7215134 feat: 移动端双Token队列拦截器 + 通知列表 + 登录页 + TabBar红点 + v1.0.1 duxingchen 2026-08-07 11:44:20 +08:00
  • 721cfe1504 feat: Web端401队列拦截器 + 消息/任务/个人中心重写 + TabBar红点 + Admin页面完善 duxingchen 2026-08-07 11:44:12 +08:00
  • b71c5a2d07 feat: 双Token认证(Access 2h/Refresh 7d) + 通知系统(转交/驳回自动推送) duxingchen 2026-08-07 11:44:04 +08:00
  • dc97a7385f perf(frontend): Context value useMemo 稳定化 duxingchen 2026-08-06 17:34:05 +08:00
  • b725599cb0 perf(frontend): Vite 构建分包 — manualChunks 拆分 vendor duxingchen 2026-08-06 17:34:00 +08:00
  • 3d164159ac perf(frontend): 递归组件 Memo 优化 — React.memo + useMemo duxingchen 2026-08-06 17:33:54 +08:00
  • 9d204a57d8 perf(frontend): 路由级代码分割 — React.lazy + Suspense duxingchen 2026-08-06 17:33:48 +08:00
  • 6a79e21302 闭环修复: transfer/spawn/receive补TaskRecord + reject加task_type + branchLabel只对SPAWN编号 master duxingchen 2026-08-06 13:14:26 +08:00
  • 661e77416a 三雷修复: canRecall父节点校验+task_type判定主干排序/标签+确认无db.delete duxingchen 2026-08-06 13:09:10 +08:00
  • 0d323e8181 血缘锚定法: task_type字段+迁移+三大接口写入+TreeCanvas基于task_type布局 duxingchen 2026-08-06 13:03:25 +08:00
  • e5e2a395e7 撤回链式接力: CANCELED后生成WIP子任务还给操作人+TreeCanvas CANCELED视为串行换行 duxingchen 2026-08-06 12:53:23 +08:00
  • 616638a6c8 撤回改为CANCELED状态标记+TaskRecord留痕+TreeCanvas灰度渲染+全部状态映射更新 duxingchen 2026-08-06 12:51:40 +08:00
  • eb97c12bed 修复撤回: 移除parent_task_id空校验+兼容无父任务场景(仅删除) duxingchen 2026-08-06 12:39:47 +08:00
  • 58cb9a23ef 修复撤回: transfer新任务parent_task_id=task.id(溯源链) + canRecall放宽(兼容旧数据) duxingchen 2026-08-06 12:38:26 +08:00
  • 0287003e93 canRecall加固: PENDING+非接收人+父任务负责人匹配→显示撤回转交 duxingchen 2026-08-06 12:08:23 +08:00
  • df42250725 排序铁律: 主分支强制置顶(parent_task_id为空优先)+子分支按created_at正序 duxingchen 2026-08-06 12:06:38 +08:00
  • 7c7b72cadd 我的任务列表加分支标签: 主分支(蓝)/协助分支(紫) — parent_task_id判血缘 duxingchen 2026-08-06 11:53:40 +08:00
  • aad26b3d9e 2D布局回退状态判定: 父WIP→并行同Y / 父COMPLETED→串行换行(后端已限制COMPLETED后不可spawn) duxingchen 2026-08-06 11:50:10 +08:00
  • c92e7bd931 修复2D布局: 时间戳判定串行/并行 — created_at>parent.completed_at才是串行,否则并行同Y duxingchen 2026-08-06 11:45:56 +08:00
  • 8f0f725e26 修复WBS编码: 分支1→分支1.1层级正确(prefix空字符串处理) duxingchen 2026-08-06 11:42:52 +08:00
  • 67755c7847 修复撤回500: 先删task_logs+task_records再删task,加delete import duxingchen 2026-08-06 11:41:45 +08:00
  • 57884d7baa 撤回转交: recall接口删除子任务恢复父WIP + 前端canRecall判断 + 红色撤回按钮 duxingchen 2026-08-06 11:39:22 +08:00
  • 8be06bcd43 权限隔离+2D蓝图修复: isAssignee按钮显隐+只读提示+分支标签(badge-main/sub)+并行同Y确认 duxingchen 2026-08-06 11:36:06 +08:00
  • b2cfa3871e 取消转交的协助分支阻塞: transfer_task移除_check_children_done,仅end_task保留 duxingchen 2026-08-06 11:29:58 +08:00
  • e5bcde667b 转交弹窗互斥+备注必填: 选人清入库/选库清人 + textarea必填校验 duxingchen 2026-08-06 11:23:31 +08:00
  • ef9e5bbae5 修复get_all_tasks: 改用_to_flat_response(不递归children)彻底消除MissingGreenlet duxingchen 2026-08-06 11:19:19 +08:00
  • 9846dd6c8f 修复: MissingGreenlet_product访问try/catch + spawn_subtask不再覆盖overall_status duxingchen 2026-08-06 11:16:07 +08:00
  • 3176bcde6f 标签float环绕布局: QR左浮+文字自然折行+clear:both防序列号乱入 duxingchen 2026-08-06 11:04:03 +08:00
  • 49c8707955 标签防御: height:fit-content+maxHeight物理切断+12px小字号防重叠 duxingchen 2026-08-06 11:02:16 +08:00
  • 5f7b8e9394 标签预览彻底改为内联样式Flex: QR锁110px+line-clamp截断+无class依赖防重叠 duxingchen 2026-08-06 10:56:29 +08:00
  • 1ba44d4b0a 打印所见即所得: iframe克隆DOM+全局样式+静默打印 duxingchen 2026-08-06 10:52:29 +08:00
  • 81e41bc38b 标签预览重构: 固定QR120px+Flex分栏+line-clamp3截断+CSS类名化 duxingchen 2026-08-06 10:51:28 +08:00
  • f4ff4b5ecb 标签打印防御性布局: Flex分栏+line-clamp截断+分割线+预览同款 duxingchen 2026-08-06 10:44:22 +08:00
  • bdc861cf8e Web端创建产品成功弹窗: 打开二维码→直接打印标签(window.print+隐式窗口) duxingchen 2026-08-06 10:37:08 +08:00
  • bcf1038f8a 修复: 删除2D连线+spawn确认parent_task_id已正确+WBS算法重写(递归前缀) duxingchen 2026-08-06 10:28:21 +08:00
  • 11f9f64dc6 并发协作重构: focusTasks全视野+WBS分支编码+TreeCanvas并发同层布局(串行Y+1/并行同Y) duxingchen 2026-08-06 10:21:15 +08:00
  • ff3de80c96 派发协助备注改为必填(textarea+disabled校验) duxingchen 2026-08-06 10:08:56 +08:00
  • 999f8c2f3e IRIS过滤容错: 后端SQL失败时降级全量+前端严格过滤department===IRIS duxingchen 2026-08-06 10:08:18 +08:00
  • eccf79b8d1 IRIS部门过滤: 后端users接口按department=IRIS过滤 + 前端双重兜底 duxingchen 2026-08-06 10:07:47 +08:00
  • da8db95141 UI升级: Footer图标上文字下防截断 + TreeCanvas全屏翻页大卡片(320x460) duxingchen 2026-08-06 10:02:50 +08:00
  • e183ea5583 工业级重构: 用户Grid选择+工序由接收人定+隐藏结束按钮(次分支卡片内结束)+蓝图网格背景 duxingchen 2026-08-06 09:52:21 +08:00
  • 34347dafb0 清理autoReceive: 删除立即接收开关+新任务强制PENDING等工人自行接收 duxingchen 2026-08-06 09:34:12 +08:00
  • a0bdce0359 首次扫码防呆: 删除statusPicker强弹+白板产品直接弹发起工序+宏观状态提示未激活 duxingchen 2026-08-06 09:27:15 +08:00
  • c0feab6be4 UX防呆: 仓库横幅有活跃任务时隐藏 + 宏观状态栏无任务时引导创建 + 创建任务自动切workspace duxingchen 2026-08-06 09:22:31 +08:00
  • eb52e2fd48 修复: create_task同步current_location_id到接收人 + receive_task兜底同步产品位置 duxingchen 2026-08-06 09:12:07 +08:00
  • f3fb000bda 产品宏观状态自动同步: create_task/transfer_task/spawn_subtask均更新overall_status duxingchen 2026-08-06 09:06:07 +08:00
  • b00ebd892f 修正: 序列号→身份证, 外部序列号→产品序列号 duxingchen 2026-08-06 09:02:35 +08:00
  • ae720656b1 全局重命名: 序列号→身份证 (product.serial_number) duxingchen 2026-08-06 09:00:15 +08:00
  • 3b29bb0bd1 编辑产品加Label + 仓库横幅改为warehouse-transfer-banner + 弹窗标题联动isWarehouseTransfer duxingchen 2026-08-06 08:42:32 +08:00
  • c836944f92 新增: 仓库转出功能 — 产品在库时显示📤转出按钮+复用创建任务+更新location duxingchen 2026-08-06 08:39:06 +08:00
  • f665cf7e24 紧急修复: transfer中real_assignees→real_branches变量名 + SpawnRequest BaseModel导入 duxingchen 2026-08-05 18:16:07 +08:00
  • b547844dca 并发模型: spawn派发协助分支 + 转交简化为单线 + 子分支未完成拦截(409) duxingchen 2026-08-05 18:01:14 +08:00
  • b79d521bad TreeCanvas升级: 时间轴重力算法 — 拍平排序+智能分层+居中排布+正确取最早记录备注 duxingchen 2026-08-05 17:44:01 +08:00
  • d9f4e7e66e 紧急修复: product_service._task_to_response补remark — 扫码详情页remark=null的根因 duxingchen 2026-08-05 17:41:09 +08:00
  • 99eab80a1c 组件化拆分: TreeCanvas(2D画布) + WorkspaceArea(任务列表+锁定工作区) + detail瘦身(仅弹窗) duxingchen 2026-08-05 17:25:15 +08:00
  • 4c4ed7234d 终极重构: getTaskRemark兜底(record挖掘) + movable-area 2D画布(拖拽+缩放) duxingchen 2026-08-05 17:22:36 +08:00
  • 16762a8628 修复: remark强制渲染(醒目黄框内联样式) + 画布高度坍塌修复(100%撑满) duxingchen 2026-08-05 17:02:48 +08:00
  • 1d759f3e8c 流转树2D画布: scroll-view无限拖拽 + 水平分支并排 + 垂直时间轴 + 连线 duxingchen 2026-08-05 16:58:12 +08:00
  • 9aa0687d8c 防呆重构: 废除swiper→任务列表+锁定工作区 + remark醒目显示 + 树视图减少缩进+分支闭环标记 duxingchen 2026-08-05 16:56:52 +08:00
  • 78559db1fa 双模态详情页: workspace(swiper+footer) / tree(只读流转树) 智能分流+一键切换 duxingchen 2026-08-05 16:43:32 +08:00
  • 21aa608db3 工艺节点树: 新增结束分支(终止)接口 + 前端🏁结束分支按钮 + WIP可无下游完结 duxingchen 2026-08-05 16:37:05 +08:00
  • e2d9590c48 修复remark丢失(_to_response漏字段) + UI重构swiper专注卡片看板 duxingchen 2026-08-05 16:35:14 +08:00
  • 4ee3cb7552 紧急修复: get_all_tasks移除parent_task_id过滤 — 子任务也能出现在我的任务列表 duxingchen 2026-08-05 16:30:45 +08:00
  • 9978714d40 紧急修复: receive_task语法错误 — raise HTTPException括号未闭合导致后端启动失败 duxingchen 2026-08-05 16:25:34 +08:00
  • 71e8eeb7e8 权限: receive/reject校验assignee_id匹配 + 前端myActiveTask只显示本人任务 + 403处理 duxingchen 2026-08-05 16:21:27 +08:00
  • 62422e7558 全栈: 接收任务写入remark — 后端receive接口+Body参数+前端接收弹窗备注输入 duxingchen 2026-08-05 16:16:35 +08:00
  • 353633f061 修复: 409错误提示可见 + PENDING状态拦截(必须先接收) + request.js显示409详情 duxingchen 2026-08-05 16:10:45 +08:00
  • 4f14a40bd9 修复: 驳回返工任务追溯上一环转交人 — parent.assignee → TaskLog.operator_id 三层兜底 duxingchen 2026-08-05 16:03:33 +08:00
  • 7810097b39 全栈修复: remark字段全链路打通 — TaskCreate+TransferRequest+transfer_task+前端Payload duxingchen 2026-08-05 15:59:20 +08:00
  • 30d35d7fa2 重构: PENDING恢复驳回按钮 + 转交弹窗升级多分支裂变(无限加分支) duxingchen 2026-08-05 15:57:20 +08:00
  • c2db89d9d5 重构: 入库改为工序选项(废弃勾选框) + TaskTreeNode增加remark调试log + isWarehouse计算属性 duxingchen 2026-08-05 15:50:39 +08:00
  • f736cf0c13 修复: TaskResponse补remark字段 + 记录按时间降序取最新一条(latestRecord) duxingchen 2026-08-05 15:37:10 +08:00
  • e5b201a040 重构: 删除卡片中间冗余按钮 + 转交弹窗接入真实用户/工序API duxingchen 2026-08-05 15:25:19 +08:00
  • 22f7bb2f79 全栈: Task模型+remark字段 + 前端任务卡片初始说明展示区 duxingchen 2026-08-05 15:22:50 +08:00
  • 3b02c87067 重构: flex布局撑满全屏 + 记录区下沉到子树底部 + 底部Footer钉死 duxingchen 2026-08-05 15:16:03 +08:00
  • 430c0d2342 布局升级: 流转树撑满空间+独立历史记录页+查看全部记录入口 duxingchen 2026-08-05 15:09:09 +08:00
  • 5e53cd7f79 纳入 track-uniapp 前端项目 (扫码/任务树/记录/转交Picker) duxingchen 2026-08-05 15:01:46 +08:00
  • eaaeb38d0a chore: gitignore 补充 backend/app/uploads/ duxingchen 2026-08-05 14:02:06 +08:00
  • 59c182a743 feat(frontend): 管理端页面 — 任务全景树/创建产品/标签打印/认证守卫 duxingchen 2026-08-05 14:01:36 +08:00
  • d04085fc38 feat(frontend): 认证体系 + 类型定义 + API 服务层 duxingchen 2026-08-05 14:01:08 +08:00
  • 1fed716829 feat(services): 核心业务逻辑 — 接收/返工/裂变/记录/标签打印 duxingchen 2026-08-05 14:00:55 +08:00
  • 79583cf8f4 feat(api): 核心端点 — 接收/驳回/转交/打印/上传/用户/物料/记录CRUD duxingchen 2026-08-05 14:00:43 +08:00
  • f9e10a7dd1 feat(schemas): 扩充 Task/Product Pydantic Schema duxingchen 2026-08-05 14:00:32 +08:00
  • e0c01a562f feat(models): Task/Product 模型扩充 + 4个Alembic迁移 duxingchen 2026-08-05 14:00:23 +08:00
  • 82f474f71f chore: 基础设施 — 阿里云源、北京时间、HEX计数器、打印机配置 duxingchen 2026-08-05 14:00:13 +08:00