90284c04 日志埋点说明与 D4 指标实现90284c04369fa9c0e3da56c3bae0cd05e9ee6747feat: 添加日志记录功能以跟踪分支合并和文件评审任务pom.xmlweb/src/main/java/cn/seecoder/web/service/impl/code_review/BranchReviewServiceImpl.javaweb/src/main/java/cn/seecoder/web/service/impl/code_review/FileReviewServiceImpl.javaweb/src/main/java/cn/seecoder/web/service/impl/message/MessageServiceImpl.java在 pom.xml 中新增依赖:
<dependency>
<groupId>cn.seecoder</groupId>
<artifactId>SeecoderLog</artifactId>
<version>0.2.0-jdk8-SNAPSHOT</version>
</dependency>
在上述 3 个业务服务类中引入日志工具:
import cn.seecoder.seecoderlog.utils.SeecoderLogUtils;
| 事件(bizName) | 级别 | 触发位置 | 含义 |
|---|---|---|---|
D4_TASK_ASSIGNED |
info | 文件评审创建后 | 记录协作任务分配 |
D4_TASK_COMPLETED |
info | 分支合并成功 / 文件评审通过 | 记录协作任务完成 |
D4_COLLAB_EFFECTIVE |
info | 分支合并成功 / 文件评审通过 | 记录一次有效协作 |
D4_COLLAB_CONFLICT_CREATED |
warn / error | 分支合并异常 / 文件评审返工 | 记录协作冲突或失败 |
D4_COLLAB_CONFLICT_RESOLVED |
info | 文件评审从返工状态转为通过 | 记录冲突被解决 |
D4_COMM_MESSAGE_SENT |
info | 站内消息创建后 | 记录沟通发起 |
D4_COMM_MESSAGE_RESPONSE |
info | 站内消息已读后 | 记录沟通响应与耗时 |
BranchReviewServiceImplD4_TASK_COMPLETED
taskType=branchReviewtaskIdprojectIdoperatorIdtaskDurationMs=当前时间-任务创建时间completedTsD4_COLLAB_EFFECTIVE
source=branchReviewMergetaskIdprojectIdoperatorIdts在捕获 SeecoderGitlabException 时:
D4_COLLAB_CONFLICT_CREATED(warn)
conflictType=branchMergetaskIdprojectIdoperatorIdreason=异常类名tsD4_COLLAB_CONFLICT_CREATED(error,带异常堆栈)
conflictType=branchMergetaskIdprojectIdoperatorId说明:同一个冲突事件使用 warn + error 记录,warn 用于指标统计,error 用于排障追踪。
FileReviewServiceImplD4_TASK_ASSIGNED
taskType=fileReviewtaskIdprojectIdcreatorIdreviewerCountcreatedTs当有评审人选择返工时:
D4_COLLAB_CONFLICT_CREATED(warn)
conflictType=fileReviewReworktaskIdprojectIdreviewerIdtsD4_TASK_COMPLETED
taskType=fileReviewtaskIdprojectIdreviewerIdtaskDurationMs=当前时间-任务创建时间completedTsD4_COLLAB_EFFECTIVE
source=fileReviewPasstaskIdprojectIdtsD4_COLLAB_CONFLICT_RESOLVED(仅当此前状态为 REWORK)
conflictType=fileReviewReworktaskIdprojectIdresolverIdtsMessageServiceImplD4_COMM_MESSAGE_SENT
messageIdcreatorIdreceiverIdlinkTotsD4_COMM_MESSAGE_RESPONSE
messageIdcreatorIdreceiverIdresponseMs=readTs-消息创建时间readTs可由以下事件构成统计闭环:
D4_TASK_ASSIGNEDD4_TASK_COMPLETED建议口径:
协作任务完成率 = 完成任务数 / 分配任务数taskType、projectId、creatorId、reviewerId、operatorId按时能力建议扩展:
taskDurationMs 与 SLA 阈值统计按时完成率按时完成率 = taskDurationMs <= SLA 的完成任务数 / 完成任务总数当前提交中,
D4_TASK_ASSIGNED已覆盖 fileReview;branchReview 若需独立完成率闭环,后续可补充 branchReview 的分配/创建埋点。
D4_COMM_MESSAGE_RESPONSEresponseMsavg(responseMs)D4_COLLAB_EFFECTIVEsource=branchReviewMergesource=fileReviewPasscount(*)(可按 source/projectId/taskId 分维)D4_COLLAB_CONFLICT_CREATEDD4_COLLAB_CONFLICT_RESOLVED协作冲突解决次数 = count(D4_COLLAB_CONFLICT_RESOLVED)冲突解决率 = resolved / created| 参数 | 类型建议 | 含义 | 常见事件 |
|---|---|---|---|
taskId |
long | 协作任务 ID | TASK_ASSIGNED / TASKCOMPLETED / COLLAB* |
taskType |
enum/string | 任务类型(fileReview/branchReview) |
TASK_ASSIGNED / TASK_COMPLETED |
projectId |
long | 项目 ID | 大多数任务事件 |
creatorId |
long | 发起人/创建人 | TASKASSIGNED / COMM* |
reviewerId |
long | 评审人 | TASK_COMPLETED / CONFLICT_CREATED |
operatorId |
long | 操作执行人 | 分支合并相关 |
resolverId |
long | 冲突解决人 | CONFLICT_RESOLVED |
reviewerCount |
int | 评审人数 | TASK_ASSIGNED |
messageId |
long | 消息 ID | COMM_* |
linkTo |
string | 消息跳转链接 | COMM_MESSAGE_SENT |
createdTs |
long(ms) | 任务创建时间 | TASK_ASSIGNED |
completedTs |
long(ms) | 任务完成时间 | TASK_COMPLETED |
readTs |
long(ms) | 消息读取时间 | COMM_MESSAGE_RESPONSE |
ts |
long(ms) | 事件发生时间 | 多数事件 |
taskDurationMs |
long(ms) | 任务耗时 | TASK_COMPLETED |
responseMs |
long(ms) | 消息响应耗时 | COMM_MESSAGE_RESPONSE |
source |
string | 有效协作来源 | COLLAB_EFFECTIVE |
conflictType |
string | 冲突类型(branchMerge/fileReviewRework) |
CONFLICT_CREATED/RESOLVED |
reason |
string | 冲突/异常原因 | CONFLICT_CREATED |
D4_协作任务完成率
count(D4_TASK_COMPLETED)count(D4_TASK_ASSIGNED)D4_沟通平均响应耗时
avg(responseMs) from D4_COMM_MESSAGE_RESPONSED4_有效协作次数
count(D4_COLLAB_EFFECTIVE)D4_冲突解决次数
count(D4_COLLAB_CONFLICT_RESOLVED)D4_冲突解决率(建议)
count(RESOLVED) / count(CREATED)bizName 已按 D4 统计语义区分,支持按事件直接过滤聚合。context 透传,便于后续扩展统计维度。D4_TASK_ASSIGNED。