feat(checklist): exibe descricao do template e do item no ticket

- Adiciona campo templateDescription ao schema do checklist
- Copia descricao do template ao aplicar checklist no ticket
- Exibe ambas descricoes na visualizacao do ticket (template em italico)
- Adiciona documentacao de desenvolvimento local (docs/LOCAL-DEV.md)
- Corrige prisma-client.mjs para usar PostgreSQL em vez de SQLite

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
rever-tecnologia 2025-12-16 09:45:09 -03:00
parent 6430d33c7c
commit 6e8a6fe890
8 changed files with 212 additions and 71 deletions

View file

@ -369,24 +369,17 @@ export function TicketChecklistCard({
</Button>
</div>
) : (
<>
<p
className={`text-sm ${item.done ? "text-neutral-500 line-through" : "text-neutral-900"}`}
title={item.text}
onDoubleClick={() => {
if (!canEdit || isResolved) return
setEditingId(item.id)
setEditingText(item.text)
}}
>
{item.text}
</p>
{item.description && (
<p className="mt-0.5 text-xs text-slate-500">
{item.description}
</p>
)}
</>
<p
className={`text-sm ${item.done ? "text-neutral-500 line-through" : "text-neutral-900"}`}
title={item.text}
onDoubleClick={() => {
if (!canEdit || isResolved) return
setEditingId(item.id)
setEditingText(item.text)
}}
>
{item.text}
</p>
)}
{isQuestion && options.length > 0 && (
@ -446,6 +439,20 @@ export function TicketChecklistCard({
</Badge>
) : null}
</div>
{(item.templateDescription || item.description) && (
<div className="space-y-0.5">
{item.templateDescription && (
<p className="text-xs italic text-slate-400">
{item.templateDescription}
</p>
)}
{item.description && (
<p className="text-xs text-slate-500">
{item.description}
</p>
)}
</div>
)}
</div>
</div>

View file

@ -148,6 +148,7 @@ export const ticketChecklistItemSchema = z.object({
required: z.boolean().optional(),
templateId: z.string().optional(),
templateItemId: z.string().optional(),
templateDescription: z.string().optional(),
createdAt: z.number().optional(),
createdBy: z.string().optional(),
doneAt: z.number().optional(),