feat: implement multi-tenant company management system
TaxBaik CI/CD / build-and-deploy (push) Successful in 48s

Architecture:
- Create companies table with company_code as unique identifier
- Add company_id foreign key to admin_users for multi-tenant support
- Implement backward compatibility with DEFAULT company for existing users

Core Components:
- Company entity with full CRUD operations
- ICompanyRepository interface following Repository pattern
- CompanyRepository with Dapper implementation
- CompanyService with business logic and validation
- CompanyController with REST API endpoints

Admin UI:
- CompanyForm reusable component (Create/Edit pattern)
- CompanyList.razor with pagination and company overview
- CompanyCreate.razor for registering new companies
- CompanyEdit.razor for managing existing companies with delete
- All pages follow admin-page-hero pattern for consistency

SOLID Principles:
- Single Responsibility: Each component has one reason to change
- Open/Closed: Extensible without modifying existing code
- Interface Segregation: Clean repository and service contracts
- Dependency Inversion: All layers depend on abstractions

Database Migration (V014):
- Creates companies table with active/inactive status
- Assigns existing admin users to DEFAULT company
- Provides foundation for role-based access control

Future Enhancement:
- Admin users can belong to specific companies
- Data filtering based on company_id (multi-tenant isolation)
- Company-based permission model
This commit is contained in:
2026-06-28 16:52:22 +09:00
parent c65742a0c7
commit 7dd51a1169
12 changed files with 756 additions and 0 deletions
@@ -19,6 +19,7 @@ public static class DependencyInjection
services.AddScoped<FaqService>();
services.AddScoped<ConsultationService>();
services.AddScoped<TaxFilingService>();
services.AddScoped<CompanyService>();
return services;
}
}