chore(engine-b): provisioning step/mail i18n (DE+EN) + demo seed data
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>feat/portal-design
parent
a9fbb395f9
commit
3e19778046
|
|
@ -2,7 +2,11 @@
|
|||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use App\Models\Customer;
|
||||
use App\Models\Host;
|
||||
use App\Models\Instance;
|
||||
use App\Models\Order;
|
||||
use App\Models\ProvisioningRun;
|
||||
use App\Models\User;
|
||||
use Illuminate\Database\Seeder;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
|
|
@ -55,8 +59,49 @@ class DatabaseSeeder extends Seeder
|
|||
'cpu_weight' => 32,
|
||||
'reserve_pct' => 15,
|
||||
'pve_version' => 'pve-manager/8.2.2',
|
||||
'node' => $host['name'],
|
||||
'last_seen_at' => now(),
|
||||
]);
|
||||
}
|
||||
|
||||
// A live customer (matched to the portal login) with an active instance.
|
||||
$fsn1 = Host::query()->where('name', 'pve-fsn-1')->first();
|
||||
$berger = Customer::updateOrCreate(
|
||||
['email' => 'kunde@clupilot.local'],
|
||||
['name' => 'Kanzlei Berger', 'locale' => 'de'],
|
||||
);
|
||||
$bergerOrder = Order::updateOrCreate(
|
||||
['stripe_event_id' => 'seed_berger'],
|
||||
['customer_id' => $berger->id, 'plan' => 'team', 'amount_cents' => 17900, 'currency' => 'EUR', 'datacenter' => 'fsn', 'status' => 'active'],
|
||||
);
|
||||
Instance::updateOrCreate(
|
||||
['subdomain' => 'kanzlei-berger'],
|
||||
[
|
||||
'customer_id' => $berger->id, 'order_id' => $bergerOrder->id, 'host_id' => $fsn1?->id,
|
||||
'vmid' => 101, 'plan' => 'team', 'quota_gb' => 500, 'disk_gb' => 540, 'ram_mb' => 8192,
|
||||
'cores' => 4, 'status' => 'active', 'cert_ok' => true, 'route_written' => true,
|
||||
],
|
||||
);
|
||||
|
||||
// A few in-flight runs so the operator provisioning console has content.
|
||||
$demoRuns = [
|
||||
['name' => 'Ordination Dr. Fux', 'plan' => 'start', 'step' => 7, 'status' => 'running'],
|
||||
['name' => 'Weingut Prantl', 'plan' => 'business', 'step' => 13, 'status' => 'waiting'],
|
||||
['name' => 'Praxis Sommer', 'plan' => 'team', 'step' => 2, 'status' => 'failed'],
|
||||
];
|
||||
foreach ($demoRuns as $i => $demo) {
|
||||
$customer = Customer::updateOrCreate(
|
||||
['email' => "demo{$i}@clupilot.local"],
|
||||
['name' => $demo['name'], 'locale' => 'de'],
|
||||
);
|
||||
$order = Order::updateOrCreate(
|
||||
['stripe_event_id' => "seed_demo_{$i}"],
|
||||
['customer_id' => $customer->id, 'plan' => $demo['plan'], 'amount_cents' => 1900, 'currency' => 'EUR', 'datacenter' => 'fsn', 'status' => 'provisioning'],
|
||||
);
|
||||
ProvisioningRun::updateOrCreate(
|
||||
['subject_type' => Order::class, 'subject_id' => $order->id, 'pipeline' => 'customer'],
|
||||
['current_step' => $demo['step'], 'status' => $demo['status'], 'attempt' => $demo['status'] === 'failed' ? 3 : 1, 'context' => []],
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,30 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'step' => [
|
||||
'validate_order' => 'Bestellung prüfen',
|
||||
'reserve_resources' => 'Ressourcen reservieren',
|
||||
'clone_vm' => 'VM aus Vorlage klonen',
|
||||
'configure_cloud_init' => 'Cloud-Init konfigurieren',
|
||||
'start_vm' => 'VM starten',
|
||||
'wait_for_guest_agent' => 'Auf Gast-Agent warten',
|
||||
'configure_network' => 'Netzwerk konfigurieren',
|
||||
'deploy_application_stack' => 'Anwendung ausrollen',
|
||||
'configure_nextcloud' => 'Nextcloud einrichten',
|
||||
'create_customer_admin' => 'Admin-Konto anlegen',
|
||||
'configure_dns_and_tls' => 'DNS & TLS einrichten',
|
||||
'register_backup' => 'Backup einrichten',
|
||||
'register_monitoring' => 'Monitoring einrichten',
|
||||
'run_acceptance_checks' => 'Abnahmeprüfung',
|
||||
'complete_provisioning' => 'Bereitstellung abschließen',
|
||||
],
|
||||
|
||||
'mail' => [
|
||||
'ready_subject' => 'Ihre CluPilot Cloud ist bereit',
|
||||
'ready_greeting' => 'Willkommen bei CluPilot!',
|
||||
'ready_line' => 'Ihre Cloud ist eingerichtet und einsatzbereit. Hier sind Ihre Zugangsdaten:',
|
||||
'ready_user' => 'Benutzername: :user',
|
||||
'ready_password' => 'Initial-Passwort: :password (bitte nach dem ersten Login ändern)',
|
||||
'ready_action' => 'Zur Cloud',
|
||||
],
|
||||
];
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'step' => [
|
||||
'validate_order' => 'Validate order',
|
||||
'reserve_resources' => 'Reserve resources',
|
||||
'clone_vm' => 'Clone VM from template',
|
||||
'configure_cloud_init' => 'Configure cloud-init',
|
||||
'start_vm' => 'Start VM',
|
||||
'wait_for_guest_agent' => 'Wait for guest agent',
|
||||
'configure_network' => 'Configure network',
|
||||
'deploy_application_stack' => 'Deploy application stack',
|
||||
'configure_nextcloud' => 'Set up Nextcloud',
|
||||
'create_customer_admin' => 'Create admin account',
|
||||
'configure_dns_and_tls' => 'Configure DNS & TLS',
|
||||
'register_backup' => 'Register backup',
|
||||
'register_monitoring' => 'Register monitoring',
|
||||
'run_acceptance_checks' => 'Acceptance checks',
|
||||
'complete_provisioning' => 'Complete provisioning',
|
||||
],
|
||||
|
||||
'mail' => [
|
||||
'ready_subject' => 'Your CluPilot cloud is ready',
|
||||
'ready_greeting' => 'Welcome to CluPilot!',
|
||||
'ready_line' => 'Your cloud is set up and ready to use. Here are your credentials:',
|
||||
'ready_user' => 'Username: :user',
|
||||
'ready_password' => 'Initial password: :password (please change it after your first login)',
|
||||
'ready_action' => 'Open your cloud',
|
||||
],
|
||||
];
|
||||
Loading…
Reference in New Issue