29 lines
981 B
Python
29 lines
981 B
Python
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} 个对话。"))
|