!theme mono title Recommendation Service - Class Diagram package "com.unicorn.lifesub.recommend" { package "domain" { class SpendingCategory { -category: String -totalAmount: Long } class RecommendedCategory { -spendingCategory: String -recommendCategory: String -baseDate: LocalDate } } package "service" { interface RecommendService { +getRecommendedCategory(userId: String): RecommendCategoryDTO } class RecommendServiceImpl { -recommendRepository: RecommendRepository -spendingRepository: SpendingRepository -spendingAnalyzer: SpendingAnalyzer +getRecommendedCategory(userId: String): RecommendCategoryDTO } class SpendingAnalyzer { +analyzeSpending(spendings: List): SpendingCategory -calculateTotalByCategory(spendings: List): Map -findTopCategory(totals: Map): SpendingCategory } } package "controller" { class RecommendController { -recommendService: RecommendService +getRecommendedCategory(userId: String): ResponseEntity> } } package "dto" { class RecommendCategoryDTO { -categoryName: String -baseDate: LocalDate -spendingCategory: String -totalSpending: Long } } package "repository" { package "jpa" { interface SpendingRepository { +findSpendingsByUserIdAndDateAfter(userId: String, startDate: LocalDate): List } interface RecommendRepository { +findBySpendingCategory(category: String): Optional } } package "entity" { class SpendingEntity { -id: Long -userId: String -category: String -amount: Long -spendingDate: LocalDate } class RecommendedCategoryEntity { -id: Long -spendingCategory: String -recommendCategory: String +toDomain(): RecommendedCategory } } } }