diff --git a/internal/domains/api/services/processors/comb/combhzy2_transform.go b/internal/domains/api/services/processors/comb/combhzy2_transform.go index a9b7fda..05dc161 100644 --- a/internal/domains/api/services/processors/comb/combhzy2_transform.go +++ b/internal/domains/api/services/processors/comb/combhzy2_transform.go @@ -298,17 +298,24 @@ type targetReport struct { // reportSummary 对应 target.json 中 reportSummary 节点 type reportSummary struct { - RuleValidation summaryItem `json:"ruleValidation"` - AntiFraudScore summaryItem `json:"antiFraudScore"` - AntiFraudRule summaryItem `json:"antiFraudRule"` - AbnormalRulesHit abnormalHit `json:"abnormalRulesHit"` + RuleValidation summaryRuleValidation `json:"ruleValidation"` + AntiFraudScore summaryAntiFraudScore `json:"antiFraudScore"` + AntiFraudRule summaryAntiFraudRule `json:"antiFraudRule"` + AbnormalRulesHit abnormalHit `json:"abnormalRulesHit"` } -// summaryItem 统一描述包含 code/result/level 的子项 -type summaryItem struct { +type summaryRuleValidation struct { Code string `json:"code,omitempty"` Result string `json:"result,omitempty"` - Level string `json:"level,omitempty"` +} + +type summaryAntiFraudScore struct { + Level string `json:"level,omitempty"` +} + +type summaryAntiFraudRule struct { + Level string `json:"level,omitempty"` + Code string `json:"code,omitempty"` } // abnormalHit 表示异常规则汇总 @@ -336,17 +343,62 @@ type verificationItem struct { // riskIdentification 对应 target.json 中 riskIdentification 节点 type riskIdentification struct { - Title string `json:"title"` - CaseAnnouncements announcementSection `json:"caseAnnouncements"` - EnforcementAnnouncements announcementSection `json:"enforcementAnnouncements"` - DishonestAnnouncements announcementSection `json:"dishonestAnnouncements"` - HighConsumptionRestrictionAnn announcementSection `json:"highConsumptionRestrictionAnnouncements"` + Title string `json:"title"` + CaseAnnouncements caseAnnouncementSection `json:"caseAnnouncements"` + EnforcementAnnouncements enforcementAnnouncementSection `json:"enforcementAnnouncements"` + DishonestAnnouncements dishonestAnnouncementSection `json:"dishonestAnnouncements"` + HighConsumptionRestrictionAnn highRestrictionAnnouncementSection `json:"highConsumptionRestrictionAnnouncements"` } -// announcementSection 统一封装列表标题与记录 -type announcementSection struct { - Title string `json:"title"` - Records []map[string]string `json:"records"` +type caseAnnouncementSection struct { + Title string `json:"title"` + Records []caseAnnouncementRecord `json:"records"` +} + +type caseAnnouncementRecord struct { + CaseNumber string `json:"caseNumber"` + CaseType string `json:"caseType"` + FilingDate string `json:"filingDate"` + Authority string `json:"authority"` +} + +type enforcementAnnouncementSection struct { + Title string `json:"title"` + Records []enforcementAnnouncementRecord `json:"records"` +} + +type enforcementAnnouncementRecord struct { + CaseNumber string `json:"caseNumber"` + TargetAmount string `json:"targetAmount"` + FilingDate string `json:"filingDate"` + Court string `json:"court"` + Status string `json:"status"` +} + +type dishonestAnnouncementSection struct { + Title string `json:"title"` + Records []dishonestAnnouncementRecord `json:"records"` +} + +type dishonestAnnouncementRecord struct { + DishonestPerson string `json:"dishonestPerson"` + IdCard string `json:"idCard"` + Court string `json:"court"` + FilingDate string `json:"filingDate"` + PerformanceStatus string `json:"performanceStatus"` +} + +type highRestrictionAnnouncementSection struct { + Title string `json:"title"` + Records []highRestrictionAnnouncementRecord `json:"records"` +} + +type highRestrictionAnnouncementRecord struct { + RestrictedPerson string `json:"restrictedPerson"` + IdCard string `json:"idCard"` + Court string `json:"court"` + StartDate string `json:"startDate"` + Measure string `json:"measure"` } // creditAssessment 对应 target.json 中 creditAssessment 节点 @@ -482,16 +534,16 @@ func buildReportSummary(ctx *sourceContext) reportSummary { const strategyCode = "STR0042314/贷前-经营性租赁全量策略" summary := reportSummary{ - RuleValidation: summaryItem{ + RuleValidation: summaryRuleValidation{ Code: strategyCode, Result: "未命中", }, - AntiFraudScore: summaryItem{ + AntiFraudScore: summaryAntiFraudScore{ Level: "未命中", }, - AntiFraudRule: summaryItem{ - Code: strategyCode, + AntiFraudRule: summaryAntiFraudRule{ Level: "未命中", + Code: strategyCode, }, AbnormalRulesHit: abnormalHit{ Count: 0, @@ -637,21 +689,21 @@ func buildBasicInfo(ctx *sourceContext) reportBasicInfo { func buildRiskIdentification(ctx *sourceContext) riskIdentification { identification := riskIdentification{ Title: "风险识别产品", - CaseAnnouncements: announcementSection{ + CaseAnnouncements: caseAnnouncementSection{ Title: "涉案公告列表", - Records: []map[string]string{}, + Records: make([]caseAnnouncementRecord, 0), }, - EnforcementAnnouncements: announcementSection{ + EnforcementAnnouncements: enforcementAnnouncementSection{ Title: "执行公告列表", - Records: []map[string]string{}, + Records: make([]enforcementAnnouncementRecord, 0), }, - DishonestAnnouncements: announcementSection{ + DishonestAnnouncements: dishonestAnnouncementSection{ Title: "失信公告列表", - Records: []map[string]string{}, + Records: make([]dishonestAnnouncementRecord, 0), }, - HighConsumptionRestrictionAnn: announcementSection{ + HighConsumptionRestrictionAnn: highRestrictionAnnouncementSection{ Title: "限高公告列表", - Records: []map[string]string{}, + Records: make([]highRestrictionAnnouncementRecord, 0), }, } @@ -667,7 +719,7 @@ func buildRiskIdentification(ctx *sourceContext) riskIdentification { baseID = ctx.BaseData.BaseInfo.IdCard } - caseRecords := make([]map[string]string, 0) + caseRecords := make([]caseAnnouncementRecord, 0) caseRecords = append(caseRecords, convertCaseAnnouncements(stat.Civil.Cases, "民事案件")...) caseRecords = append(caseRecords, convertCaseAnnouncements(stat.Criminal.Cases, "刑事案件")...) caseRecords = append(caseRecords, convertCaseAnnouncements(stat.Administrative.Cases, "行政案件")...) @@ -1431,21 +1483,18 @@ func pickFirstFloat(contents map[string]string, keys ...string) float64 { } // convertCaseAnnouncements 转换各类案件记录为 target 所需的涉案公告结构 -func convertCaseAnnouncements(cases []judicialCase, defaultType string) []map[string]string { - if len(cases) == 0 { - return nil - } - records := make([]map[string]string, 0, len(cases)) +func convertCaseAnnouncements(cases []judicialCase, defaultType string) []caseAnnouncementRecord { + records := make([]caseAnnouncementRecord, 0, len(cases)) for _, c := range cases { caseType := defaultType if caseType == "" { caseType = caseTypeName(c.CaseType) } - record := map[string]string{ - "caseNumber": c.CaseNumber, - "authority": c.Court, - "filingDate": c.FilingDate, - "caseType": caseType, + record := caseAnnouncementRecord{ + CaseNumber: c.CaseNumber, + Authority: c.Court, + FilingDate: c.FilingDate, + CaseType: caseType, } records = append(records, record) } @@ -1453,18 +1502,15 @@ func convertCaseAnnouncements(cases []judicialCase, defaultType string) []map[st } // convertEnforcementAnnouncements 转换执行案件数据为执行公告列表 -func convertEnforcementAnnouncements(cases []judicialCase) []map[string]string { - if len(cases) == 0 { - return nil - } - records := make([]map[string]string, 0, len(cases)) +func convertEnforcementAnnouncements(cases []judicialCase) []enforcementAnnouncementRecord { + records := make([]enforcementAnnouncementRecord, 0, len(cases)) for _, c := range cases { - record := map[string]string{ - "caseNumber": c.CaseNumber, - "targetAmount": formatCurrencyYuan(c.ApplyAmount), - "filingDate": c.FilingDate, - "court": c.Court, - "status": defaultIfEmpty(c.CaseStatus, "-"), + record := enforcementAnnouncementRecord{ + CaseNumber: c.CaseNumber, + TargetAmount: formatCurrencyYuan(c.ApplyAmount), + FilingDate: c.FilingDate, + Court: c.Court, + Status: defaultIfEmpty(c.CaseStatus, "-"), } records = append(records, record) } @@ -1472,18 +1518,15 @@ func convertEnforcementAnnouncements(cases []judicialCase) []map[string]string { } // convertDishonestAnnouncements 将失信记录转为失信公告列表 -func convertDishonestAnnouncements(items []breachCase, name, id string) []map[string]string { - if len(items) == 0 { - return nil - } - records := make([]map[string]string, 0, len(items)) +func convertDishonestAnnouncements(items []breachCase, name, id string) []dishonestAnnouncementRecord { + records := make([]dishonestAnnouncementRecord, 0, len(items)) for _, item := range items { - record := map[string]string{ - "dishonestPerson": name, - "idCard": id, - "court": item.ExecutiveCourt, - "filingDate": defaultIfEmpty(item.FileDate, item.IssueDate), - "performanceStatus": defaultIfEmpty(item.FulfillStatus, "-"), + record := dishonestAnnouncementRecord{ + DishonestPerson: name, + IdCard: id, + Court: item.ExecutiveCourt, + FilingDate: defaultIfEmpty(item.FileDate, item.IssueDate), + PerformanceStatus: defaultIfEmpty(item.FulfillStatus, "-"), } records = append(records, record) } @@ -1491,18 +1534,15 @@ func convertDishonestAnnouncements(items []breachCase, name, id string) []map[st } // convertConsumptionRestrictions 将限高记录转为限高公告列表 -func convertConsumptionRestrictions(items []consumptionRestriction, name, id string) []map[string]string { - if len(items) == 0 { - return nil - } - records := make([]map[string]string, 0, len(items)) +func convertConsumptionRestrictions(items []consumptionRestriction, name, id string) []highRestrictionAnnouncementRecord { + records := make([]highRestrictionAnnouncementRecord, 0, len(items)) for _, item := range items { - record := map[string]string{ - "restrictedPerson": name, - "idCard": id, - "court": item.ExecutiveCourt, - "startDate": item.IssueDate, - "measure": "限制高消费", + record := highRestrictionAnnouncementRecord{ + RestrictedPerson: name, + IdCard: id, + Court: item.ExecutiveCourt, + StartDate: item.IssueDate, + Measure: "限制高消费", } records = append(records, record) }