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) diff --git a/envfile/.env.local b/envfile/.env.local index b01b8c1..ae6b324 100644 --- a/envfile/.env.local +++ b/envfile/.env.local @@ -1,7 +1,8 @@ DJANGO_DEFAULT_STORAGE_BACKEND=django.core.files.storage.FileSystemStorage DJANGO_STATIC_STORAGE_BACKEND=django.contrib.staticfiles.storage.StaticFilesStorage DATABASE_ENGINE=django.db.backends.postgresql -DATABASE_NAME=pyconkr-backend-db +DATABASE_NAME=pyconkr_2025_test_db +LEGACY_DATABASE_NAME=pyconkr_purchase_test_db DATABASE_HOST=127.0.0.1 DATABASE_PORT=45432 DATABASE_USER=user