feat: initialize agentic development kit with workflow, skill, and agent definitions and add foundational module controllers and components

This commit is contained in:
2026-08-15 14:16:37 +08:00
parent b98951f65f
commit 9c0143d70d
251 changed files with 40623 additions and 236 deletions

View File

@@ -60,7 +60,7 @@ class ContractorController extends Controller
$validated = $request->validate([
'company_name' => 'required|string|max:255',
'contact_person' => 'required|string|max:255',
'email' => 'required|email|unique:contractors',
'email' => 'required|email|unique:contractors,email',
'phone' => 'nullable|string|max:50',
'specialization' => 'nullable|string|max:100',
'address' => 'nullable|string',
@@ -68,12 +68,12 @@ class ContractorController extends Controller
'payment_terms' => 'required|in:net_15,net_30,net_60',
'shares_materials_catalog' => 'nullable|boolean',
'create_admin' => 'nullable|boolean',
'admin_name' => 'required_if:create_admin,true|string|max:255',
'admin_email' => 'required_if:create_admin,true|email|unique:users,email',
'admin_password' => 'required_if:create_admin,true|string|min:8',
'admin_name' => 'required_if:create_admin,true,1|nullable|string|max:255',
'admin_email' => 'required_if:create_admin,true,1|nullable|email|unique:users,email',
'admin_password' => 'required_if:create_admin,true,1|nullable|string|min:8',
]);
DB::transaction(function () use ($validated) {
DB::transaction(function () use ($validated, $request) {
$contractorData = collect($validated)->except([
'create_admin',
'admin_name',
@@ -81,9 +81,12 @@ class ContractorController extends Controller
'admin_password'
])->toArray();
$contractorData['status'] = 'active';
$contractorData['type'] = 'main';
$contractor = Contractor::create($contractorData);
if (!empty($validated['create_admin']) && $validated['create_admin']) {
if ($request->boolean('create_admin')) {
$user = User::create([
'name' => $validated['admin_name'],
'email' => $validated['admin_email'],
@@ -96,8 +99,12 @@ class ContractorController extends Controller
// Provision every contractor administrator with the single supported contractor role.
$roleName = 'Main Contractor Admin';
$role = Role::firstOrCreate(['name' => $roleName]);
$role->givePermissionTo('users.access');
$role = Role::firstOrCreate(['name' => $roleName, 'guard_name' => 'web']);
$permission = \Spatie\Permission\Models\Permission::firstOrCreate([
'name' => 'users.access',
'guard_name' => 'web',
]);
$role->givePermissionTo($permission);
$user->assignRole($role);
}
});