本文引用的文件
轨迹模块 track 是案件数据分析中用于还原目标人员时间线与空间活动的重要维度。它管理快递、旅馆住宿、同行(同航班、同火车、同大巴)、同住、同城、基站、火车票等轨迹类调查数据,并通过“谁在什么时间出现在哪里、和谁在一起”来支撑案件串并、行踪追踪和关联挖掘。
该模块的轨迹数据主要来源于多源清洗入库表,以及通话记录衍生的基站位置信息;对外暴露的分析能力集中在 Agent 工具层,以只读方式提供基站汇总、昼夜活动、碰面、同住、同行、快递聚合等查询入口。
轨迹模块在后端代码中的组织方式采用“领域包 + 分层职责”的结构:
common/model/track/entity 与 common/model/track/query。resources/mappers/track。module/track/service,封装按人员、时间、地点、来源系统的聚合与过滤逻辑。Agent 工具位于 module/agent/tools/TrackAnalysisTool,将业务方法包装为可被大模型调用的只读工具。
graph TB
subgraph "Agent 工具层"
Tool["TrackAnalysisTool<br/>轨迹与分析工具集"]
end
subgraph "业务服务层"
S1["TrackCellTowerService<br/>基站轨迹"]
S2["TrackEnLocalService<br/>境外本地昼夜活动"]
S3["TrackMeetService<br/>轨迹碰面"]
S4["TrackTogetherLiveService<br/>同住分析"]
S5["TrackTogetherTravelService<br/>同行旅行"]
S6["TrackExpressInfoService<br/>快递聚合"]
end
subgraph "持久化映射层"
M1["TrackCellTowerMapper"]
M2["TrackEnLocalMapper"]
M3["TrackMeetMapper"]
M4["TrackTogetherTravelMapper"]
M5["HotelStayInfoMapper"]
M6["TogetherLiveMapper"]
M7["ExpressInfoMapper"]
end
subgraph "数据库表"
T1["call_record / call_record_all<br/>通话及基站位置"]
T2["hotel_stay_info<br/>旅馆住宿"]
T3["together_live_info<br/>同住服务"]
T4["together_flight_info<br/>同航班"]
T5["together_train_info<br/>同火车"]
T6["flight_ticket_info<br/>民航订票"]
T7["flight_departure_info<br/>民航离港"]
T8["train_ticket_info<br/>铁路订票"]
T9["track_car_ticket_info<br/>汽车票务"]
T10["express_info<br/>快递收件信息"]
T11["resident_population_info<br/>户籍人口"]
end
Tool --> S1
Tool --> S2
Tool --> S3
Tool --> S4
Tool --> S5
Tool --> S6
S1 --> M1
S2 --> M2
S3 --> M3
S4 --> M4
S4 --> M5
S4 --> M6
S5 --> M4
S6 --> M7
M1 --> T1
M2 --> T1
M3 --> T1
M4 --> T4
M4 --> T5
M4 --> T6
M4 --> T7
M4 --> T8
M4 --> T9
M5 --> T2
M6 --> T3
M7 --> T10
图示来源
章节来源
轨迹模块的核心由以下六类业务能力组成:
| 组件 | 职责 | 主要输入 | 主要输出 | 关键规则 |
|---|---|---|---|---|
| 基站轨迹 | 基于通话记录统计人员在基站下的出现频次、首末时间、经纬度 | 人员姓名、基站名称、LAC/CID、日期范围 | 基站汇总、通联明细 | 表名来自治理配置;未传人员时取案件全部人员 |
| 境外本地昼夜活动 | 将基站通话按白天、夜间时段分组统计 | 人员、昼夜阈值、小时阈值 | 昼夜活动汇总、通话明细 | 默认白天截止 8 点、夜间起点 20 点 |
| 轨迹碰面 | 自关联通话记录,判断两人在同一基站和时间窗口内是否碰面 | 人员、基站、时间窗口分钟数 | 碰面汇总、碰面明细 | 默认 30 分钟时间窗口 |
| 同住分析 | 合并旅馆住宿与同住服务,推导同住人及同住次数 | 人员、同住次数阈值 | 按人员分组的同住关系 | 同住判定含“同酒店+时间交集”和“同行+24 小时”逻辑 |
| 同行旅行 | 合并同航班、同火车、铁路订票、民航订票、民航离港、汽车票务 | 人员、时间范围 | 同行关系、出行时间线 | 按车次/航班号+时间匹配多人 |
| 快递聚合 | 按收件人和地址聚合快递记录,区分收件与寄件 | 人员电话、地址关键词 | 地址聚合页、快递明细 | 使用人员电话缓存去重并按地址聚合 |
这些组件共同回答三类问题:
章节来源
轨迹模块的数据流分为四层:
TrackAnalysisTool 暴露只读工具,限定参数结构,避免直接 SQL 注入风险。数据库层:存放各轨迹类型原始表,以及与通话、人员基础信息的关联。
sequenceDiagram
participant Agent as "Agent 或前端"
participant Tool as "TrackAnalysisTool"
participant Service as "Track*Service"
participant Mapper as "Track*Mapper"
participant DB as "轨迹相关表"
Agent->>Tool: 调用轨迹分析工具
Tool->>Tool: 校验参数、解析日期、设置时间窗口
Tool->>Service: 调用对应业务方法
Service->>Service: 确定人员范围、表名、过滤条件
Service->>Mapper: 执行统计或明细查询
Mapper->>DB: 执行 SQL
DB-->>Mapper: 返回结果
Mapper-->>Service: DTO 或实体列表
Service-->>Tool: 聚合、去重、分页结果
Tool-->>Agent: 表格结果或产物文件
图示来源
基站轨迹是轨迹模块中最接近“时空坐标”的数据。通话记录中包含基站区域编号、小区编号、基站名称、经度和纬度;服务层据此统计每个人员在每个基站的通话次数、首次和末次通话时间。
境外本地昼夜活动是在基站轨迹基础上增加“白天/夜间”时段划分,用于发现异常作息或高频活动地点。
flowchart TD
Start(["进入基站轨迹查询"]) --> SetTable["设置通话记录表名"]
SetTable --> SetPersons{"是否传入人员列表?"}
SetPersons -->|否| LoadAllPersons["加载案件全部人员姓名"]
SetPersons -->|是| UseInputPersons["使用输入人员列表"]
LoadAllPersons --> QueryBase["执行基站汇总或明细 SQL"]
UseInputPersons --> QueryBase
QueryBase --> Result["返回基站汇总或明细分页结果"]
图示来源
关键实现要点:
章节来源
轨迹碰面通过通话记录的自关联,判断两名目标人员在同一基站、同一时间窗口内是否同时出现。这是案件串并中非常重要的隐性关系发现手段。
flowchart TD
A["输入:人员、基站、时间窗口"] --> B["按基站+时间窗口聚合通话记录"]
B --> C["两两组合人员对"]
C --> D{"两人是否在相同基站且时间差小于窗口?"}
D -->|是| E["计入一次碰面"]
D -->|否| F["忽略"]
E --> G["按人员对分组汇总碰面次数"]
G --> H["返回碰面汇总与明细"]
图示来源
关键点:
章节来源
同住分析把两类数据结合:
服务层会合并这两类数据,按被调查对象分组,再按同住人+是否确认同住进行去重和计数。
同行分析则整合多种交通场景:
汽车票务
classDiagram
class TrackTogetherLiveService {
+statFirstTrackTogetherLive(query)
+statSecondTrackTogetherLive(query)
-fetchTravelTogetherData(persons, query)
-buildLiveTogetherRecords(persons, query, travelTogetherList, nameToPerson)
}
class TrackTogetherTravelService {
+statTogetherTravel(query)
+statSecondTogetherTravel(query)
}
class TogetherLiveInfo {
+queryName
+queryCertNo
+hotelName
+roomNo
+inDateTime
+outDateTime
+coType
+stayCount
}
class HotelStayInfo {
+personName
+personCertNo
+hotelName
+roomNo
+inDateTime
+outDateTime
}
class TravelDataDTO {
+id
+personName
+companionName
+count
}
TrackTogetherLiveService --> TogetherLiveInfo : "读取"
TrackTogetherLiveService --> HotelStayInfo : "读取"
TrackTogetherTravelService --> TravelDataDTO : "生成"
图示来源
关键点:
章节来源
快递数据本身不包含精确地理坐标,但包含收件人、收件电话、寄件人电话、收发地址、运单号和快递公司等信息。服务层将其与人员电话缓存关联,按地址聚合出“某人在某地址收过多少快递、寄过多少快递”,并保留原始记录 ID,便于下钻。
flowchart TD
A["输入:人员姓名、地址关键词"] --> B["根据人员姓名查人员电话集合"]
B --> C["按电话集合查快递明细"]
C --> D["按收件人姓名+地址聚合"]
D --> E["区分收件记录与寄件记录"]
E --> F["按收件数或寄件数排序"]
F --> G["返回地址聚合页"]
图示来源
关键点:
章节来源
轨迹模块依赖三类外部数据:
治理配置:决定当前使用哪一张通话表,支持多环境或多库切换。
graph LR
Person["PersonBasicInfo<br/>人员基础信息"] --> TrackServices["各 Track*Service"]
CallTable["call_record / call_record_all<br/>通话与基站"] --> TrackServices
GovernConf["GovernConfService<br/>治理配置"] --> TrackServices
TrackServices --> Tools["TrackAnalysisTool<br/>Agent 工具"]
图示来源
潜在耦合点:
章节来源
[本节为通用优化建议,不直接分析具体文件]
| 现象 | 可能原因 | 排查方向 |
|---|---|---|
| 基站轨迹为空 | 治理配置表名错误、人员姓名为空、时间范围无数据 | 检查治理配置、人员基础信息、日期范围 |
| 同住结果为空 | 旅馆住宿与同住服务数据未对齐、时间交集不存在 | 检查酒店名称、房间号、入住时间段 |
| 同行关系很少 | 车次号或航班号不一致、时间精度不匹配 | 检查各系统时间格式、车次/航班号标准化 |
| 快递聚合结果异常 | 人员电话缓存为空、同名不同人 | 检查人员电话缓存、改用证件号辅助 |
| 碰面结果过多 | 时间窗口过大、基站定位太宽泛 | 缩小时间窗口、限定 LAC/CID |
| 工具报参数错误 | Agent 传入非数字或非法字段 | 检查 ToolParam 定义,确保日期和数值类型正确 |
章节来源
轨迹模块 track 是一个以“人员—时间—空间—关系”为主线的分析子系统。它并不只是简单列出原始数据,而是围绕基站、住宿、交通、快递等多源数据,提供聚合、去重、关联和可视化的基础能力。
在实际案件中,轨迹数据通常不能单独定案,但能显著增强人员画像、串并分析和行踪还原的可信度。推荐的使用路径是:先按人员和时间范围拉取轨迹,再通过同住、同行、碰面、快递地址找到关联人,最后结合通话、交易进一步验证关系强度。
[本节为总结性内容,不直接分析具体文件]
适用场景:还原目标人员在某段时间内的活动轮廓。
推荐步骤:
参考实现入口:
TrackAnalysisTool.statTrackCellTowerSummaryTrackAnalysisTool.statTrackCellTowerDetailTrackAnalysisTool.statTrackEnLocalSummaryTrackAnalysisTool.statTrackEnLocalDetail章节来源
适用场景:发现目标人员的密切联系人。
推荐步骤:
参考实现入口:
TrackAnalysisTool.stat_together_live_summaryTrackAnalysisTool.stat_together_live_detailTrackAnalysisTool.stat_together_travel_summaryTrackAnalysisTool.stat_together_travel_detail章节来源
适用场景:发现目标人员常驻地、工作地、临时落脚点。
推荐步骤:
参考实现入口:
TrackAnalysisTool.stat_track_cell_tower_summaryTrackAnalysisTool.stat_track_cell_tower_detailTrackAnalysisTool.stat_track_en_local_summary章节来源
适用场景:把住宿、交通、快递、通话基站拼成一条连贯时间线。
推荐步骤:
参考数据结构与表:
together_flight_info、together_train_info、train_ticket_info、flight_ticket_info、flight_departure_info、track_car_ticket_infohotel_stay_info、together_live_infoexpress_infocall_record、call_record_all章节来源