fix: update service letter seed with realistic dates for chart trends

- Added 5 service letters with createdAt dates spread across 6 months
- Changed from upsert to update/create pattern to allow createdAt modification
- This ensures chart-surat.tsx displays proper trend data
- Previous data had all timestamps at seed time, causing empty 6-month trend

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
2026-03-27 14:34:49 +08:00
parent c216fa074d
commit 354e706dc5
3 changed files with 49 additions and 5 deletions

7
.qwen/settings.json Normal file
View File

@@ -0,0 +1,7 @@
{
"permissions": {
"allow": [
"Bash(bun *)"
]
}
}

BIN
mantine-expert.skill Normal file

Binary file not shown.

View File

@@ -61,11 +61,12 @@ export async function seedComplaints(adminId: string) {
/** /**
* Seed Service Letters * Seed Service Letters
* Creates sample administrative letter requests * Creates sample administrative letter requests with dates spread across 6 months
*/ */
export async function seedServiceLetters(adminId: string) { export async function seedServiceLetters(adminId: string) {
console.log("Seeding Service Letters..."); console.log("Seeding Service Letters...");
const now = new Date();
const serviceLetters = [ const serviceLetters = [
{ {
letterNumber: "SKT-2025-001", letterNumber: "SKT-2025-001",
@@ -76,7 +77,8 @@ export async function seedServiceLetters(adminId: string) {
purpose: "Pembuatan KTP baru", purpose: "Pembuatan KTP baru",
status: "SELESAI", status: "SELESAI",
processedBy: adminId, processedBy: adminId,
completedAt: new Date(), completedAt: new Date(now.getTime() - 10 * 24 * 60 * 60 * 1000), // 10 days ago
createdAt: new Date(now.getTime() - 15 * 24 * 60 * 60 * 1000), // 15 days ago
}, },
{ {
letterNumber: "SKT-2025-002", letterNumber: "SKT-2025-002",
@@ -87,6 +89,7 @@ export async function seedServiceLetters(adminId: string) {
purpose: "Perubahan data KK", purpose: "Perubahan data KK",
status: "DIPROSES", status: "DIPROSES",
processedBy: adminId, processedBy: adminId,
createdAt: new Date(now.getTime() - 45 * 24 * 60 * 60 * 1000), // 45 days ago
}, },
{ {
letterNumber: "SKT-2025-003", letterNumber: "SKT-2025-003",
@@ -96,15 +99,49 @@ export async function seedServiceLetters(adminId: string) {
applicantAddress: "Jl. Cabe No. 10", applicantAddress: "Jl. Cabe No. 10",
purpose: "Surat keterangan domisili", purpose: "Surat keterangan domisili",
status: "BARU", status: "BARU",
createdAt: new Date(now.getTime() - 90 * 24 * 60 * 60 * 1000), // 90 days ago
},
{
letterNumber: "SKT-2024-004",
letterType: "USAHA",
applicantName: "Made Wijaya",
applicantNik: "5103010101950004",
applicantAddress: "Jl. Penenjoan No. 15",
purpose: "Surat keterangan usaha",
status: "SELESAI",
processedBy: adminId,
completedAt: new Date(now.getTime() - 120 * 24 * 60 * 60 * 1000), // 120 days ago
createdAt: new Date(now.getTime() - 130 * 24 * 60 * 60 * 1000), // 130 days ago
},
{
letterNumber: "SKT-2024-005",
letterType: "KETERANGAN_TIDAK_MAMPU",
applicantName: "Putu Sari",
applicantNik: "5103010101980005",
applicantAddress: "Gg. Bucu No. 8",
purpose: "Keterangan tidak mampu untuk beasiswa",
status: "SELESAI",
processedBy: adminId,
completedAt: new Date(now.getTime() - 150 * 24 * 60 * 60 * 1000), // 150 days ago
createdAt: new Date(now.getTime() - 160 * 24 * 60 * 60 * 1000), // 160 days ago
}, },
]; ];
for (const letter of serviceLetters) { for (const letter of serviceLetters) {
await prisma.serviceLetter.upsert({ const existing = await prisma.serviceLetter.findUnique({
where: { letterNumber: letter.letterNumber }, where: { letterNumber: letter.letterNumber },
update: letter,
create: letter,
}); });
if (existing) {
await prisma.serviceLetter.update({
where: { letterNumber: letter.letterNumber },
data: letter,
});
} else {
await prisma.serviceLetter.create({
data: letter,
});
}
} }
console.log("✅ Service Letters seeded successfully"); console.log("✅ Service Letters seeded successfully");