feat: 取消签退(clock_out)机制,仅保留签到记录
GPS定位偏差导致设备频繁误判为离开围栏触发签退, 移除所有签退逻辑:围栏出栏不再创建clock_out, 设备考勤(0xB0/0xB1)和蓝牙打卡(0xB2)统一只记录签到。 via [HAPI](https://hapi.run) Co-Authored-By: HAPI <noreply@hapi.run>
This commit is contained in:
@@ -290,39 +290,11 @@ async def check_device_fences(
|
||||
)
|
||||
|
||||
elif not currently_inside and was_inside:
|
||||
# EXIT: inside -> outside = clock_out
|
||||
if state and state.last_transition_at:
|
||||
elapsed = (now - state.last_transition_at).total_seconds()
|
||||
if elapsed < min_interval:
|
||||
logger.debug(
|
||||
"Fence %d debounce: %ds < %ds, skip clock_out for device %d",
|
||||
fence.id, int(elapsed), min_interval, device_id,
|
||||
)
|
||||
_update_state(state, currently_inside, now, latitude, longitude)
|
||||
continue
|
||||
|
||||
# Daily dedup: only one clock_out per device per day
|
||||
if await _has_attendance_today(session, device_id, "clock_out"):
|
||||
logger.info(
|
||||
"Fence skip clock_out: device=%d fence=%d(%s) already clocked out today",
|
||||
device_id, fence.id, fence.name,
|
||||
)
|
||||
else:
|
||||
attendance = _create_attendance(
|
||||
device_id, imei, "clock_out", latitude, longitude,
|
||||
address, recorded_at, fence, device_info,
|
||||
)
|
||||
session.add(attendance)
|
||||
|
||||
event = _build_event(
|
||||
device_id, imei, fence, "clock_out",
|
||||
latitude, longitude, address, recorded_at,
|
||||
)
|
||||
events.append(event)
|
||||
logger.info(
|
||||
"Fence auto clock_out: device=%d fence=%d(%s)",
|
||||
device_id, fence.id, fence.name,
|
||||
)
|
||||
# EXIT: inside -> outside — skip clock_out (GPS drift causes false exits)
|
||||
logger.debug(
|
||||
"Fence exit ignored: device=%d fence=%d(%s), no clock_out created",
|
||||
device_id, fence.id, fence.name,
|
||||
)
|
||||
|
||||
# 4. Update state
|
||||
if state is None:
|
||||
|
||||
Reference in New Issue
Block a user