40 lines
1.2 KiB
Go
40 lines
1.2 KiB
Go
package pierre
|
||
|
||
import (
|
||
"context"
|
||
"fmt"
|
||
"io"
|
||
|
||
"bitbucket.bit.admin.ch/scm/~u80859501/pierre-bot/internal/chatter"
|
||
)
|
||
|
||
type Comment struct {
|
||
File string `json:"file"`
|
||
Line int `json:"line"`
|
||
Message string `json:"message"`
|
||
}
|
||
|
||
func (s *Service) judgePR(ctx context.Context, diff io.Reader) (comments []Comment, err error) {
|
||
diffBytes, err := io.ReadAll(diff)
|
||
if err != nil {
|
||
return nil, fmt.Errorf("failed to read diff: %w", err)
|
||
}
|
||
err = s.chat.GenerateStructured(ctx, []chatter.Message{
|
||
{
|
||
Role: chatter.RoleSystem,
|
||
Content: `
|
||
You are a very strict senior software architect.
|
||
You review **only** newly added or modified lines in a unified diff, together with the immediate hunk context.
|
||
You do **not** report issues that appear **solely** in deleted lines (“-”) or that have already been fixed by the change.
|
||
No comments are made on pure formatting/whitespace changes or reordering that does not alter the program’s behavior.
|
||
`,
|
||
},
|
||
{
|
||
Role: chatter.RoleUser,
|
||
Content: fmt.Sprintf("Hello please review my PR. Write comments where improvements are necessary in new lines.\n Here is the git diff of it: %s", string(diffBytes)),
|
||
},
|
||
}, &comments)
|
||
|
||
return
|
||
}
|