# ERPFlow মডিউল ডেভেলপমেন্ট গাইড (bn)

সম্পূর্ণ ইংরেজি সংস্করণ: [MODULE_DEVELOPMENT_GUIDE.md](./MODULE_DEVELOPMENT_GUIDE.md)

---

## মূল ধারণা

```
nwidart Module (কোড) → API (JWT + X-Company-Id)
       ↓
Platform Admin UI (Permission, Approval, Activity)
       ↓
Frontend: navigation.ts (menu) + modules/{slug}/index.tsx (routes)
```

**ব্যবহার করবেন না:** `platform:sync`, ERPFlow `module.json` actions/menus, Menu Builder sidebar-এর জন্য।

---

## নতুন মডিউল চেকলিস্ট

```
□ php artisan module:make {Name}
□ php artisan module:enable {Name}
□ routes/api.php — auth + onboarding + permission middleware
□ Admin → Actions (প্রয়োজনে নতুন slug)
□ Admin → Modules → actions link
□ Admin → Roles → permissions assign
□ frontend/src/modules/core/config/navigation.ts — menu যোগ
□ frontend/src/modules/{slug}/index.tsx — শুধু routes
□ registerModules.ts import
□ ActivityLogService (sensitive actions)
□ ApprovalGateway (শুধু CUD + approval ON হলে)
```

---

## Permission ফরম্যাট

```
{group_slug}.{action_slug}

configuration.view
configuration.employee
configuration.create
```

- Backend: `middleware('permission:configuration.view')`
- Frontend route: `RequirePermissionRoute`
- Frontend button: `PermissionGuard`
- Sidebar: `navigation.ts` + `can()`

---

## API হেডার

```http
Authorization: Bearer {token}
X-Company-Id: {company_uuid}
Accept: application/json
```

Permission key request body/header-এ পাঠাবেন না।

---

## Approval (যখন দরকার)

1. Admin → Approval Settings → `configuration.create` ON
2. Admin → Approval Workflows → module action bind
3. Service → `ApprovalGateway::submit()`
4. Provider → `Platform::registerApprovalExecutor()`

Approval OFF থাকলে Gateway সাথে সাথে `onApproved()` চালায়।

---

## Activity Log

```php
$this->activityLogService->log(LogActivityData::make('employee_config.created', [
    'moduleId' => $moduleId,
    'actionKey' => 'configuration.create',
    'subjectType' => 'employee_config',
    'subjectId' => (string) $model->id,
    'properties' => ['name' => $model->name],
]));
```

---

## রেফারেন্স

Configuration pilot: `backend/Modules/Configuration/`

Regression checklist: [REGRESSION_CHECKLIST.md](./REGRESSION_CHECKLIST.md)

Postman: [postman/ERPFlow.postman_collection.json](./postman/ERPFlow.postman_collection.json)
