|
|
3b53db03c1
|
feat: 看板全局时间筛选 + 协同留言抽屉
任务1 — 后端时间快照逻辑:
get_dashboard_stats 新增 since/until 参数
PENDING/WIP/总数 → 永远实时快照(忽略时间筛选)
COMPLETED/REJECTED → 严格按时段过滤
完成率基于过滤后的COMPLETED计算
任务2 — 前端时间筛选器:
Radio.Button: 今天 | 近7天 | 近30天 | 自定义
DatePicker.RangePicker 自定义区间
切换时重新拉取 /dashboard/stats
任务3 — 协同留言抽屉:
后端: GET /dashboard/messages(上帝视角全厂数据)
JOIN Product → serial_number + material_name
支持 keyword 搜: SN/物料名/留言人/内容
按 created_at 倒序
前端: Drawer + Input.Search + List
点击"留言"数字打开抽屉
分页展示: 留言人/内容/SN标签/物料名/时间
|
2026-08-12 13:50:56 +08:00 |
|
|
|
39377ae5e4
|
feat: 看板重构 — 在制品看板 + 留言未读数
核心理念转变:
旧: 最近操作历史(谁做了什么)
新: 当前在制品状态(谁的活卡了多久)
后端:
- DashboardStats 新增 unread_messages(协同留言总数)
- 新增 GET /dashboard/wip-tasks(在制品端点)
- 按滞留时间升序排列,PENDING/WIP 任务倒计时
- 自动计算 duration_hours(已滞留小时数)
前端:
- 品质卡片: 新增留言未读数(紫色)
- 在制品看板: 替换原最近动态
每行显示: 状态徽标 | 任务名+负责人+身份证 | 滞留时长
- 滞留颜色: 48h+红 | 24h+橙 | 8h+黄 | <8h灰
- 系统通知可点击跳转
|
2026-08-12 13:40:08 +08:00 |
|
|
|
00fae01eed
|
fix: 看板4项体验修复 — 时间/身份证/日期筛选/通知跳转
1. 完整16位产品身份证号显示(不再截断)
2. 日期筛选栏: 今天 | 近7天 | 近30天 | 全部
- 后端 recent-activity 支持 since/until ISO参数
- 默认展示今天动态,可按时间范围切换
3. 操作人兜底: TaskLog无operator_id时用任务assignee_id
4. 未读通知可点击跳转通知页面 + 快捷入口增加通知中心
|
2026-08-12 13:35:23 +08:00 |
|
|
|
658fc28b9b
|
feat: 管理看板全面改版 — 增强可读性 + 填充空白区域
后端增强:
- DashboardStats 新增 tasks_rejected, tasks_rework, unread_notifications
- 新增 GET /dashboard/recent-activity 最近动态端点
- 关联 Task + Product 表返回完整动态信息
前端改版 (AdminDashboard.tsx):
- 4 张概览卡片: 产品流转 | 任务状态 | 品质通知 | 完成率
- 每张卡片含进度条(百分比标注) + 中文说明
- SVG 环形图展示任务完成率
- 最近流转动态时间线 (8条)
- 快捷入口: 创建产品/任务管理/打印配置/扫码干活
- 底部说明卡片解释"产品 vs 任务"的区别
- 响应式网格填满全屏, 无空白区域
|
2026-08-12 13:25:49 +08:00 |
|
|
|
3a6ab7d756
|
security: 补全剩余端点鉴权 + 移除硬编码管理员后门
1. 鉴权补全
- orders.py: create_order 补全 Depends(get_current_user)
- print.py: print_execute 和 update_printer_config 补全鉴权
- records.py: update_record 和 delete_record 补全鉴权
2. 安全加固
- auth_service.py: 移除硬编码超级管理员(IRIS/123321)后门
- 所有用户统一通过MOM sys_user scrypt密码验证登录
|
2026-08-12 12:04:40 +08:00 |
|
|
|
8c54a38f55
|
security: API鉴权补全 + SQL拼接隐患消除
1. materials.py
- get_material_groups和get_material_items补全Depends(get_current_user)
- 移除TYPE_FILTER="1=1"死代码及4处f-string SQL拼接
- 全部SQL改为纯参数化text()查询
2. notifications.py
- list_notifications废弃user_id查询参数(越权漏洞)
- user_id强制从JWT Token解析,防止篡改参数偷看他人通知
- mark_notification_read补全鉴权
|
2026-08-12 12:03:12 +08:00 |
|
|
|
991d713777
|
feat(backend): 新增留言通知 — add_task_record 自动推送给任务负责人
触发条件:
- 有人对任务添加流转记录(留言/备注)
- 任务有 assignee_id
- 留言人 != 任务负责人 (不给自己发通知)
通知内容:
- title: 💬 收到新留言
- content: 产品[SN]的「任务名」有新留言:{前30字摘要}
- type: COMMENT
额外:
- Notification 模型新增 NOTIFY_COMMENT 常量
- 前端 notify 页新增 COMMENT 图标(💬)和标题(收到新留言)
|
2026-08-11 18:17:52 +08:00 |
|
|
|
40a2d87345
|
fix: 消息通知页不能点进详情 — 补全 product_serial_number
问题: 点击通知卡片跳转 detail?taskId=xxx,但 detail.vue onLoad 只认 serial 参数导致空白页
修复:
1. 后端 NotificationResponse 新增 product_serial_number 字段
2. 后端 notifications API 联表 tasks+products 批量填充 serial
3. 前端 notify/index.vue handleCardTap 优先用 product_serial_number 跳转,兜底从 content 正则解析
4. 前端 detail.vue onLoad 新增 taskId 兜底 → doQueryByTask 反查 product_sn
|
2026-08-11 15:56:25 +08:00 |
|
|
|
88dc7381f6
|
fix(backend): 权限漏洞修复 + 业务逻辑审查修复
1. 宏观状态越权修复 (products.py + product_service.py):
- update_overall_status 增加权限校验:仅 SUPER_ADMIN 或当前操作该产品主线任务的人可修改,否则 403
2. 任务撤回越权修复 (task_service.py + tasks.py):
- recall_task 增加校验:操作人必须等于上游任务负责人(谁发出的谁撤回),否则 403
- 管理员 (SUPER_ADMIN/SUPERVISOR) 直接放行
3. 驳回上游溯源修复 (task_service.py - reject_task):
- 将 TaskLog (action_type=create) 提升为优先溯源方式,解决协助分支转交后驳回找不到正确发起人的 Bug
- 保留 parent_task.assignee_id + task.assignee_id 两级兜底
4. complete_task 父节点继承修复:
- 修复 task_type == 'MAIN' 永不匹配的 Bug(模型无此值)
- 改为 not parent_task_id or task_type in (TRANSFER, RECOVERY)
|
2026-08-11 15:05:30 +08:00 |
|
|
|
d40a8d480e
|
fix(backend): end_task 和 complete_task 补齐权限校验
- end_task 新增 operator_role 参数 + _check_permission 调用
- complete_task 新增 operator_role 参数 + _check_permission 调用
- 两个端点均注入 current_user Depends(get_current_user)
- 非任务负责人且非管理员/主管调用时返回 403
|
2026-08-11 10:13:40 +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 |
|
|
|
60af3b9998
|
feat: 物料选择全量展示(移除成品/半成品限制)
|
2026-08-10 11:02:22 +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 |
|
|
|
57884d7baa
|
撤回转交: recall接口删除子任务恢复父WIP + 前端canRecall判断 + 红色撤回按钮
|
2026-08-06 11:39:22 +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 |
|
|
|
b547844dca
|
并发模型: spawn派发协助分支 + 转交简化为单线 + 子分支未完成拦截(409)
|
2026-08-05 18:01:14 +08:00 |
|
|
|
21aa608db3
|
工艺节点树: 新增结束分支(终止)接口 + 前端🏁结束分支按钮 + WIP可无下游完结
|
2026-08-05 16:37:05 +08:00 |
|
|
|
62422e7558
|
全栈: 接收任务写入remark — 后端receive接口+Body参数+前端接收弹窗备注输入
|
2026-08-05 16:16:35 +08:00 |
|
|
|
7810097b39
|
全栈修复: remark字段全链路打通 — TaskCreate+TransferRequest+transfer_task+前端Payload
|
2026-08-05 15:59:20 +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 |
|
|
|
b22de514a1
|
feat: 实现后端核心业务逻辑 (Auth鉴权、二维码服务、看板与产品端点)
|
2026-08-04 17:09:47 +08:00 |
|
|
|
2b967afbf6
|
chore: 更新后端依赖,初始化数据库迁移与 MOM 外部系统连接
|
2026-08-04 17:09:33 +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 |
|
|
|
17105dc9c2
|
初始提交:项目基础结构
- backend: FastAPI 后端服务 (Python)
- frontend: React + Tauri 前端应用
- docker-compose.yml: 容器编排配置
|
2026-08-04 10:05:59 +08:00 |
|