MCPcopy Create free account
hub / github.com/V2RaySSR/RealityChecker / generateBatchReport

Method generateBatchReport

internal/batch/manager.go:234–277  ·  view source on GitHub ↗

generateBatchReport 生成批量报告

(results []*types.DetectionResult, startTime, endTime time.Time)

Source from the content-addressed store, hash-verified

232
233// generateBatchReport 生成批量报告
234func (bm *Manager) generateBatchReport(results []*types.DetectionResult, startTime, endTime time.Time) *types.BatchReport {
235 stats := &types.Statistics{
236 TotalDomains: len(results),
237 }
238
239 for _, result := range results {
240 // 区分技术错误和正常的检测结果
241 if result.Error == nil {
242 // 没有技术错误,检测成功
243 stats.SuccessfulChecks++
244 } else {
245 // 检查是否是正常的检测结果(被墙、国内等)
246 errorMsg := result.Error.Error()
247 if strings.Contains(errorMsg, "域名被墙") || strings.Contains(errorMsg, "国内网站") {
248 // 被墙和国内网站是正常的检测结果,不算失败
249 stats.SuccessfulChecks++
250 } else {
251 // 真正的技术错误
252 stats.FailedChecks++
253 }
254 }
255
256 if result.Suitable {
257 stats.SuitableDomains++
258 }
259
260 if result.Blocked != nil && result.Blocked.IsBlocked {
261 stats.BlockedDomains++
262 }
263 }
264
265 return &types.BatchReport{
266 StartTime: startTime,
267 EndTime: endTime,
268 TotalDuration: endTime.Sub(startTime),
269 Results: results,
270 Statistics: stats,
271 Summary: &types.BatchSummary{
272 SuccessRate: float64(stats.SuccessfulChecks) / float64(stats.TotalDomains),
273 SuitabilityRate: float64(stats.SuitableDomains) / float64(stats.TotalDomains),
274 BlockingRate: float64(stats.BlockedDomains) / float64(stats.TotalDomains),
275 },
276 }
277}
278
279// formatBatchReport 格式化批量报告
280func (bm *Manager) formatBatchReport(report *types.BatchReport) string {

Callers 1

CheckDomainsMethod · 0.95

Calls

no outgoing calls

Tested by

no test coverage detected