diff --git a/submission/management/commands/classify_messages.py b/submission/management/commands/classify_messages.py new file mode 100644 index 0000000..64ecb90 --- /dev/null +++ b/submission/management/commands/classify_messages.py @@ -0,0 +1,28 @@ +from django.core.management.base import BaseCommand + +from prompt.models import Conversation +from submission.classifier import classify_conversation_messages + + +class Command(BaseCommand): + help = "为所有缺失 Bloom 等级的用户消息补全分类" + + def add_arguments(self, parser): + parser.add_argument( + "--force", + action="store_true", + help="重新分类所有消息(包括已有等级的)", + ) + + def handle(self, *args, **options): + force = options["force"] + convs = Conversation.objects.all() + total = convs.count() + self.stdout.write(f"共 {total} 个对话,开始分类...") + + for i, conv in enumerate(convs, 1): + classify_conversation_messages(conv.id, force=force) + self.stdout.write(f"[{i}/{total}] {conv}", ending="\r") + self.stdout.flush() + + self.stdout.write(self.style.SUCCESS(f"\n完成,处理了 {total} 个对话。"))