correction erreur approval flow
All checks were successful
Deploy / deploy (push) Successful in 11s

This commit is contained in:
fahed
2026-03-01 11:30:20 +03:00
parent 12415d5426
commit 20d76dea8b
3 changed files with 46 additions and 13 deletions

View File

@@ -1209,7 +1209,7 @@ function ArtefactDetailPanel({ artefact, onClose, onUpdate, onDelete, projects =
)}
{/* Submit for Review */}
{artefact.status === 'draft' && (
{['draft', 'revision_requested', 'rejected'].includes(artefact.status) && (
<div className="border-t border-border pt-6">
<button
onClick={handleSubmitReview}

View File

@@ -1,6 +1,6 @@
import { useState, useEffect } from 'react'
import { useParams } from 'react-router-dom'
import { CheckCircle, XCircle, AlertCircle, FileText, Image as ImageIcon, Film, Sparkles, Globe } from 'lucide-react'
import { CheckCircle, XCircle, AlertCircle, FileText, Image as ImageIcon, Film, Sparkles, Globe, User } from 'lucide-react'
const STATUS_ICONS = {
copy: FileText,
@@ -35,6 +35,10 @@ export default function PublicReview() {
}
const data = await res.json()
setArtefact(data)
// Auto-set reviewer name if there's exactly one approver
if (data.approvers?.length === 1 && data.approvers[0].name) {
setReviewerName(data.approvers[0].name)
}
} catch (err) {
setError('Failed to load artefact')
} finally {
@@ -44,7 +48,7 @@ export default function PublicReview() {
const handleAction = async (action) => {
if (!reviewerName.trim()) {
alert('Please enter your name')
alert('Please select or enter your name')
return
}
@@ -395,15 +399,34 @@ export default function PublicReview() {
<h3 className="text-lg font-semibold text-text-primary mb-4">Your Review</h3>
<div className="space-y-4 mb-6">
{/* Reviewer identity */}
<div>
<label className="block text-sm font-medium text-text-primary mb-1">Your Name *</label>
<input
type="text"
value={reviewerName}
onChange={e => setReviewerName(e.target.value)}
placeholder="Enter your name"
className="w-full px-4 py-2 border border-border rounded-lg focus:outline-none focus:ring-2 focus:ring-brand-primary/20 focus:border-brand-primary bg-surface transition-colors"
/>
<label className="block text-sm font-medium text-text-primary mb-1">Reviewer</label>
{artefact.approvers?.length === 1 ? (
<div className="flex items-center gap-2 px-4 py-2 bg-surface-secondary border border-border rounded-lg">
<User className="w-4 h-4 text-text-tertiary" />
<span className="text-sm text-text-primary">{artefact.approvers[0].name}</span>
</div>
) : artefact.approvers?.length > 1 ? (
<select
value={reviewerName}
onChange={e => setReviewerName(e.target.value)}
className="w-full px-4 py-2 text-sm border border-border rounded-lg bg-surface text-text-primary focus:outline-none focus:ring-2 focus:ring-brand-primary/20 focus:border-brand-primary transition-colors"
>
<option value="">Select your name...</option>
{artefact.approvers.map(a => (
<option key={a.id} value={a.name}>{a.name}</option>
))}
</select>
) : (
<input
type="text"
value={reviewerName}
onChange={e => setReviewerName(e.target.value)}
placeholder="Enter your name"
className="w-full px-4 py-2 text-sm border border-border rounded-lg bg-surface text-text-primary focus:outline-none focus:ring-2 focus:ring-brand-primary/20 focus:border-brand-primary transition-colors"
/>
)}
</div>
<div>
@@ -413,7 +436,7 @@ export default function PublicReview() {
onChange={e => setFeedback(e.target.value)}
rows={4}
placeholder="Share your thoughts, suggestions, or required changes..."
className="w-full px-4 py-2 border border-border rounded-lg focus:outline-none focus:ring-2 focus:ring-brand-primary/20 focus:border-brand-primary bg-surface transition-colors"
className="w-full px-4 py-2 text-sm border border-border rounded-lg bg-surface text-text-primary focus:outline-none focus:ring-2 focus:ring-brand-primary/20 focus:border-brand-primary transition-colors"
/>
</div>
</div>