feat(ui): değer grafiği, net varlık kartı, dashboard kartları ve ödeme diyaloğunda varlık bağı

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-11-06 00:19:05 +03:00
parent 9a60085d14
commit b022c1c3b0
10 changed files with 825 additions and 36 deletions
+25 -6
View File
@@ -1,17 +1,36 @@
import type { Metadata } from "next";
import { notFound } from "next/navigation";
import { AssetDetailView } from "@/features/assets/components/asset-detail-view";
import { getAsset } from "@/features/assets/service";
import { PeriodReportView } from "@/features/assets/components/period-report";
import {
getAsset,
getPeriodReport,
REPORT_RANGES,
type ReportRange,
} from "@/features/assets/service";
import { tr } from "@/i18n/tr";
import { requireActiveHousehold } from "@/lib/dal";
export const metadata: Metadata = { title: tr.assets.history };
/** /birikim/:id — varlık hareketleri (gizli varlık yalnızca sahibine; aksi 404). */
export default async function AssetPage({ params }: PageProps<"/birikim/[id]">) {
/** /birikim/:id — varlık hareketleri ve dönemsel rapor (gizli varlık yalnızca sahibine; aksi 404). */
export default async function AssetPage({ params, searchParams }: PageProps<"/birikim/[id]">) {
const { user, household } = await requireActiveHousehold("viewer");
const { id } = await params;
const data = await getAsset(user.id, household.id, id);
if (!data) notFound();
return <AssetDetailView key={id} data={data} />;
const donem = (await searchParams).donem;
const range: ReportRange = REPORT_RANGES.includes(donem as ReportRange)
? (donem as ReportRange)
: "6";
const [data, report] = await Promise.all([
getAsset(user.id, household.id, id),
getPeriodReport(user.id, household.id, range, id),
]);
if (!data || !report) notFound();
return (
<AssetDetailView
key={id}
data={data}
report={<PeriodReportView report={report} range={range} basePath={`/birikim/${id}`} />}
/>
);
}