本文引用的文件
本文面向后端人员和画像相关接口的使用者,重点说明以下能力:
人员数据接口主要分布在后端 ai-server 模块的 com.zsjz.ai.module.person.controller 包中,并由前端 ai-electron/frontend/src/person/api 调用:
PersonBasicInfoControllerPersonGroupControllerIntimacyControllerResidentPopulationControllerDataProfileController前端 API:
personApi.ts:封装人员基本信息、分组、亲密度等接口。dpApi.ts:封装数据画像接口。types/query.ts、types/dto.ts:定义查询条件和响应类型。
graph TB
subgraph "前端"
PersonAPI["personApi.ts"]
DpAPI["dpApi.ts"]
TypesQ["types/query.ts"]
TypesDTO["types/dto.ts"]
end
subgraph "后端控制器"
PbiCtrl["PersonBasicInfoController<br/>/pbi"]
PgCtrl["PersonGroupController<br/>/pg"]
IntCtrl["IntimacyController<br/>/intimacy"]
RpCtrl["ResidentPopulationController<br/>/rp"]
DpCtrl["DataProfileController<br/>/dp"]
end
PersonAPI --> PbiCtrl
PersonAPI --> PgCtrl
PersonAPI --> IntCtrl
DpAPI --> DpCtrl
TypesQ --> DpAPI
TypesDTO --> DpAPI
图表来源
章节来源
| 控制器 | 基础路径 | 职责 | 关键能力 |
|---|---|---|---|
| 人员基本信息控制器 | /pbi |
管理 PersonBasicInfo |
创建、删除、更新、查询人员列表、排序 |
| 人员分组控制器 | /pg |
管理 PersonGroup 及人员分组关系 |
分组增删改查、添加人员、移除人员、设置主成员 |
| 亲密度控制器 | /intimacy |
管理亲密度配置 | 获取亲密度列表、批量修改亲密度 |
| 常住人口控制器 | /rp |
常住人口相关服务入口 | 当前代码未暴露具体接口方法,需以实际新增方法为准 |
| 数据画像控制器 | /dp |
人员画像统计分析 | 通话统计、最常联系 TOP10、通话站点、通话记录汇总、运营商手机号;交易统计、最常交易 TOP10、交易记录汇总、对方名称分页、银行卡信息、月度年度趋势、亲密度汇总 |
章节来源
所有接口统一返回 Result<T> 包装结构,成功时携带业务数据,失败时通过状态码和消息描述错误。常见语义如下:
由于本文聚焦接口契约,不直接输出后端 Result 类源码,调用方应基于前端类型定义和实际响应体判断业务结果。
分页接口通常返回 MyBatis-Plus 的 Page<T> 结构,典型字段包括:
records:当前页数据列表。total:总记录数。current:当前页码。size:每页数量。pages:总页数。分页请求一般由 Query 或具体查询 DTO 传入页码、每页数量、过滤条件。
章节来源
POST/pbi/createPersonBasicInfoDTOResult<Void>章节来源
GET/pbi/deletepersonNameResult<Void>章节来源
POST/pbi/updatePersonBasicInfoDTOResult<Void>章节来源
GET/pbi/getPersonsResult<List<PersonBasicInfo>>章节来源
POST/pbi/personOrderList<PersonBasicInfo>Result<Void>章节来源
GET/pg/listResult<List<PersonGroup>>章节来源
POST/pg/createPersonGroupResult<Void>章节来源
POST/pg/updatePersonGroupResult<Void>章节来源
POST/pg/deleteDeletePersonGroupDTO,包含 idResult<Void>章节来源
POST/pg/addPersonAddPersonGroupDTOResult<Void>章节来源
GET/pg/remPersonrelIdResult<Void>章节来源
GET/pg/changeMainrelId、groupIdResult<Void>章节来源
GET/intimacy/listResult<List<Intimacy>>章节来源
POST/intimacy/modifyList<Intimacy>Result<Void>章节来源
当前 ResidentPopulationController 仅声明基础路径 /rp 并注入服务,但未暴露具体接口方法。若后续扩展,新增方法会继承该基础路径。
章节来源
GET/dp/callStatpersonNameResult<CallDataProfileStatDTO>章节来源
POST/dp/callOftenTop10CallOftenTop10QueryResult<Page<CallOftenTop10DTO>>章节来源
POST/dp/callStatStationCallStatStationQueryResult<List<CallStatStationDTO>>章节来源
POST/dp/getCallRecordSummaryCallRecordSummaryQueryResult<Page<CallRecordSummaryDTO>>章节来源
POST/dp/getCallOperPhoneInfoCallOperPhoneInfoQueryResult<List<CallOpenInfo>>章节来源
GET/dp/transStatpersonNameResult<TransDataProfileStatDTO>章节来源
POST/dp/transOfPersonsTransOftenTop10QueryResult<Page<TransOftenTop10DTO>>章节来源
POST/dp/getTransRecordSummaryTransRecordSummaryQueryResult<Page<TransRecordSummaryDTO>>章节来源
GET/dp/getTransOtherNameQuery,包含页码、每页数量、人员姓名、对方名称等Result<Page<String>>章节来源
POST/dp/getTransBankCardInfoTransBankCardInfoQueryResult<List<TransBankCardInfoDTO>>章节来源
POST/dp/transAmountTrendYMTransTrendQueryResult<List<TransTrendDTO>>章节来源
POST/dp/transAmountTrendYTransTrendQueryResult<List<TransTrendDTO>>章节来源
GET/dp/intimacySummarypersonNameResult<List<IntimacyDTO>>章节来源
人员数据并非孤立存在,而是围绕“人员”这一主体,与通话、交易、轨迹、治理树等数据形成关联:
erDiagram
PERSON {
string person_name PK
string phone
string card_no
string id_card
string group_id
timestamp created_at
timestamp updated_at
}
PERSON_GROUP {
long id PK
string name
string description
}
CALL_RECORD {
long id PK
string caller
string callee
string person_name
timestamp call_time
string base_station
}
TRANSACTION {
long id PK
string person_name
string bank_card
string other_name
decimal amount
string trans_type
timestamp trans_time
}
TRAJECTORY {
long id PK
string person_name
string location
timestamp time
}
GOVERN_TREE {
long id PK
string person_name
string node_label
string relation_type
}
PERSON ||--o{ PERSON_GROUP : "属于"
PERSON ||--o{ CALL_RECORD : "发起或接听"
PERSON ||--o{ TRANSACTION : "参与"
PERSON ||--o{ TRAJECTORY : "出现于"
PERSON ||--o{ GOVERN_TREE : "构成节点"
PersonGroup 将人员归类,支持主成员标记和关系 ID 管理。personName、caller、callee 等字段关联通话记录,用于统计最常联系人、通话站点、通话汇总。personName、bank_card、other_name 关联交易数据,用于交易统计、最常交易对象、银行卡详情、趋势分析。personName 关联轨迹数据,结合基站、地点和时间分析活动范围。人员与治理树:通过 personName 和关系类型构建治理树,用于案件分析和关系图谱。
sequenceDiagram
participant Client as "调用方"
participant DataProfile as "DataProfileController"
participant Service as "DataProfileService"
participant CallModel as "通话模型"
participant TransModel as "交易模型"
Client->>DataProfile: GET /dp/callStat?personName=张三
DataProfile->>Service: callInfoStat(personName)
Service->>CallModel: 查询通话统计
CallModel-->>Service: 通话统计结果
Service-->>DataProfile: CallDataProfileStatDTO
DataProfile-->>Client: Result<CallDataProfileStatDTO>
Client->>DataProfile: POST /dp/transOfPersons
DataProfile->>Service: transOfPersons(query)
Service->>TransModel: 查询交易统计
TransModel-->>Service: 分页交易 TOP10
Service-->>DataProfile: Page<TransOftenTop10DTO>
DataProfile-->>Client: Result<Page<TransOftenTop10DTO>>
图表来源
章节来源
人员数据中包含姓名、电话、身份证号、银行卡号、地址等敏感信息,安全处理建议如下:
后端脱敏策略
前端展示策略
接口层控制
前端敏感字段处理可参考通用工具逻辑,并在人员画像页面中对电话、卡号、身份证等字段做脱敏展示。
章节来源
以下为常用 curl 示例,请根据实际服务地址替换 BASE_URL,并准备正确的登录态或鉴权头。
curl --location --request GET "BASE_URL/pbi/getPersons"
curl --location --request GET "BASE_URL/dp/callStat?personName=张三"
curl --location --request POST "BASE_URL/dp/callOftenTop10" \
--header "Content-Type: application/json" \
--data '{"personName":"张三","startTime":"","endTime":"","page":1,"size":10}'
curl --location --request GET "BASE_URL/dp/transStat?personName=张三"
curl --location --request POST "BASE_URL/dp/transOfPersons" \
--header "Content-Type: application/json" \
--data '{"personName":"张三","startTime":"","endTime":"","page":1,"size":10}'
curl --location --request GET "BASE_URL/dp/getTransOtherName?page=1&size=10&personName=张三&otherName="
curl --location --request GET "BASE_URL/dp/intimacySummary?personName=张三"
注意:以上请求体中的字段名来源于前端类型定义与服务端查询 DTO 的对应关系。若实际字段存在差异,请以服务端实现和前端类型为准。
章节来源
/pbi/getPersons 确认该人员是否存在。personName 是否与系统中存储的姓名完全一致。章节来源
/pg/list 确认是否存在分组。/pg/create 创建分组。/pg/addPerson 将人员加入分组,注意请求体是否为 AddPersonGroupDTO。relId 是否正确,必要时通过 /pg/remPerson 和 /pg/changeMain 调整关系。章节来源
/dp/intimacySummary 返回空列表。/intimacy/list 确认亲密度配置是否存在。/intimacy/modify 批量写入亲密度规则。章节来源
personName、时间范围、交易类型、金额等过滤条件。page、size 是否合法。章节来源
[本节为通用建议,不直接分析具体源码]
人员数据接口以“人员”为中心,向上提供基本信息、分组管理和亲密度配置,向下支撑通话、交易、轨迹、治理树等多维业务数据的画像分析。调用方应重点关注:
Page 响应结构。在实际集成时,建议先验证人员存在性和分组有效性,再调用画像接口,并对分页、缓存、脱敏做系统化设计。
[本节为总结性内容,不直接分析具体源码]