From a218979cd7f6a074dff203ddd73e9eeb915e4343 Mon Sep 17 00:00:00 2001 From: yokowu <18836617@qq.com> Date: Fri, 8 Aug 2025 15:45:12 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=89=AB=E6=8F=8F=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BB=A3=E7=A0=81=E5=8E=9F=E6=96=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/Makefile | 3 --- backend/doc.go | 1 + backend/domain/security.go | 3 +++ backend/internal/security/repo/security.go | 24 +++++++++++++++++++++- backend/pro | 2 +- 5 files changed, 28 insertions(+), 5 deletions(-) create mode 100644 backend/doc.go diff --git a/backend/Makefile b/backend/Makefile index b8de149..8c66c22 100644 --- a/backend/Makefile +++ b/backend/Makefile @@ -24,9 +24,6 @@ image: . wire: - wire cmd/server/wire.go cmd/server/main.go - -wire-pro: wire pro/cmd/server/wire.go pro/cmd/server/main.go wire-scanner: diff --git a/backend/doc.go b/backend/doc.go new file mode 100644 index 0000000..2480943 --- /dev/null +++ b/backend/doc.go @@ -0,0 +1 @@ +package backend diff --git a/backend/domain/security.go b/backend/domain/security.go index fc6e9d0..3fe3e0c 100644 --- a/backend/domain/security.go +++ b/backend/domain/security.go @@ -84,6 +84,7 @@ type SecurityScanningResult struct { Status consts.SecurityScanningStatus `json:"status"` // 扫描状态 Risk SecurityScanningRiskResult `json:"risk"` // 风险结果 User *User `json:"user"` // 用户 + Error string `json:"error"` // 错误信息 CreatedAt int64 `json:"created_at"` // 扫描开始时间 } @@ -98,6 +99,7 @@ func (s *SecurityScanningResult) From(e *db.SecurityScanning) *SecurityScanningR s.Path = e.Workspace s.Status = e.Status s.User = cvt.From(e.Edges.User, &User{}) + s.Error = e.ErrorMessage s.CreatedAt = e.CreatedAt.Unix() return s @@ -119,6 +121,7 @@ type SecurityScanningRiskDetail struct { End *types.Position `json:"end"` // 风险代码行结束位置 Fix string `json:"fix"` // 修复建议 Filename string `json:"filename"` // 风险文件名 + Content string `json:"content"` // 代码内容 } func (s *SecurityScanningRiskDetail) GetRiskLevelPriority() int { diff --git a/backend/internal/security/repo/security.go b/backend/internal/security/repo/security.go index ca14810..98cc4c6 100644 --- a/backend/internal/security/repo/security.go +++ b/backend/internal/security/repo/security.go @@ -214,6 +214,11 @@ func (s *SecurityScanningRepo) Detail(ctx context.Context, userID, id string) ([ return nil, err } + scanning, err := s.db.SecurityScanning.Get(ctx, sid) + if err != nil { + return nil, err + } + q := s.db.SecurityScanningResult.Query(). Where(securityscanningresult.SecurityScanningID(sid)) @@ -232,8 +237,25 @@ func (s *SecurityScanningRepo) Detail(ctx context.Context, userID, id string) ([ return nil, err } + paths := cvt.Iter(scannings, func(_ int, r *db.SecurityScanningResult) string { + p := strings.ReplaceAll(r.Path, scanning.Workspace, "") + return strings.TrimPrefix(p, "/") + }) + + fs, err := s.db.WorkspaceFile.Query().Where(workspacefile.PathIn(paths...)).All(ctx) + if err != nil { + return nil, err + } + cnts := cvt.IterToMap(fs, func(_ int, f *db.WorkspaceFile) (string, string) { + return f.Path, f.Content + }) + rs := cvt.Iter(scannings, func(_ int, r *db.SecurityScanningResult) *domain.SecurityScanningRiskDetail { - return cvt.From(r, &domain.SecurityScanningRiskDetail{}) + p := strings.ReplaceAll(r.Path, scanning.Workspace, "") + p = strings.TrimPrefix(p, "/") + return cvt.From(r, &domain.SecurityScanningRiskDetail{ + Content: cnts[p], + }) }) domain.SortRiskDetailsByLevel(rs) return rs, nil diff --git a/backend/pro b/backend/pro index 7e827cc..9198ded 160000 --- a/backend/pro +++ b/backend/pro @@ -1 +1 @@ -Subproject commit 7e827ccf416d1c15d7211058134d710bc10ee2dd +Subproject commit 9198dedc924921e06648590c8fc11b41d932dfdf