実装完了
作成・変更したファイル バックエンド(新規): apps/mail/models.py — MailSender, MailEmail, MailNotificationToken apps/mail/serializers.py apps/mail/views.py — Windmill用API、フィードバック、ルール管理 apps/mail/urls.py apps/mail/admin.py マイグレーション(自動生成・適用済み) バックエンド(変更): settings.py — apps.mail 追加、MAIL_API_KEY/FRONTEND_URL 環境変数 urls.py — /api/mail/ 追加 フロントエンド(新規): mail/feedback/[token]/page.tsx — 認証不要、フィードバック3択+スコープ選択 mail/rules/page.tsx — ルール管理(一覧・追加・削除) フロントエンド(変更): Navbar.tsx — 「メールルール」メニュー追加 types/index.ts — MailSender, MailEmailFeedback 型追加 次のステップ(Windmill側) Keinaシステム側の実装は完了しています。次はWindmillにIMAPポーリングスクリプトを書く必要があります。Windmillのスクリプトが必要になったタイミングでお声がけください。
This commit is contained in:
42
backend/apps/mail/serializers.py
Normal file
42
backend/apps/mail/serializers.py
Normal file
@@ -0,0 +1,42 @@
|
||||
from rest_framework import serializers
|
||||
from .models import MailSender, MailEmail
|
||||
|
||||
|
||||
class MailSenderSerializer(serializers.ModelSerializer):
|
||||
type = serializers.SerializerMethodField()
|
||||
|
||||
class Meta:
|
||||
model = MailSender
|
||||
fields = ['id', 'type', 'email', 'domain', 'rule', 'note', 'created_at']
|
||||
|
||||
def get_type(self, obj):
|
||||
return 'address' if obj.email else 'domain'
|
||||
|
||||
def validate(self, data):
|
||||
email = data.get('email')
|
||||
domain = data.get('domain')
|
||||
if not email and not domain:
|
||||
raise serializers.ValidationError("email または domain のどちらかを指定してください")
|
||||
if email and domain:
|
||||
raise serializers.ValidationError("email と domain を同時に指定することはできません")
|
||||
return data
|
||||
|
||||
|
||||
class MailEmailCreateSerializer(serializers.ModelSerializer):
|
||||
"""Windmill からの POST 用"""
|
||||
class Meta:
|
||||
model = MailEmail
|
||||
fields = [
|
||||
'account', 'message_id', 'sender_email', 'sender_domain',
|
||||
'subject', 'body_preview', 'received_at', 'llm_verdict'
|
||||
]
|
||||
|
||||
|
||||
class FeedbackDetailSerializer(serializers.ModelSerializer):
|
||||
"""フィードバックページ表示用"""
|
||||
class Meta:
|
||||
model = MailEmail
|
||||
fields = [
|
||||
'id', 'sender_email', 'sender_domain', 'subject',
|
||||
'body_preview', 'received_at', 'feedback'
|
||||
]
|
||||
Reference in New Issue
Block a user