SEMAP 是 Web 前端 + Android App + 云端后端的移动轨迹记录与地图展示系统。
backend/:FastAPI 后端。frontend/:React + TypeScript Web 前端。android/:Kotlin + Jetpack Compose Android App。.env.example:环境变量示例。
source /root/semap/.venv/bin/activate
cd /root/semap/backend
uvicorn app.main:app --host 0.0.0.0 --port 8000数据库迁移:
source /root/semap/.venv/bin/activate
cd /root/semap/backend
python -m app.migrate生产运行使用 systemd:
systemctl status semap-backend
systemctl restart semap-backend后端测试:
source /root/semap/.venv/bin/activate
cd /root/semap/backend
python -m pytest -q本地开发:
cd /root/semap/frontend
npm install
npm run dev生产构建:
cd /root/semap/frontend
npm run build账号接口:
POST /api/auth/register:注册账号,字段为username和password。POST /api/auth/login:登录账号,返回accessToken和tokenType=bearer。GET /api/auth/me:读取当前用户,使用Authorization: Bearer <token>。
轨迹版本规则:
GET /api/segments返回当前用户的轨迹列表,包含点位数组。GET /api/segments/{segmentId}返回当前用户的单条轨迹和点位。PATCH /api/segments/{segmentId}编辑标题、开始时间、结束时间和摘要。DELETE /api/segments/{segmentId}?version={version}删除轨迹。
外部导入接口:
POST /api/import/flight:字段为flightNumber和date,返回新建航班轨迹。POST /api/import/train/stations:字段为trainCode和date,返回车次经停站列表。POST /api/import/train:字段为trainCode、date、fromStation和toStation,返回新建火车近似轨迹。
同步火车站坐标:
source /root/semap/.venv/bin/activate
cd /root/semap
python backend/scripts/sync_train_stations.py系统环境变量文件:
/etc/profile.d/semap-android.sh加载后可使用:
sdkmanager --list
adb version构建 Debug APK:
cd /root/semap/android
./gradlew --no-daemon :app:assembleDebug当前 APK 正式版本为 1.4
发布 APK 校验:
AAPT=$(find "$ANDROID_HOME" -name aapt -type f | sort | tail -n 1)
"$AAPT" dump badging /var/www/semap/downloads/SEMAP-1.4.apk
APKSIGNER=$(find "$ANDROID_HOME" -name apksigner -type f | sort | tail -n 1)
"$APKSIGNER" verify --verbose --print-certs /var/www/semap/downloads/SEMAP-1.4.apk
curl -I -L https://semap.xyz/downloads/SEMAP-1.4.apk正式 APK 构建:
cd /root/semap/android
./gradlew --no-daemon --max-workers=1 :app:assembleRelease本机配置文件:
/root/semap/.env示例配置:
/root/semap/.env.example