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
}
