belge gereksinimlerine sorumlu ekle
Quality gates / test-build (push) Canceled after 0s
Quality gates / container (push) Canceled after 0s

This commit is contained in:
2026-09-06 21:32:25 +03:00
parent be6e8dcc92
commit 6436dcb34b
2 changed files with 9 additions and 0 deletions
+6
View File
@@ -2406,3 +2406,9 @@ Doğrulama: `tests/detail-cache.test.mjs` önbellek süresi, açık yenileme ve
Teklif Asistanı, modelin tamamlayamadığı bölümleri yalnız “kısmi taslak” ifadesiyle bırakmıyor; ortak `draftReviewLabel` sözleşmesiyle `EKSİK TASLAK — TEKLİF OLARAK KULLANILAMAZ` uyarısını `alert` olarak gösteriyor. Tam görünen taslaklar da kullanıcı kontrolü gerektiren taslak olarak etiketleniyor. Böylece eksik AI çıktısı resmî teklif veya onaylı dosya gibi algılanmıyor.
Doğrulama: `npm test` 305/305, `npm run build` ve `npm run qa:browser` başarılı; etiket ve iki durum için regresyon testi eklendi. Gitea `main` commit’i `63649b2` (runtime değişikliği `c783269`); Coolify rollout için API kimlik doğrulaması ayrıca doğrulanmalı.
### 2026-09-06 · Belge gereksinimlerine sorumlu ataması
Hazırlık ekranındaki her belge gereksinimine, ürün/servis kontrollerindeki sorumlu alanıyla aynı biçimde kişi veya ekip atama alanı eklendi. Sorumlu bilgisi taslak içindeki `checks.documents` kaydında saklanıyor; mevcut kayıtları geriye dönük zorunlu kılmıyor ve belge doğrulama koşullarını gevşetmiyor. Böylece beş dosyada eksik belge ile işi yapacak kişi aynı akışta görülebiliyor.
Doğrulama: `npm test` 305/305, `npm run build` ve `npm run qa:browser` başarılı. Gitea `main`e gönderim ve Coolify rollout kimlik doğrulaması ayrıca bekliyor.
+3
View File
@@ -43,6 +43,9 @@ export function PreparationChecks({rows, documents, manualDocuments, setManualDo
</label>
{vault.documents.some(f=>f.id===c.documentId) && <button type="button" className="text-xs text-blue-700" onClick={()=>downloadFile(vault.documents.find(f=>f.id===c.documentId))}>Bağlı dosyayı indir</button>}
<Status value={c.status} optional={d.mandatory === false} onChange={status => updateDocument(key,{status})}/>
<label className="block text-xs">Sorumlu
<input aria-label={`${d.document} sorumlusu`} className={fieldClass} value={c.owner || ''} onChange={e => updateDocument(key,{owner:e.target.value})} placeholder="Belgeyi hazırlayacak kişi veya ekip" />
</label>
<label className="block text-xs">Belge adı/sürümü, geçerlilik kontrolü ve kaynak madde
<input className={fieldClass} value={c.evidence || ''} onChange={e => updateDocument(key,{evidence:e.target.value})}/>
</label>