Refactoring Tracking - Service Layer Migration
📊 Status Overview
| Module | Status | Views Refactored | Service Logic Moved | Notes |
|---|---|---|---|---|
| Company | 🟡 In Progress | 15/25+ | 15/25+ | Dashboard, Settings, Dropdowns, Contract Updates done |
| Employee | 🟡 In Progress | 8/18+ | 8/15 | Onboarding & Profile Management done |
| Contractor | 🟡 In Progress | 2/10 | 2/10 | Contract Creation & Onboarding done |
| Commons | 🟢 Completed | 1/1 | 1/1 | S3ObjectAccessView refactored |
| Holiday | 🟢 Completed | 3/3 | 3/3 | All views refactored |
| Users | 🟢 Completed | 8/8 | 8/8 | All views refactored |
| Leave | 🟢 Completed | 5/5 | 5/5 | All views refactored |
| Request | 🔴 Pending | 0/4 | 0/4 | - |
| Expense | 🟢 Completed | 3/3 | 3/3 | All views refactored |
| EKYC | 🔴 Pending | 0/8 | 0/8 | - |
| E-Signature | 🔴 Pending | 0/3 | 0/3 | - |
🏗️ Refactoring Patterns
[!NOTE] All refactorings MUST follow the "Thin View, Fat Service" pattern established in
EmployeeContractViewSet.create.
-
Services MUST handle:
- All business logic
- Email sending
- Async task scheduling
- Token generation
- Complex data preparation
- Multi-model transactions
-
Views MUST ONLY handle:
- Request validation (Serializer)
- Calling Service method
- Response formatting
- Exception handling
🗄️ Repositories
New Layer added for Data Access Abstraction.
repositories/base_repository.py- Generic repository methodsrepositories/company_repository.py- Company data accessrepositories/document_repository.py- Document data accessrepositories/employee_repository.py- Employee data accessrepositories/user_repository.py- User data access
📅 Detailed Progress
1. Company Module (company/views.py)
Service: CompanyService
Serializers: CompanySerializer, EmployeeContractSerializer, etc.
-
EmployeeContractViewSet.create(Refactored toEmployeeService) -
ContractorContractViewSet.create(Refactored toContractorService) -
CompanyBasicDetailsView.patch(Simplified) -
CompanyView.post(Registration) -
CompanyEmployeeViewSetlist/retrieve -
BonusPolicyView -
LeavePolicyView -
HolidayCalendarView -
CompanyDefaultSettingsView(Refactored to Service) -
DashboardUpcomingHolidaysView -
DashboardTeamInfoView -
DashboardContractSummaryView -
UpdateCompanyTotalHolidayAPIView -
ProbationNoticePeriodAPIView -
CompanyBGVPlanView -
CompanyWelcomeKitPlanView -
CompanyHealthInsurancePlanView -
DepartmentView(Not found/Skipped) -
EmployeeContractEmailPanValidateViewSet -
EmployeeContractUpdate2 -
EntityTypeView -
EmployeeContractStatusView -
CompanyEmployeeDropdownView -
EmployeeJobTitleDropdownView -
EmployeePersonalDetailsView(Admin) -
EmployeeBankDetailsView(Admin) -
EmployeeEmergencyContactDetailsView(Admin) -
IdentityDocumentsView -
CurrentEmploymentDocumentsView -
DownloadEmployeesDocumentView -
EmployeeContactRolloutAPIView -
EmployeeFamilyDetailEmployerView -
MarkSettingVisitedView -
SettingsStatusView
2. Employee Module (employee/views.py)
Service: EmployeeService
Serializers: EmployeeOnboardingSerializer, EmployeeDetailSerializer, etc.
-
EmployeeOnboardingView->EmployeeService.onboard_employee -
EmployeeOfferLetterView->EmployeeService.get_offer_letter_contract -
EmployeeAgreementView->EmployeeService.generate_employee_agreement -
BasicDetailsView->EmployeeService.update_basic_details -
ContactDetailsView->EmployeeService.update_contact_details -
BankDetailsView->EmployeeService.update_bank_details -
EmergencyContactDetailsView->EmployeeService.update_emergency_contact -
IdentityProofView->EmployeeService.update_identity_proof -
OnboardingTokenVerificationView -
EmployeePermissionView -
DownloadEmployeeOfferLetterView -
IdentityDocumentTypesView -
AddIdentityDocumentView -
EmployeeAgreementStatusView -
SalaryStructureBreakDownView -
EmployeeFamilyDetailView -
JoiningBonusRequestView -
IncomeTaxDeclaration/Update/Rollout/Consent(Tax Module Integration)
3. Contractor Module (contractor/views.py)
Service: ContractorService
-
ContractorOnboardingView->ContractorService.onboard_contractor -
ContractorBankDetailsView -
ContractorPersonalDetailsView
4. Commons Module (commons/views.py)
Service: DocumentService
-
DocumentUploadView(RefactoredS3ObjectAccessView) -
AddressView
5. Users Module (users/views.py)
Service: UserService
-
UserRegistrationView->UserService.register_user -
UserDetailView->UserService.get_user_context -
UserLoginView->UserService.login_user -
PasswordResetEmailView->UserService.send_password_reset -
ResetPasswordView->UserService.reset_password -
UpdatePasswordView->UserService.update_password -
SocialOAuthView->UserService.social_auth_login
6. Holiday Module (holiday/views.py)
Service: HolidayService
-
CompanyHolidayView->HolidayService.get_company_holidays -
CompanyFixedFloatingHolidayView->HolidayService.get_fixed_and_floating_holidays -
CompanyFloatingHolidayChangeStatusView->HolidayService.update_floating_holiday_status
7. Leave Module (leave/views.py)
Service: LeaveService
-
EmployeeLeaveTypeView->LeaveService.get_employee_leave_types -
EmployeeLeaveRequestView->LeaveService.create_leave_request -
FetchLeaveTypesAPIView->LeaveService.get_company_leave_types -
FetchLCompanyLeavesAPIView->LeaveService.get_company_leave_types(with only_active=True) -
EditLCompanyLeavesAPIView->LeaveService.update_company_leave_balances
8. Request Module (request/views.py)
Service: RequestService (To be created)
-
RequestTypeView -
RequestViewSet(CRUD) -
RequestStatusView -
EmployeeExpenseViewSet
9. Expense Module (expense/views.py)
Service: ExpenseService
-
EmployeeExpenseRequestView->ExpenseService.create_expense_request -
CompanyExpenseTypeView->ExpenseService.get_company_expense_types -
CompanyExpenseTypeAPIView->ExpenseService.get_company_expense_types/update_expense_types
10. EKYC Verification Module (ekyc_verification/views.py)
Service: EKYCService (To be created)
-
EKYCConsentView -
EmployeeOnboardingDetailView -
BankDetailsVerificationView -
GovernmentDocumentVerificationView -
FaceMatchVerificationView -
ResetEkycDetailsView -
AadharCardSendOTPView -
AadharCardVerifyOTPView -
ContractorBankDetailsVerificationView -
ContractorEKYCConsentView
11. E-Signature Module (e_signature/views.py)
Service: ESignatureService (To be created)
-
SignEasyWebhookViewedEventAPI -
SignEasyWebhookCompletedEventAPI -
SignEasyWebhookExpiredEventAPI