{{define "content"}}

数据编辑

手动补录没带手机时的记录点(新增地点 / 到访 / 行程 / 天气),改完在下方一键导出为 .rondbackup
{{/* 从筛选过的列表点「编辑」进来的:给一个回得去的出口(筛选条件还在那个地址里) */}} {{if .Back}}← {{.BackLabel}}{{end}} 返回后台 导出 rondbackup
{{if .Flash}}
{{.Flash}}
{{end}} {{if .Err}}
{{.Err}}
{{end}} {{if not .HasData}} {{template "emptystate" .}} {{else}} {{if not .CanExport}}
导出所需要的基线库暂不可用(当初上传的原始 .rondbackup 可能已被清理)。请到后台重新上传一次该备份文件,即可恢复导出。
{{end}} {{/* 活动与类别是「分类字典」,不随下面的分页列表变,所以放最上面。 类别没有独立的表,值就长在 places.poi_category 上——所以「改名 / 清空」都是按值批量作用到地点。 */}}

活动与类别

活动是单独的一张表(共 {{num (len .ActivityRows)}} 个),类别只是地点上的一个字段({{num (len .CategoryRows)}} 种在用)。 改名时把值填成另一个已有的,就是合并——整批并过去,不用先删再建。

活动

{{range .ActivityRows}} {{end}}
名称引用原生属性
{{num .Visits}} {{if .IsHome}}家{{end}}{{if and .IsHome .IsWork}} · {{end}}{{if .IsWork}}工作{{end}}
合并:把 并到 |

类别

{{range .CategoryRows}} {{end}}
类别地点
{{if .Missing}}还没有中文名 {{else if .Custom}}已自定义{{end}} {{num .Places}}
{{range .CategoryRows}}{{end}}
把值改成另一个已有类别就是合并;「清空」= 那些地点退回「未指定」。 要加一个全新的类别,在地点行内编辑里选「自定义…」填就行——类别的候选本来就来自地点数据本身, 凭空预置一个没人用的值不会出现在任何下拉里。

新增地点

按名称搜索可直接填入坐标;也可在地图上点击选点,坐标为 GCJ-02(与 rond 记录同系)。
{{if .GeocodeReady}}
{{else}}
按名称搜坐标未启用:在 conf/app.ini 填 geocode_key(高德 Web 服务 Key,免费)后重启即可。
{{end}}
*名称、坐标必填;坐标可搜索或地图点选自动填入
到访时段选填:留空则只记录地点;填了就追加一条独立的到访(如某次忘带手机的那段),不影响该地点已有记录。离开时间留空表示只记了到达;时间凭记忆填个大概即可(5 分钟步进)。
{{if .Tags}}
{{range .Tags}}{{end}}
{{end}}

地点列表

{{/* back 要跟着走:不然一筛选,「返回地点库」就没了 */}} {{if .Back}}{{end}} {{/* 三个表单各自只带自己那几个条件,其余条件必须原样带上: 否则搜一下就把别的列表的筛选悄悄清掉了。 */}} {{if .VisitQuery}}{{end}} {{if .MovementFilter.Transport}}{{end}} {{if .MovementFilter.PlaceID}}{{end}} {{if .MovementFilter.From}}{{end}} {{if .MovementFilter.To}}{{end}} {{if .VisitQuery}}{{end}}
重置
共 {{num .Total}} 个地点,按到访数排序{{if .SuspectCount}};其中 {{num .SuspectCount}} 个的显示坐标疑似就是 WGS-84(当初没做偏移,底图上会偏 500 米左右),行内已标注{{end}}。「坐标来源」是建点时留下的记录:照片导入会把当时选的坐标系一起记下来,未留档的是 2026-09 之前的行,只能靠原图或行内标注判断。
{{if .Places}}
{{range .Places}} {{end}}
名称城市坐标到访
{{if .Name}}{{.Name}}{{else}}(未命名){{end}} #{{.SrcPK}} {{.City}}{{if .District}} · {{.District}}{{end}}{{if .Thoroughfare}} · {{.Thoroughfare}}{{end}} {{printf "%.5f" .Lat}}, {{printf "%.5f" .Lon}}
{{.SourceTag}} {{if .SuspectWGS}}疑似 WGS-84{{end}} {{if .MovedM}}
比导入时移动了 {{num .MovedM}} 米{{end}}
{{num .VisitCount}}
编辑
{{/* 改的是该地点名下**全部到访**的类型,所以默认「(不修改)」、 不预选当前值:否则每次改个坐标保存,都会把历史到访重写一遍 */}} {{if .ActivityText}}
该地点到访当前类型:{{.ActivityText}}
{{end}}
{{if .MovedM}}
导入时的坐标:{{printf "%.6f" .OrigLat.Float64}}, {{printf "%.6f" .OrigLon.Float64}}(现在比它偏了 {{num .MovedM}} 米)
{{end}}
{{if .HasSrcCoord}}
换算前的原始坐标:{{printf "%.6f" .SrcLat.Float64}}, {{printf "%.6f" .SrcLon.Float64}}
{{end}}
{{if gt .PageCount 1}}
{{if gt .PageNo 1}}上一页{{end}} 第 {{.PageNo}} / {{.PageCount}} 页 {{if lt .PageNo .PageCount}}下一页{{end}}
{{end}} {{else}}
没有匹配的地点
{{end}}
{{/* 重复到访:站点侧跟手机包「同一到达时间 + 同一地点」的历史副本。判定见 edit_duplicates.go(与 tools/dedup_site_visits.py 同一套语义)。 只在检出 >0 对时出现;判定不了时只给一行说明、不给按钮。 */}} {{if .DupUnavailable}}

重复到访

{{.DupUnavailable}}
{{else if .DupVisits}}

重复到访 {{num (len .DupVisits)}} 对

这些到访跟手机包里的某条到达时间 + 地点完全相同、但 UUID 不同,是站点侧的历史副本, 导出到 rond 后会变成成对的两条。默认全选:删掉勾选的副本会连它的位移 / 天气 / 留档一起清, 并把指向它的合并标记改指到保留项(不动就会在导出时留下悬空引用)。
{{range .DupVisits}} {{end}}
到达时间地点保留(手机来源)删除(站点副本)
{{.ArrivalStr}} {{if .PlaceName}}{{.PlaceName}}{{else}}(未命名地点){{end}} #{{.Keep}}
全部保留 「全部保留」什么都不改,只是取消勾选。
{{end}}

到访记录

{{if .Back}}{{end}} {{/* 只搜到访不能把别的列表的筛选清掉(原来只带 vq+back,一搜 q/src/sus 和行程的 mt/mp/mfrom/mto 全丢了)。 */}} {{if .Query}}{{end}} {{if .SourceFilter}}{{end}} {{if .SuspectOnly}}{{end}} {{if .MovementFilter.Transport}}{{end}} {{if .MovementFilter.PlaceID}}{{end}} {{if .MovementFilter.From}}{{end}} {{if .MovementFilter.To}}{{end}}
重置
共 {{num .VisitTotal}} 条{{if .VisitQuery}}(匹配「{{.VisitQuery}}」){{end}},按时间倒序。可修改时间 / 类型 / 备注,或删除。
{{if .Visits}}
{{range .Visits}} {{end}}
时间地点类型备注
{{.ArrivalStr}}{{if .DepartureStr}}
→ {{.DepartureStr}}{{else}}
(未离开){{end}}
#{{.SrcPK}} {{if .PlaceName}}{{.PlaceName}}{{else}}—{{end}}{{if .City}} · {{.City}}{{end}} {{.ActivityName}}{{if .UserAdded}} 补录{{end}} {{.Emoji}}{{if .Remark}}{{.Remark}}{{end}}
编辑
{{/* 选到「+ 新增活动…」就地展开。输入框不写 name:它不该随表单提交, 选中的活动由 activity_id 带过去。建完由脚本挂到页面所有类型下拉上。 */}}
{{if gt .VisitPageCount 1}}
{{if gt .VisitPageNo 1}}上一页{{end}} 第 {{.VisitPageNo}} / {{.VisitPageCount}} 页 {{if lt .VisitPageNo .VisitPageCount}}下一页{{end}}
{{end}} {{else}}
还没有到访记录
{{end}}

行程记录

{{if .Back}}{{end}} {{if .Query}}{{end}} {{if .VisitQuery}}{{end}} {{if .SourceFilter}}{{end}} {{if .SuspectOnly}}{{end}}
重置
共 {{num .MovementTotal}} 段行程{{if or .MovementFilter.Transport .MovementFilter.PlaceID .MovementFilter.From .MovementFilter.To}}(已筛选){{end}},按开始时间倒序。可改起止、方式与时间区间,或删除。
{{if .Movements}}
{{range .Movements}} {{end}}
时间路线方式里程
{{if .Span}}{{.Span}}{{else}}(无时间){{end}} {{if .DurationMin}}
{{dur .DurationMin}}{{end}}
{{.FromLabel}}{{if .FromCity}} · {{.FromCity}}{{end}}
→ {{.ToLabel}}{{if .ToCity}} · {{.ToCity}}{{end}}
{{if .TransportName}} {{.TransportName}} #{{.TransportSrc}}{{else}}(无方式){{end}} {{if .DistanceKm}}{{km .DistanceKm}}{{else}}—{{end}}
编辑
{{if gt .MovementPageCount 1}}
{{if gt .MovementPageNo 1}}上一页{{end}} 第 {{.MovementPageNo}} / {{.MovementPageCount}} 页 {{if lt .MovementPageNo .MovementPageCount}}下一页{{end}}
{{end}} {{else}}
还没有行程记录
{{end}}

新增行程

补录两点之间的位移。起止选对应的到访记录(按名称 / 日期 / #编号 搜索);时间留空则按两端到访自动推断:开始=起点离开时间、结束=终点到达时间。
*起始到访、结束到访必填
方式名称 / 颜色 / 图标改动会作用到所有使用该方式的行程——rond 里交通方式是一份全局列表,改名即整体改名。

新增天气

补录逐小时天气。关联到访可留空。
*时间必填
{{end}}
{{if .OpenSrcPK}} {{end}} {{end}} {{/* 交通方式的颜色下拉:rond 认的是系统色名,不是一个颜色选择器。 每行行内编辑都要一份,抽出来免得 40 行 × 13 个选项堆在模板里。 */}} {{define "coloropts"}} {{$cur := .cur}}{{range $c := .colors}}{{end}} {{end}}