feat: 高德IoT v5 API升级、电子围栏管理、设备绑定自动考勤

- 前向地理编码升级为高德IoT v5 API (POST restapi.amap.com/v5/position/IoT)
- 修复LBS定位偏差: 添加network=LTE参数区分4G/2G, bts格式补充cage字段
- 新增电子围栏管理模块 (circle/polygon/rectangle), 支持地图绘制和POI搜索
- 新增设备-围栏多对多绑定 (DeviceFenceBinding/DeviceFenceState)
- 围栏自动考勤引擎 (fence_checker.py): haversine距离、ray-casting多边形判定、容差机制、防抖
- TCP位置上报自动检测围栏进出, 生成考勤记录并WebSocket广播
- 前端围栏页面: 绑定设备弹窗、POI搜索定位、左侧围栏面板
- 新增fence_attendance WebSocket topic

via [HAPI](https://hapi.run)

Co-Authored-By: HAPI <noreply@hapi.run>
This commit is contained in:
2026-03-27 13:04:11 +00:00
parent cde5146bfe
commit 1d06cc5415
17 changed files with 2303 additions and 187 deletions

View File

@@ -25,19 +25,13 @@
# Track query max points (default: 10000)
# TRACK_MAX_POINTS=10000
# 地图 API key (reverse geocoding, free 10k/day)
# Sign up: https://lbs.tianditu.gov.cn/
# TIANDITU_API_KEY=your_tianditu_key
# Google Geolocation API (optional, for cell/WiFi geocoding)
# GOOGLE_API_KEY=your_google_key
# Unwired Labs API (optional, for cell/WiFi geocoding)
# UNWIRED_API_TOKEN=your_unwired_token
# 高德地图 API (optional, requires enterprise auth for IoT positioning)
# AMAP_KEY=your_amap_key
# AMAP_SECRET=your_amap_secret
# 高德地图 API
# Web服务 key (逆地理编码 + v5 IoT定位, 企业订阅)
# AMAP_KEY=your_amap_web_service_key
# AMAP_SECRET=your_amap_web_service_secret
# 智能硬件定位 key (旧版 apilocate.amap.com 回退, 可选)
# AMAP_HARDWARE_KEY=your_amap_hardware_key
# AMAP_HARDWARE_SECRET=your_amap_hardware_secret
# Geocoding cache size
# GEOCODING_CACHE_SIZE=10000