feat: add usage informations as placeholders

This commit is contained in:
wpetit 2025-02-23 20:15:40 +01:00
parent 59c9737ae2
commit b44701fbb7
2 changed files with 61 additions and 28 deletions

View File

@ -9,6 +9,7 @@ import (
"github.com/pkg/errors"
"github.com/yuin/goldmark"
"log/slog"
"strings"
)
type IssuePageVModel struct {
@ -20,6 +21,16 @@ type IssuePageVModel struct {
SelectedProjectID string
}
const summaryPlaceholder = `
Décrivez rapidement le sujet du problème rencontré ou de l'évolution souhaitée, ClearCase utilisera le modèle de demande présent dans le dépôt (ou un modèle par défaut) afin de générer une version mise en forme et complétée.
Afin de fournir plus d'information de contexte au LLM, vous pouvez faire référence à d'autres tickets du dépôt via un ou plusieurs '#<issue_id>' et/ou des chemins vers des fichiers présents dans celui ci.
`
const bodyPlaceholder = `
Une fois votre demande générée, vous pourrez l'éditer puis la créer directement en cliquant sur le bouton 'Créer' ci-dessous.
`
func NewIssueSummaryForm() *form.Form {
return form.New(
form.NewField(
@ -32,9 +43,9 @@ func NewIssueSummaryForm() *form.Form {
form.Attrs{
"type": "textarea",
"rows": "20",
"placeholder": "Décrivez rapidement le sujet du problème rencontré ou de l'évolution souhaitée...",
"placeholder": strings.TrimSpace(summaryPlaceholder),
},
form.NonEmpty("Ce champs ne doit pas être vide."),
form.NonEmpty("Ce champ ne doit pas être vide."),
),
)
}
@ -44,17 +55,19 @@ func NewIssueForm() *form.Form {
form.NewField(
"title",
form.Attrs{
"type": "text",
"type": "text",
"placeholder": "Écrivez le résumé de votre demande et cliquez sur 'Générer' pour remplir automatiquement ces champs.",
},
form.NonEmpty("Ce champs ne doit pas être vide."),
form.NonEmpty("Ce champ ne doit pas être vide."),
),
form.NewField(
"body",
form.Attrs{
"type": "textarea",
"rows": "20",
"type": "textarea",
"rows": "20",
"placeholder": strings.TrimSpace(bodyPlaceholder),
},
form.NonEmpty("Ce champs ne doit pas être vide."),
form.NonEmpty("Ce champ ne doit pas être vide."),
),
)
}
@ -63,8 +76,15 @@ templ IssuePage(vmodel IssuePageVModel) {
@common.Page(common.WithTitle("Nouvelle demande")) {
<div class="container is-fluid">
<section class="section">
<div class="buttons is-right">
<a class="button is-medium" href={ common.BaseURL(ctx, common.WithPath("/auth/logout")) }>Se déconnecter</a>
<div class="level is-mobile">
<div class="level-left">
<h1 class="title is-size-1"><span class="has-text-info-light">Clear</span><span>Case</span></h1>
</div>
<div class="level-right">
<div class="buttons is-right level-item">
<a class="button is-medium" href={ common.BaseURL(ctx, common.WithPath("/auth/logout")) }><span class="icon"><i class="fa fa-sign-out-alt"></i></span></a>
</div>
</div>
</div>
if vmodel.IssueURL != "" {
<article class="message is-primary">
@ -91,7 +111,7 @@ templ IssuePage(vmodel IssuePageVModel) {
<div class="columns">
<div class="column is-4">
<form id="summary-form" action={ common.CurrentURL(ctx) } method="put" hx-disabled-elt="textarea, input, select, button" hx-on:htmx:before-send="savePreferredProject()" hx-indicator="#generation-progress">
<h2 class="title is-size-2">Résumé de la demande</h2>
<h2 class="title is-size-3">Résumé de la demande</h2>
@common.FormSelect(
vmodel.SummaryForm, "issue-project", "project", "Projet",
common.WithOptions(projectsToOptions(vmodel.Projects)...),
@ -108,26 +128,26 @@ templ IssuePage(vmodel IssuePageVModel) {
),
)
<div class="buttons is-right">
<button type="submit" class="button is-primary is-large">
<button type="submit" class="button is-info is-large">
<span class="icon">
<i class="fa fa-robot"></i>
</span>
<span>Générer le ticket</span>
<span>Générer</span>
</button>
</div>
</form>
</div>
<div class="column">
<h2 class="title is-size-2">Votre demande</h2>
<h2 class="title is-size-3">Votre demande</h2>
<form action={ common.CurrentURL(ctx) } method="post" hx-disabled-elt="textarea, input, select, button" hx-indicator="#generation-progress">
@common.FormField(vmodel.IssueForm, "issue-title", "title", "Titre")
@common.FormTextarea(vmodel.IssueForm, "issue-body", "body", "Corps")
<div class="buttons is-right">
<button type="submit" class="button is-primary is-large">
<button type="submit" class="button is-info is-large">
<span class="icon">
<i class="fa fa-rocket"></i>
</span>
<span>Créer le ticket</span>
<span>Créer</span>
</button>
</div>
</form>

View File

@ -17,6 +17,7 @@ import (
"github.com/pkg/errors"
"github.com/yuin/goldmark"
"log/slog"
"strings"
)
type IssuePageVModel struct {
@ -28,6 +29,16 @@ type IssuePageVModel struct {
SelectedProjectID string
}
const summaryPlaceholder = `
Décrivez rapidement le sujet du problème rencontré ou de l'évolution souhaitée, ClearCase utilisera le modèle de demande présent dans le dépôt (ou un modèle par défaut) afin de générer une version mise en forme et complétée.
Afin de fournir plus d'information de contexte au LLM, vous pouvez faire référence à d'autres tickets du dépôt via un ou plusieurs '#<issue_id>' et/ou des chemins vers des fichiers présents dans celui ci.
`
const bodyPlaceholder = `
Une fois votre demande générée, vous pourrez l'éditer puis la créer directement en cliquant sur le bouton 'Créer' ci-dessous.
`
func NewIssueSummaryForm() *form.Form {
return form.New(
form.NewField(
@ -40,9 +51,9 @@ func NewIssueSummaryForm() *form.Form {
form.Attrs{
"type": "textarea",
"rows": "20",
"placeholder": "Décrivez rapidement le sujet du problème rencontré ou de l'évolution souhaitée...",
"placeholder": strings.TrimSpace(summaryPlaceholder),
},
form.NonEmpty("Ce champs ne doit pas être vide."),
form.NonEmpty("Ce champ ne doit pas être vide."),
),
)
}
@ -52,17 +63,19 @@ func NewIssueForm() *form.Form {
form.NewField(
"title",
form.Attrs{
"type": "text",
"type": "text",
"placeholder": "Écrivez le résumé de votre demande et cliquez sur 'Générer' pour remplir automatiquement ces champs.",
},
form.NonEmpty("Ce champs ne doit pas être vide."),
form.NonEmpty("Ce champ ne doit pas être vide."),
),
form.NewField(
"body",
form.Attrs{
"type": "textarea",
"rows": "20",
"type": "textarea",
"rows": "20",
"placeholder": strings.TrimSpace(bodyPlaceholder),
},
form.NonEmpty("Ce champs ne doit pas être vide."),
form.NonEmpty("Ce champ ne doit pas être vide."),
),
)
}
@ -100,7 +113,7 @@ func IssuePage(vmodel IssuePageVModel) templ.Component {
}()
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<div class=\"container is-fluid\"><section class=\"section\"><div class=\"buttons is-right\"><a class=\"button is-medium\" href=\"")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<div class=\"container is-fluid\"><section class=\"section\"><div class=\"level is-mobile\"><div class=\"level-left\"><h1 class=\"title is-size-1\"><span class=\"has-text-info-light\">Clear</span><span>Case</span></h1></div><div class=\"level-right\"><div class=\"buttons is-right level-item\"><a class=\"button is-medium\" href=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@ -109,7 +122,7 @@ func IssuePage(vmodel IssuePageVModel) templ.Component {
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "\">Se déconnecter</a></div>")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "\"><span class=\"icon\"><i class=\"fa fa-sign-out-alt\"></i></span></a></div></div></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@ -130,7 +143,7 @@ func IssuePage(vmodel IssuePageVModel) templ.Component {
var templ_7745c5c3_Var5 string
templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(vmodel.IssueURL)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/http/handler/webui/issue/component/issue_page.templ`, Line: 77, Col: 89}
return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/http/handler/webui/issue/component/issue_page.templ`, Line: 97, Col: 89}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var5))
if templ_7745c5c3_Err != nil {
@ -162,7 +175,7 @@ func IssuePage(vmodel IssuePageVModel) templ.Component {
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 8, "\" method=\"put\" hx-disabled-elt=\"textarea, input, select, button\" hx-on:htmx:before-send=\"savePreferredProject()\" hx-indicator=\"#generation-progress\"><h2 class=\"title is-size-2\">Résumé de la demande</h2>")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 8, "\" method=\"put\" hx-disabled-elt=\"textarea, input, select, button\" hx-on:htmx:before-send=\"savePreferredProject()\" hx-indicator=\"#generation-progress\"><h2 class=\"title is-size-3\">Résumé de la demande</h2>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@ -187,7 +200,7 @@ func IssuePage(vmodel IssuePageVModel) templ.Component {
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 9, "<div class=\"buttons is-right\"><button type=\"submit\" class=\"button is-primary is-large\"><span class=\"icon\"><i class=\"fa fa-robot\"></i></span> <span>Générer le ticket</span></button></div></form></div><div class=\"column\"><h2 class=\"title is-size-2\">Votre demande</h2><form action=\"")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 9, "<div class=\"buttons is-right\"><button type=\"submit\" class=\"button is-info is-large\"><span class=\"icon\"><i class=\"fa fa-robot\"></i></span> <span>Générer</span></button></div></form></div><div class=\"column\"><h2 class=\"title is-size-3\">Votre demande</h2><form action=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@ -208,7 +221,7 @@ func IssuePage(vmodel IssuePageVModel) templ.Component {
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 11, "<div class=\"buttons is-right\"><button type=\"submit\" class=\"button is-primary is-large\"><span class=\"icon\"><i class=\"fa fa-rocket\"></i></span> <span>Créer le ticket</span></button></div></form></div></div><progress id=\"generation-progress\" class=\"htmx-indicator progress\"></progress> ")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 11, "<div class=\"buttons is-right\"><button type=\"submit\" class=\"button is-info is-large\"><span class=\"icon\"><i class=\"fa fa-rocket\"></i></span> <span>Créer</span></button></div></form></div></div><progress id=\"generation-progress\" class=\"htmx-indicator progress\"></progress> ")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}