namespace Shared.Contracts.Account; /// /// Contract Interface برای دسترسی به اطلاعات پایه کاربران از سایر ماژول‌ها /// این Interface به عنوان ACL (Anti-Corruption Layer) عمل می‌کند /// /// مزایا: /// - هیچ وابستگی به Implementation ندارد /// - ماژول‌های دیگر فقط به این Contract دسترسی دارند /// - امکان تبدیل به Microservice بدون Breaking Change /// - Testability بالا (Mock کردن آسان) /// public interface IAccountQueryService { /// /// دریافت اطلاعات پایه یک کاربر /// Task GetAccountAsync(long accountId); /// /// دریافت اطلاعات پایه لیستی از کاربران (Batch Query برای جلوگیری از N+1) /// Task> GetProgramManagerAccountListAsync(List accountIds); }