feat(değerlendirme): dönem kapatma sihirbazı

- /degerlendirme/kapat: Özet → Birikim → Onay → Sonuç
- Birikime aktarılacak tutar (varsayılan tamamı), kalan artı/açık devri önizlemesi
- Değerlendirme sayfasına "Dönemi Kapat" bölümü
- Yeni dönem önerisi son dönemin bitişinden başlar (erken kapatılan ay önerilmez)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-11-12 22:59:38 +03:00
parent 311cfc8c60
commit 2c16cf4163
16 changed files with 639 additions and 18 deletions
+14
View File
@@ -1,6 +1,9 @@
import { useState } from 'react'
import { Info } from 'lucide-react'
import { Link } from 'react-router'
import { paths } from '@/components/layout/nav-items'
import { PageError, PageHeader, PageLoading } from '@/components/page'
import { Button } from '@/components/ui/button'
import { NotesSection } from '@/features/notes/notes-section'
import { NoPeriodCard } from '@/features/period-wizard/no-period-card'
import { PeriodHeading } from '@/features/planning/plan-read'
@@ -61,6 +64,17 @@ function ReviewView({ period }: { period: Period }) {
<WeeklyDistribution review={review.data} />
<Reflection period={period} readOnly={readOnly} />
<NotesSection periodId={period.id} context="review" readOnly={readOnly} collapsed />
{!readOnly && (
<section className="flex flex-col gap-4 rounded-2xl border bg-card p-5 sm:flex-row sm:items-center sm:justify-between">
<div className="space-y-1">
<h2 className="font-semibold">{t.review.closeTitle}</h2>
<p className="text-sm text-muted-foreground">{t.review.closeHint}</p>
</div>
<Button asChild size="lg" className="shrink-0">
<Link to={paths.closePeriod}>{t.review.closeAction}</Link>
</Button>
</section>
)}
</div>
)
}