Add vendor assessment agent

Signed-off-by: Aurélien Sibiril <81782+aureliensibiril@users.noreply.github.com>
This commit is contained in:
Aurélien Sibiril
2026-04-22 22:36:14 +02:00
parent 25c590ffe6
commit 509d0c88b1
108 changed files with 9445 additions and 645 deletions

View File

@@ -614,6 +614,13 @@ input CreateVendorRiskAssessmentInput {
input AssessVendorInput {
id: ID!
websiteUrl: String!
procedure: String
}
type VendorSubprocessor {
name: String!
country: String!
purpose: String!
}
type CreateVendorPayload {
@@ -690,4 +697,6 @@ type CreateVendorRiskAssessmentPayload {
type AssessVendorPayload {
vendor: Vendor!
report: String!
subprocessors: [VendorSubprocessor!]!
}

View File

@@ -18,6 +18,7 @@ import (
"go.probo.inc/probo/pkg/coredata"
"go.probo.inc/probo/pkg/gid"
"go.probo.inc/probo/pkg/page"
"go.probo.inc/probo/pkg/probo"
)
type (
@@ -103,3 +104,15 @@ func NewVendor(v *coredata.Vendor) *Vendor {
return object
}
func NewVendorSubprocessors(sps []probo.Subprocessor) []*VendorSubprocessor {
result := make([]*VendorSubprocessor, len(sps))
for i, sp := range sps {
result[i] = &VendorSubprocessor{
Name: sp.Name,
Country: sp.Country,
Purpose: sp.Purpose,
}
}
return result
}

View File

@@ -541,20 +541,27 @@ func (r *mutationResolver) AssessVendor(ctx context.Context, input types.AssessV
prb := r.ProboService(ctx, input.ID.TenantID())
vendor, err := prb.Vendors.Assess(
result, err := prb.Vendors.Assess(
ctx,
probo.AssessVendorRequest{
ID: input.ID,
WebsiteURL: input.WebsiteURL,
Procedure: input.Procedure,
},
)
if err != nil {
if errors.Is(err, probo.ErrVendorAssessmentDisabled) {
return nil, gqlutils.Unavailable(ctx, probo.ErrVendorAssessmentDisabled)
}
r.logger.ErrorCtx(ctx, "cannot assess vendor", log.Error(err))
return nil, gqlutils.Internal(ctx)
}
return &types.AssessVendorPayload{
Vendor: types.NewVendor(vendor),
Vendor: types.NewVendor(result.Vendor),
Report: result.Report,
Subprocessors: types.NewVendorSubprocessors(result.Subprocessors),
}, nil
}