Commit Graph

22 Commits

Author SHA1 Message Date
dc97a7385f perf(frontend): Context value useMemo 稳定化
AuthContext.Provider 和 ToastContext.Provider 的 value 对象
用 useMemo 包裹,避免每次 Provider render 产生新引用导致
所有消费者不必要的 re-render。
2026-08-06 17:34:05 +08:00
b725599cb0 perf(frontend): Vite 构建分包 — manualChunks 拆分 vendor
将 react/react-dom/react-router-dom → vendor-react
将 antd/@ant-design/icons → vendor-antd
将 html5-qrcode → vendor-qrcode
第三方巨头的独立 chunk 可被浏览器长期缓存,业务代码更新时无需重新下载。
2026-08-06 17:34:00 +08:00
3d164159ac perf(frontend): 递归组件 Memo 优化 — React.memo + useMemo
TaskTreeViewer:
- Modal/ReceiveConfirmModal/RejectModal/TransferModal 加 React.memo
- TaskNodeCard 递归组件加 React.memo,阻断父节点状态变更引发的整树重渲染
- countAllTasks 用 useMemo 缓存,仅在 task_tree 引用变化时重新计算

TaskListCard:
- TaskNode 递归组件加 React.memo
- countAll 用 useMemo 缓存
2026-08-06 17:33:54 +08:00
9d204a57d8 perf(frontend): 路由级代码分割 — React.lazy + Suspense
将所有页面组件改为按路由懒加载,Layout 组件保持静态导入。
新增 LoadingSpinner 作为 Suspense 回退组件。
html5-qrcode (~200KB) 和 antd 仅在访问扫码/管理后台路由时加载。
2026-08-06 17:33:48 +08:00
3176bcde6f 标签float环绕布局: QR左浮+文字自然折行+clear:both防序列号乱入 2026-08-06 11:04:03 +08:00
49c8707955 标签防御: height:fit-content+maxHeight物理切断+12px小字号防重叠 2026-08-06 11:02:16 +08:00
5f7b8e9394 标签预览彻底改为内联样式Flex: QR锁110px+line-clamp截断+无class依赖防重叠 2026-08-06 10:56:29 +08:00
1ba44d4b0a 打印所见即所得: iframe克隆DOM+全局样式+静默打印 2026-08-06 10:52:29 +08:00
81e41bc38b 标签预览重构: 固定QR120px+Flex分栏+line-clamp3截断+CSS类名化 2026-08-06 10:51:28 +08:00
f4ff4b5ecb 标签打印防御性布局: Flex分栏+line-clamp截断+分割线+预览同款 2026-08-06 10:44:22 +08:00
bdc861cf8e Web端创建产品成功弹窗: 打开二维码→直接打印标签(window.print+隐式窗口) 2026-08-06 10:37:08 +08:00
59c182a743 feat(frontend): 管理端页面 — 任务全景树/创建产品/标签打印/认证守卫
App.tsx:
- AntApp + AuthProvider + ToastProvider 三层包裹
- /admin/login 独立登录页
- /admin/* 路由认证守卫

AdminLayout:
- 未登录→跳转登录; 顶部栏显示用户名+登出
- 侧边栏: 全局概览/产品管理/任务全景

CreateProductDialog (Ant Design 重写):
- MOM物料手风琴选择器 (Collapse+Table)
- 分组懒加载 + useRef缓存 + 防抖搜索
- HEX ID只读展示 + 序列号/订单号选填

AdminProductsPage:
- 打印预览弹窗 (Base64标签预览 + 份数选择)
- 打印机设置入口 → AdminPrintConfigPage

扫码组件对齐:
- ProductCard: material_name/spec_model/current_location
- TaskListCard: 递归 task_tree + 状态配色 + 返工/裂变标签
- QueryResult: task_tree 优先
- ScanPage: 宏观状态栏
2026-08-05 14:01:36 +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
8458b99782 feat(frontend): 实现任务全景树组件与三大操作弹窗
TaskTreeViewer (components/TaskTree/):
- 搜索栏: 输入 16 位序列号 → getTaskTree() → 递归渲染产品任务树
- 状态标签: PENDING(黄)/WIP(蓝)/COMPLETED(绿)/REJECTED(红)/ARCHIVED(灰)
- 返工警告: is_rework → 红色脉冲 ⚠返工 标签 + 红色 ring 边框
- 裂变标识: child_tasks>1 → 紫色 裂变×N 标签 + 树形连接线
- 产品摘要栏: 序列号/订单/当前位置(virtual_warehouse→🏭仓库)/任务总数

三大操作弹窗 (替换 alert 占位符):
- ReceiveConfirmModal: 二次确认 → receiveTask() → Toast + 刷新树
- RejectModal: 驳回原因必填(≤500字) → rejectTask() → 自动返工提示
- TransferModal: 工序名称 + 多接收人标签输入(Enter添加/X删除)
  + 🏭虚拟入库勾选 + 备注 + 实时裂变预览 → transferTask()

路由接入:
- App.tsx: 包裹 ToastProvider, 新增 /admin/tasks 路由
- AdminLayout: 侧边栏新增「任务全景」菜单 (GitBranch 图标)
- AdminTasksPage: 薄封装层
2026-08-04 17:30:26 +08:00
8fcb33ab5e chore(frontend): 新增全局 Toast 通知组件与入场动画
components/ui/Toast.tsx:
- Context + Provider 模式,全局可用 useToast() hook
- 支持 success / error / info 三种类型,颜色自动适配
- 3.5s 自动消失,支持手动关闭
- 固定右下角渲染,z-[9999]

index.css:
- 新增 @keyframes slide-in 右侧滑入动画
2026-08-04 17:30:17 +08:00
2b5e3ae4c3 feat(frontend): 更新 TS 类型定义与 API 服务层,对接后端重构接口
types/api.ts:
- TaskSummary/TaskResponse 新增 is_rework, reject_reason, received_at, completed_at 字段
- 新增 TASK_STATUS 常量 (PENDING/WIP/COMPLETED/REJECTED/ARCHIVED)
- 新增 TaskTransferResponse, TaskRejectPayload, TaskTransferPayload 类型
- ProductScanResponse 新增 current_location_id, task_tree 字段

types/admin.ts:
- ProductResponse 新增 current_location_id 字段

services/taskApi.ts:
- 新增 getTaskTree(serialNumber) — 产品全景任务树
- 新增 receiveTask(taskId) — 确认接收
- 新增 rejectTask(taskId, reason) — 品质驳回
- 新增 transferTask(taskId, assignees, name, note?) — 完工裂变转交
2026-08-04 17:30:12 +08:00
340a09007e feat: 实现前端管理看板与移动端扫码视图组件 2026-08-04 17:10:01 +08:00
d18d9dbaac feat: 建立前端 TS 类型系统与 API 请求服务层 2026-08-04 17:09:55 +08:00
daae052878 chore: 配置前端 Vite 环境,搭建全局路由结构与基础样式 2026-08-04 17:09:51 +08:00
e0bd1ad44e chore: 完善全栈 Docker 开发环境与容器基础设施 2026-08-04 17:09:30 +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