refactor: remove monthly filtering from journal and rename user_settings table to app_settings

This commit is contained in:
poyrazavsever
2026-06-09 00:08:27 +03:00
parent 41c6d86746
commit b838c94be2
2 changed files with 15 additions and 23 deletions
+12 -20
View File
@@ -59,12 +59,10 @@ const scoreLabels: Record<number, string> = {
}; };
export function JournalClient({ logs }: JournalClientProps) { export function JournalClient({ logs }: JournalClientProps) {
const [monthFilter, setMonthFilter] = useState(() => new Date().toISOString().slice(0, 7)); const summary = useMemo(() => calculateSummary(logs), [logs]);
const filteredLogs = logs.filter((log) => log.log_date.startsWith(monthFilter));
const summary = useMemo(() => calculateSummary(filteredLogs), [filteredLogs]);
const chartData = useMemo( const chartData = useMemo(
() => () =>
[...filteredLogs] [...logs]
.sort((a, b) => a.log_date.localeCompare(b.log_date)) .sort((a, b) => a.log_date.localeCompare(b.log_date))
.map((log) => ({ .map((log) => ({
date: formatShortDate(log.log_date), date: formatShortDate(log.log_date),
@@ -72,7 +70,7 @@ export function JournalClient({ logs }: JournalClientProps) {
energy: log.energy_score, energy: log.energy_score,
satisfaction: log.work_satisfaction_score, satisfaction: log.work_satisfaction_score,
})), })),
[filteredLogs], [logs],
); );
return ( return (
@@ -94,12 +92,6 @@ export function JournalClient({ logs }: JournalClientProps) {
</div> </div>
<div className="flex flex-col gap-2 sm:flex-row"> <div className="flex flex-col gap-2 sm:flex-row">
<Input
type="month"
value={monthFilter}
onChange={(event) => setMonthFilter(event.target.value)}
className="sm:w-44"
/>
<DailyLogDialog mode="create" /> <DailyLogDialog mode="create" />
</div> </div>
</div> </div>
@@ -125,7 +117,7 @@ export function JournalClient({ logs }: JournalClientProps) {
/> />
<StatCard <StatCard
label="Kayıtlı gün" label="Kayıtlı gün"
value={String(filteredLogs.length)} value={String(logs.length)}
icon={<CalendarDays className="h-5 w-5" />} icon={<CalendarDays className="h-5 w-5" />}
tone="amber" tone="amber"
/> />
@@ -135,7 +127,7 @@ export function JournalClient({ logs }: JournalClientProps) {
<Card> <Card>
<CardContent className="space-y-4 p-4"> <CardContent className="space-y-4 p-4">
<div> <div>
<h2 className="text-base font-semibold text-foreground">Aylık trend</h2> <h2 className="text-base font-semibold text-foreground">Genel trend</h2>
<p className="text-sm text-muted-foreground"> <p className="text-sm text-muted-foreground">
Mood, enerji ve çalışma memnuniyetinin günlük değişimi. Mood, enerji ve çalışma memnuniyetinin günlük değişimi.
</p> </p>
@@ -179,7 +171,7 @@ export function JournalClient({ logs }: JournalClientProps) {
<CardContent className="space-y-4 p-4"> <CardContent className="space-y-4 p-4">
<div> <div>
<h2 className="text-base font-semibold text-foreground">Kapasite sinyali</h2> <h2 className="text-base font-semibold text-foreground">Kapasite sinyali</h2>
<p className="text-sm text-muted-foreground">Bu ayki günlük kayıtlardan kısa okuma.</p> <p className="text-sm text-muted-foreground">Kayıtlardan kısa okuma.</p>
</div> </div>
<div className="space-y-3 text-sm text-muted-foreground"> <div className="space-y-3 text-sm text-muted-foreground">
{summary.insights.map((insight) => ( {summary.insights.map((insight) => (
@@ -197,11 +189,11 @@ export function JournalClient({ logs }: JournalClientProps) {
<div className="flex items-center justify-between gap-3"> <div className="flex items-center justify-between gap-3">
<div> <div>
<h2 className="text-base font-semibold text-foreground">Günlük kayıtlar</h2> <h2 className="text-base font-semibold text-foreground">Günlük kayıtlar</h2>
<p className="text-sm text-muted-foreground">{filteredLogs.length} kayıt görüntüleniyor.</p> <p className="text-sm text-muted-foreground">{logs.length} kayıt görüntüleniyor.</p>
</div> </div>
</div> </div>
{filteredLogs.length > 0 ? ( {logs.length > 0 ? (
<div className="overflow-hidden rounded-sm border border-border"> <div className="overflow-hidden rounded-sm border border-border">
<div className="hidden grid-cols-[0.7fr_0.7fr_0.7fr_1.8fr_0.8fr] gap-4 border-b border-border bg-muted/40 px-4 py-3 text-xs font-medium uppercase text-muted-foreground lg:grid"> <div className="hidden grid-cols-[0.7fr_0.7fr_0.7fr_1.8fr_0.8fr] gap-4 border-b border-border bg-muted/40 px-4 py-3 text-xs font-medium uppercase text-muted-foreground lg:grid">
<span>Tarih</span> <span>Tarih</span>
@@ -211,7 +203,7 @@ export function JournalClient({ logs }: JournalClientProps) {
<span className="text-right">İşlem</span> <span className="text-right">İşlem</span>
</div> </div>
<div className="divide-y divide-border"> <div className="divide-y divide-border">
{filteredLogs.map((log) => ( {logs.map((log) => (
<DailyLogRow key={log.id} log={log} /> <DailyLogRow key={log.id} log={log} />
))} ))}
</div> </div>
@@ -440,7 +432,7 @@ function EmptyState() {
return ( return (
<div className="flex min-h-72 flex-col items-center justify-center rounded-sm border border-dashed border-border bg-muted/20 p-8 text-center"> <div className="flex min-h-72 flex-col items-center justify-center rounded-sm border border-dashed border-border bg-muted/20 p-8 text-center">
<Activity className="h-10 w-10 text-muted-foreground" /> <Activity className="h-10 w-10 text-muted-foreground" />
<h3 className="mt-4 text-lg font-semibold text-foreground">Bu ay günlük kayıt yok</h3> <h3 className="mt-4 text-lg font-semibold text-foreground">Henüz günlük kayıt yok</h3>
<p className="mt-2 max-w-md text-sm text-muted-foreground"> <p className="mt-2 max-w-md text-sm text-muted-foreground">
Mood ve enerji trendini görmek için ilk günlük kaydını ekle. Mood ve enerji trendini görmek için ilk günlük kaydını ekle.
</p> </p>
@@ -460,9 +452,9 @@ function calculateSummary(logs: DailyLogItem[]) {
const insights = []; const insights = [];
if (logs.length === 0) { if (logs.length === 0) {
insights.push("Bu ay için henüz okunabilir bir trend yok."); insights.push("Henüz okunabilir bir trend yok.");
} else { } else {
insights.push(`Bu ay ${logs.length} günlük kayıt var.`); insights.push(`Toplam ${logs.length} günlük kayıt var.`);
insights.push( insights.push(
energyAverage && energyAverage < 3 energyAverage && energyAverage < 3
? "Enerji ortalaması düşük. Dashboard raporlarında geciken işler ile birlikte okunmalı." ? "Enerji ortalaması düşük. Dashboard raporlarında geciken işler ile birlikte okunmalı."
+3 -3
View File
@@ -57,7 +57,7 @@ export default function SettingsPage() {
// 2. Fetch User Settings from Supabase // 2. Fetch User Settings from Supabase
const { data: settings } = await supabase const { data: settings } = await supabase
.from("user_settings") .from("app_settings")
.select("*") .select("*")
.eq("user_id", user.id) .eq("user_id", user.id)
.single(); .single();
@@ -104,9 +104,9 @@ export default function SettingsPage() {
const { data: { user } } = await supabase.auth.getUser(); const { data: { user } } = await supabase.auth.getUser();
if (!user) throw new Error("Giriş yapılmamış"); if (!user) throw new Error("Giriş yapılmamış");
// Save to Supabase user_settings table // Save to Supabase app_settings table
const { error } = await supabase const { error } = await supabase
.from("user_settings") .from("app_settings")
.upsert({ .upsert({
user_id: user.id, user_id: user.id,
ai_model: aiProvider, ai_model: aiProvider,