Skip to content

Commit b5886a7

Browse files
authored
[25.07.09 / TASK-215] Feature - 뉴스레터 배치 이슈 대응 & 리마인더 추가 (#34)
* refactor: 환경 변수 직접 로드 => Django settings를 통해 로드 * modify: 사용자 주간 통계 로직 수정 및 토큰 만료 리팩토링 * feature: 글 미작성 유저 리마인더 추가 * modify: 사소한 리뷰 반영 및 템플릿 렌더링 함수 분리 * modify: 주간 통계 쿼리 수정 및 date 유틸 추가 PostDailyStatistics로부터의 3중 조인 -> Post로부터의 2중 조인 * refactor: 주간 통계 조회 쿼리 개선 * modify: 예외 전파 구문 수정 * modify: select_related(inner join) 추가 * modify: 뉴스레터 배치에선 발송만 담당하도록 수정 모든 데이터 세팅은 분석 배치에서 실행됨 이에 따른 주간 통계 / 리마인더 함수 삭제 및 관련 스키마, 로직 수정 * modify: 토큰 만료 로직 수정 및 주석 수정
1 parent f952e5e commit b5886a7

File tree

8 files changed

+144
-171
lines changed

8 files changed

+144
-171
lines changed

backoffice/settings/base.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,13 @@
2626

2727
OPENAI_API_KEY = env("OPENAI_API_KEY", default="")
2828

29+
AWS_ACCESS_KEY_ID = env("AWS_ACCESS_KEY_ID", default="")
30+
AWS_SECRET_ACCESS_KEY = env("AWS_SECRET_ACCESS_KEY", default="")
31+
AWS_REGION = env("AWS_REGION", default="ap-northeast-2")
32+
DEFAULT_FROM_EMAIL = env(
33+
"DEFAULT_FROM_EMAIL", default="no-reply@velog-dashboard.kro.kr"
34+
)
35+
2936
SENTRY_DSN = env("SENTRY_DSN", default="")
3037
SENTRY_ENVIRONMENT = env("SENTRY_ENVIRONMENT", default="prod")
3138
SENTRY_TRACES_SAMPLE_RATE = env.float("SENTRY_TRACES_SAMPLE_RATE", default=1.0)

insight/models.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,19 @@ class TrendAnalysis(SerializableMixin):
3131
class WeeklyTrendInsight(SerializableMixin):
3232
trending_summary: list[TrendingItem] = field(default_factory=list)
3333
trend_analysis: TrendAnalysis = None
34+
"""
35+
user trend인 경우 아래 필드가 필요합니다.
36+
(템플릿 의존성 존재, 현우님께서 작업하시면서 변경 가능)
37+
reminder: { // 해당하는 주에 작성한 글이 없는 경우
38+
title: str
39+
days_ago: int
40+
}
41+
user_weekly_stats: { // 토큰 정상인 모든 유저가 갖고 있는 필드
42+
posts: int
43+
views: int
44+
likes: int
45+
}
46+
"""
3447

3548

3649
class WeeklyTrend(TimeStampedModel):

insight/schemas.py

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
from dataclasses import dataclass
22

3-
from insight.models import WeeklyTrendInsight
43
from modules.mail.schemas import EmailMessage
54

65

@@ -10,24 +9,10 @@ class NewsletterContext:
109
s_date: str
1110
e_date: str
1211
is_expired_token_user: bool
13-
weekly_trend_html: str | None = None
12+
weekly_trend_html: str
1413
user_weekly_trend_html: str | None = None
1514

1615

17-
# templates/insight/weekly_trend.html 데이터 스키마
18-
@dataclass
19-
class WeeklyTrendContext:
20-
insight: WeeklyTrendInsight
21-
22-
23-
# templates/insight/user_weekly_trend.html 데이터 스키마
24-
@dataclass
25-
class UserWeeklyTrendContext:
26-
user: dict[str, str] # username
27-
user_weekly_stats: dict[str, int] # posts, views, likes
28-
insight: WeeklyTrendInsight
29-
30-
3116
@dataclass
3217
class Newsletter:
3318
user_id: int

0 commit comments

Comments
 (0)