feat: add utility scripts to automate internship journal review, approval, and summary generation processes

This commit is contained in:
Ümit Tunç
2026-08-07 23:14:20 +03:00
parent 9b719324cd
commit 9b91b3c847
10 changed files with 1435 additions and 0 deletions
+73
View File
@@ -0,0 +1,73 @@
<?php
require __DIR__ . '/../vendor/autoload.php';
$app = require_once __DIR__ . '/../bootstrap/app.php';
$app->make(Illuminate\Contracts\Console\Kernel::class)->bootstrap();
$interns = App\Models\CareerApplication::where(function($q) {
$q->where('type', 'internship')->orWhereHas('journalEntries');
})->with(['journalEntries' => function($q) {
$q->orderBy('day_number', 'asc');
}])->get();
$approvedCount = 0;
$report = [];
foreach ($interns as $intern) {
$totalEntries = $intern->journalEntries->count();
$filledEntries = 0;
$onTimeEntries = [];
$retroactiveEntries = [];
$newlyApproved = 0;
$alreadyApproved = 0;
foreach ($intern->journalEntries as $entry) {
$hasContent = !empty(trim($entry->content ?? ''));
if ($hasContent) {
$filledEntries++;
if (!$entry->supervisor_approved) {
$entry->supervisor_approved = true;
if (empty($entry->supervisor_name)) {
$entry->supervisor_name = 'Yönetici Onayı';
}
$entry->save();
$newlyApproved++;
$approvedCount++;
} else {
$alreadyApproved++;
}
if ($entry->is_retroactive) {
$retroactiveEntries[] = [
'day' => $entry->day_number,
'date' => $entry->date,
'content_snippet' => mb_substr(trim(preg_replace('/\s+/', ' ', strip_tags($entry->content))), 0, 60)
];
} else {
$onTimeEntries[] = [
'day' => $entry->day_number,
'date' => $entry->date,
];
}
}
}
$report[] = [
'id' => $intern->id,
'name' => $intern->name,
'email' => $intern->email,
'github' => $intern->github_repo,
'total_entries' => $totalEntries,
'filled_entries' => $filledEntries,
'already_approved' => $alreadyApproved,
'newly_approved' => $newlyApproved,
'on_time_count' => count($onTimeEntries),
'retroactive_count' => count($retroactiveEntries),
'on_time_days' => array_column($onTimeEntries, 'day'),
'retroactive_days' => array_column($retroactiveEntries, 'day'),
'retroactive_details' => $retroactiveEntries,
];
}
file_put_contents(__DIR__ . '/approval_report.json', json_encode(['approved_total' => $approvedCount, 'interns' => $report], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE));
echo "Processed " . count($interns) . " interns. Newly approved entries: " . $approvedCount . "\n";