diff --git a/app/admin_api/serializers/notification.py b/app/admin_api/serializers/notification.py index 0a69f86..3d7062f 100644 --- a/app/admin_api/serializers/notification.py +++ b/app/admin_api/serializers/notification.py @@ -142,7 +142,15 @@ class _NotiTemplateAdminSerializerBase(BaseAbstractSerializer, JsonSchemaSeriali template_variables = serializers.SerializerMethodField() class Meta: - fields = COMMON_ADMIN_FIELDS + ("code", "title", "description", "data", "sent_from", "template_variables") + fields = COMMON_ADMIN_FIELDS + ( + "code", + "title", + "description", + "data", + "editor_source", + "sent_from", + "template_variables", + ) def get_template_variables(self, obj: NotificationTemplateBase) -> list[str]: return sorted(obj.template_variables) diff --git a/app/notification/migrations/0003_emailnotificationtemplate_editor_source_and_more.py b/app/notification/migrations/0003_emailnotificationtemplate_editor_source_and_more.py new file mode 100644 index 0000000..373b85c --- /dev/null +++ b/app/notification/migrations/0003_emailnotificationtemplate_editor_source_and_more.py @@ -0,0 +1,22 @@ +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [("notification", "0002_emailnotificationhistorysentto_failure_reason_and_more")] + operations = [ + migrations.AddField( + model_name="emailnotificationtemplate", + name="editor_source", + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name="nhncloudkakaoalimtalknotificationtemplate", + name="editor_source", + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name="nhncloudsmsnotificationtemplate", + name="editor_source", + field=models.TextField(blank=True, null=True), + ), + ] diff --git a/app/notification/models/base.py b/app/notification/models/base.py index 8cad6d9..9836e12 100644 --- a/app/notification/models/base.py +++ b/app/notification/models/base.py @@ -58,6 +58,10 @@ class NotificationTemplateBase(BaseAbstractModel): description = models.TextField(null=True, blank=True) data = models.TextField() + # 에디터(예: @react-email/renderer)가 다루는 source-of-truth. + # 발송 경로는 data만 사용하며, 에디터가 저장 시점에 컴파일된 결과를 data에 기록. + editor_source = models.TextField(null=True, blank=True) + # Email: from address, SMS: 발신번호, Kakao: sender key sent_from = models.CharField(max_length=256)