Commit Graph

66 Commits

Author SHA1 Message Date
dongliang
6021171a40 fix: 修复下拉手势无响应,改用自定义SwipeDownLayout
ViewPager2内部RecyclerView会拦截触摸事件,导致setOnTouchListener
和GestureDetector都收不到下拉手势。

改用SwipeDownLayout(自定义FrameLayout),在onInterceptTouchEvent中
检测下拉——事件到达子View之前就能观察到,原理同SwipeRefreshLayout。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-28 21:03:03 +09:30
dongliang
97a3054db2 feat: 考勤打卡模块(NFC)重新开发
基于新方法论(11层源码分析+独立评审)重新开发考勤打卡功能:
- 首页下拉展开打卡面板,点击按钮开启NFC贴卡打卡
- 支持上班打卡、下班打卡、撤销打卡
- NFC超时自动关闭,音效反馈(4种planId)
- MQTT type=5 上下班状态推送处理
- 按钮状态矩阵:onPunchState×offPunchState决定显示

新增: AttendanceStatus / PunchApi / PunchViewModel / PunchPanelView
修改: NetworkModule / HomeFragment / fragment_home.xml
删除: AttendanceInfo(被AttendanceStatus替代)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-28 20:57:17 +09:30
dongliang
98de3f0b46 revert: 删除考勤打卡模块代码,准备重新开发
删除:PunchStatus.kt, PunchApi.kt, PunchFragment.kt, fragment_punch.xml
恢复:HomeFragment(去掉下拉手势/PunchApi/工作状态处理)
恢复:fragment_home.xml(去掉pullDownArea覆盖层)
恢复:nav_main.xml(去掉action_home_to_punch)
恢复:NetworkModule(去掉PunchApi提供者)

考勤模块将按NFC打卡流程重新从需求开始设计开发。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-28 20:23:00 +09:30
dongliang
e44a25e841 fix: 去掉打卡确认弹窗 + NFC日志排查
- 去掉"确定上班打卡?"确认弹窗,NFC读到卡号直接提交
- 添加NFC开启/扫描日志便于排查无反应问题

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-28 20:13:48 +09:30
dongliang
5a5c8bfaa0 fix: 考勤页面交互全面优化
1. 半屏下拉面板(不是全屏页面)
2. 去掉状态文字,按钮即状态
3. 点击空白收回面板
4. 增加时间+日期显示(每秒更新)
5. NFC开启时播放语音+振动(planId=8开启/planId=4成功/planId=7失败)
6. NFC扫描时按钮变"NFC扫描中..."(不弹窗)
7. 点击扫描中的按钮可取消扫描
8. 10秒超时自动关闭+振动提示

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-28 20:04:42 +09:30
dongliang
d9ee5f2059 fix: 考勤页面优化
1. 下拉区域扩大到上半屏(140dp),只拦截垂直不拦截水平
2. 考勤页布局优化:居中考勤状态+按钮+低耗电提示
3. 按钮固定宽度250dp,更美观
4. 添加上滑返回手势(考勤页上滑回首页)
5. 去掉底部"上滑返回"文字(已有手势)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-28 19:53:04 +09:30
dongliang
b59fee4bb7 feat: 考勤功能补全
1. 首页加载时检查工作状态(fetchWorkState)
2. MQTT type=4 工作状态推送处理(上班→亮屏,下班→关NFC+熄屏)
3. PunchStatus 增加打卡时间字段(onPunchTime/offPunchTime)
4. 考勤页显示打卡时间("已上班 07:02"/"已下班 17:05")
5. 首页注入 PunchApi/ScreenController/NfcController

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-28 19:30:29 +09:30
dongliang
967b001d46 feat: 考勤改为NFC打卡(替代蓝牙)
- API: onAndOffPunch → nfcOnAndOffPunch(v1.2.5新增)
- 参数: {beaconMacs, punchType} → {nfcId, punchType}
- 流程: 点按钮→开NFC→贴信标读卡→提交
- 10秒超时自动关闭NFC
- 离开页面自动关闭NFC

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-28 19:23:48 +09:30
dongliang
2d5726db9a fix: 下拉手势改为在状态栏区域检测(避免ViewPager2拦截)
状态栏区域扩大为40dp触摸区,在此区域检测下拉手势进入考勤页

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-28 18:38:17 +09:30
dongliang
c812b9ee1a feat: 考勤打卡模块(新方法论首个验证模块)
基于分析产出物开发(discovery-map考勤章节+baseline/05流程6):
- PunchFragment 3种状态(未上班/已上班/已下班)
- PunchApi 3个接口(getAttendance/onAndOffPunch/revokePunch)
- PunchStatus 数据类(字段名基于分析,非猜测)
- 上班打卡:蓝牙识别1.5s→确认弹窗→API
- 下班打卡:蓝牙识别1.5s→直接提交→低耗电模式
- 撤销打卡:确认弹窗→API→恢复
- 首页下拉手势→考勤页
- 蓝牙用模拟MAC,后续对接

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-28 18:34:36 +09:30
dongliang
b7a1b2683f feat: 提示弹窗按原型图V3重设计
- 圆形图标背景(85dp):成功绿/错误红/警告橙 15%透明
- 标题 28sp(原22sp)
- 描述 20sp(原15sp)
- 倒计时 18sp
- 整体居中,大字醒目

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-28 13:58:09 +09:30
dongliang
4abe073ef1 fix: 修复已打卡乱码+巡检场景样式优化
1. 已打卡文字去掉损坏的emoji,改为纯文字"已打卡"
2. 巡检场景:● 绿色实心圆=已打卡,○ 灰色空心圆=未打卡

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-28 13:47:42 +09:30
dongliang
bf71075adf feat: 待完成页面按任务类型区分显示
普通任务(type 0/1/2/3/4):地点+备注+打卡时间+指引块"任务进行中"→完成任务
巡检任务(type 5):场景打卡清单(已打卡/未打卡)+进度(2/5)→开启打卡

新增:InspectScene 数据类,TaskDetail.taskInspectScenes 类型化

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-28 13:39:50 +09:30
dongliang
7f06cdc9d1 fix: 任务页3项优化
1. 标题栏固定顶部不随内容滚动
2. 底部按钮高度缩小(padding 21→13dp)字体加大(24→28sp)
3. 待完成页面改为:地点+备注+打卡时间+绿色指引块"任务进行中,完成工作后点击下方按钮"
   按钮文字改为"完成任务"

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-28 13:29:33 +09:30
dongliang
d7b61bf0fa fix: 任务页全面放大字体+显示截止时间
字体放大:任务名34sp, 地点24sp, 时间22sp, 积分26sp, 备注20sp
指引块标题24sp, 说明20sp, 打卡确认44sp
新增截止时间和要求完成时间显示(待抢单状态)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-28 13:22:41 +09:30
dongliang
2f0fc675d2 feat: 任务页面按原型图V3适老化重设计
按状态显示不同布局:
- 待抢单:任务名+地点+时间+积分+备注 → 帮助决策
- 待打卡(有场景):任务名+备注+指引块(去哪+怎么做) → 两段式指引
- 待打卡(无场景):任务名+绿色引导块 → 正向说明
- 待完成:任务名+备注+打卡时间大字确认 → 安心感
标题栏三栏:返回+状态名+页码
新增指引块drawable(orange/blue/green/note)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-28 13:09:04 +09:30
dongliang
354a2ab124 fix: 任务页面优化老年人布局
- 去掉左右标签行(ConfigRow),改为全部居中展示
- 状态标签顶部居中带pill背景色
- 任务名 30sp 最大最醒目
- 地点 22sp 蓝色
- 时间信息合并显示(派单+截止+要求完成)
- 积分 24sp 橙色(0分时隐藏)
- 操作按钮 24sp 更大
- 返回按钮 40dp 更大触摸区

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-28 12:24:21 +09:30
dongliang
b691b432fb feat: 任务详情补充缺失字段
新增显示:
- 状态标签(彩色文字:待抢单/待打卡/进行中/已完成)
- 截止时间(expireTime)
- 预计完成时间(preFinishTime,指派任务)
- 上报人(createName,type 3/4 时显示)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-28 12:13:21 +09:30
dongliang
29ca1bc7c8 fix: 操作后列表为空时自动返回上一页(和旧版一致)
首次加载为空→显示"暂无任务",操作后列表为空→自动popBackStack

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-28 12:08:14 +09:30
dongliang
b29e68e87f fix: 操作按钮逻辑按taskType+status组合判断
- type 2(指派): 无抢单步骤,直接从status3开始
- type 5(巡检): status4是NFC打卡(非确认完成),无抢单无完成
- type 0/1/3/4: 完整流程(抢单→打卡→完成)
- 抽取 setupPunchButton/setupCompleteButton/showBackButton 方法

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-28 11:00:50 +09:30
dongliang
a25675c5b2 fix: 去掉任务详情页中的分段控件tab,腾出更多内容空间
标题栏直接显示状态名+任务进度(如"接单池 第1/50个")

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-28 10:55:16 +09:30
dongliang
5dfbd627f2 fix: TaskDetailFragment 使用新字段名(displayName/positionText/pointText/sendTime)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-28 10:49:58 +09:30
dongliang
9598976566 fix: TaskDetail 字段对齐服务端实际返回
- name(非taskName), sendTime(非beginTime), taskPositions(数组非字符串)
- point 改为 Double(服务端返回0.0)
- hasPosition 从 taskPositions 判断(服务端无此字段)
- 新增 displayName/positionText/pointText 辅助属性
- displayDetail 使用实际字段名

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-28 10:45:18 +09:30
dongliang
5e2d71c25d feat: 任务列表改为单任务全屏展示+上下滑切换(方案B,和旧版一致)
核心改动:
- queryTaskIds 获取ID列表 → lookTaskDetail 获取当前任务详情
- 上滑下一个、下滑上一个任务
- 顶部显示"第X/Y个任务"
- 派单时间+任务名(带类型前缀)+地点+派单号+积分+协作人+描述
- 底部固定操作按钮(抢单/打卡/完成)
- 操作成功后刷新列表+详情
- 空状态+Loading状态

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-28 10:34:44 +09:30
dongliang
aea7b349b8 fix: 任务卡片显示name字段(queryTaskIds返回name不是taskName)
TaskItem 新增 name 字段 + displayName 属性(优先name其次taskName)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 21:25:53 +09:30
dongliang
a455c82b59 fix: queryTaskIds 和 lookTaskDetail 改为 POST
服务端所有任务接口都要求 POST,GET 返回 405

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 21:18:21 +09:30
dongliang
52949f4e3f fix: 任务列表改用 queryTaskIds 接口(旧版实际使用的接口)
pageList 返回空body,改为 queryTaskIds GET 请求

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 21:15:15 +09:30
dongliang
4a3fbb6be6 fix: 处理服务端返回空body(Content-Length:0)
服务端无数据时返回200但body为空,Gson抛EOFException。
捕获EOFException视为Success(null)而非网络错误。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 21:05:58 +09:30
dongliang
aec33ee3e1 fix: UnbindInterceptor 改用 peekBody 防止消费响应体
source.request() 在空body/非JSON响应时会导致后续Gson解析失败。
改用 peekBody(1024) 安全读取副本。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 20:47:53 +09:30
dongliang
2d0a4d94ae fix: pageList 接口改为 POST(服务端返回405 GET不支持)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 20:38:27 +09:30
dongliang
c0059efa16 fix: 防止重复导航崩溃 - 跳转前检查当前是否在homeFragment
HomeFragment的View不随导航销毁,快捷区点击事件仍会触发。
在非homeFragment时跳过导航。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 20:34:56 +09:30
dongliang
5b0a0b4964 fix: taskId defaultValue 加 L 后缀修复 long 类型解析错误
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 20:27:27 +09:30
dongliang
1056386af8 feat: 任务管理模块 - 列表+详情+抢单/打卡/完成
新增:
- TaskListFragment 分段控件+RecyclerView+下拉刷新
- TaskDetailFragment 信息展示+底部固定操作按钮(foot-btn)
- TaskListAdapter 任务卡片适配器
- TaskItem/TaskDetail 数据类
- TaskApi 新增5个接口(pageList/detail/grab/assign/complete)
- 分段控件/底部按钮/状态标签 drawable

修改:
- nav_main.xml 添加参数和action
- HomeFragment 快捷区点击→任务列表(传tableStatus)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 20:19:35 +09:30
dongliang
3c9d74f16c fix: 快捷区标签放大16→20sp,减少拥挤感
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 19:56:07 +09:30
dongliang
229c7d3c62 fix: 设置页字体放大适配老年人
头像 59→72dp, 字母 27→33sp
姓名 20→26sp, 手机号 15→19sp
信息行 17→20sp

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 19:51:12 +09:30
dongliang
7a777e28a6 fix: 状态栏固定在顶部,不随ViewPager2滑动
- 状态栏从两个子页面移到fragment_home.xml顶层
- ViewPager2在状态栏下方滑动
- HomeFragment只维护一个固定statusBar引用

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 19:47:31 +09:30
dongliang
2df2cd0cc2 fix: 设置页数据不显示 - 直接操作inflate好的View
之前通过ViewPager2内部查找ViewHolder,但Page0未创建时找不到。
改为直接保存inflate好的configPageView引用,数据填充不依赖ViewPager2。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 19:39:47 +09:30
dongliang
06f7c7f20e fix: 主页日期字体放大 20sp→26sp
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 19:37:20 +09:30
dongliang
170e2a527e fix: 按原型图精确换��所有尺寸(120dpi, 1dp=0.75px)
主页:时钟69sp, 日期20sp, 卡片数字43sp, 标签16sp
设置页:头像59dp/27sp, 姓名20sp, 手机号15sp, 信息行17sp
SafeArea: 21dp/27dp, 状态栏24dp
卡片圆角19dp, 内边距19/16dp
指示器: 圆点7dp, 活动19dp

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 19:32:15 +09:30
dongliang
fdc2eaa5c9 fix: 主页字体大幅放大对齐原型图比例
时钟 56→80sp(sans-serif-light),日期 18→24sp
快捷区数字 32→42sp,标签 14→16sp
缩小padding最大化内容空间

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 19:17:59 +09:30
dongliang
3f258aa620 fix: 首页和设置页字体放大适配老年人
主页:时钟 48→56sp,日期 16→18sp,快捷区数字 28→32sp,标签 12→14sp
设置页:姓名 15→20sp,手机号 11→14sp,信息行 13→16sp

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 18:55:22 +09:30
dongliang
c86e44f264 fix: ViewPager2 子页面设置 match_parent LayoutParams
ViewPager2 要求子页面必须填满,inflate 时未指定 parent 导致 LayoutParams 丢失。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 18:42:50 +09:30
dongliang
e07a2242a9 feat: 首页与应用壳模块
新增:
- StatusBarView 自定义状态栏(圆点+信号条+电池壳,按原型图V3)
- ViewPager2 左右滑动(设置页/主页,默认主页)
- 主页:时钟+日期+快捷区3卡片(对接statisticsNew API)
- 设置页:圆形头像+用户信息+设备信息+调试模式
- TaskApi 接口(统计+考勤)
- HomePagerAdapter(View方式,避免Fragment嵌套)
- 页面指示器+快捷区卡片背景drawable

修改:
- HomeFragment 重写为ViewPager2容器
- NetworkModule 添加TaskApi提供者
- styles.xml 添加ConfigRow/Label/Value样式

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 18:37:06 +09:30
dongliang
e6d5d6fe8a fix: 回滚二维码到iPhone风格(静默区1格+圆角12%)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 18:05:55 +09:30
dongliang
a7622da05a fix: 二维码静默区2格+圆角8%,防止裁切定位角
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 18:02:35 +09:30
dongliang
6e201923b7 fix: 二维码静默区改为0,修复圆角不对称
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 18:00:32 +09:30
dongliang
c244011c96 fix: 恢复二维码为iPhone风格整体圆角裁剪(12%)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 17:57:41 +09:30
dongliang
30f7ac1206 fix: 重写圆角二维码渲染
- 使用独立 Paint 对象,修复颜色问题
- 模块大小固定 16px,圆角 35%
- 白色圆角背景 + 黑色圆角模块
- 模块间 10% 缝隙

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 17:49:22 +09:30
dongliang
2ec738e3a4 feat: 二维码圆角风格 - 每个模块都是圆角矩形
- 白色背景圆角 8%
- 每个黑色模块圆角 30%
- 模块间有微小缝隙,更精致
- 自动裁剪 ZXing 空白边距

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 17:45:51 +09:30
dongliang
c048c27751 fix: 二维码圆角加大(6%→12%)参照iPhone风格
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 17:42:30 +09:30