From 1a9f6763817791c8a8743c5c57e080578415c404 Mon Sep 17 00:00:00 2001
From: Christian Cueni
+
{{ $t("Demo Login") }} diff --git a/server/vbv_lernwelt/assignment/creators/create_assignments.py b/server/vbv_lernwelt/assignment/creators/create_assignments.py index a20153d2..c0ba555d 100644 --- a/server/vbv_lernwelt/assignment/creators/create_assignments.py +++ b/server/vbv_lernwelt/assignment/creators/create_assignments.py @@ -1565,6 +1565,384 @@ def create_vv_reflection( return assignment +def create_vv_gewinnen_casework(course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID): + assignment_list_page = ( + CoursePage.objects.get(course_id=course_id) + .get_children() + .exact_type(AssignmentListPage) + .first() + ) + + assignment = AssignmentFactory( + parent=assignment_list_page, + title="Mein Kundenstamm", + effort_required="60 bis 90 Minuten", + intro_text=replace_whitespace( + """ +
Zum Ausbau und zur Pflege deines Kundenportfolios gilt es nicht nur neue Kunden zu gewinnen, sondern vor allem daran zu denken, dass bei deinen bestehenden Kunden viel Potenzial liegt. Je besser du dein Portfolio kennst, desto einfacher ist es, weitere Leads zu generieren. Wenn du deinen Kundenstamm genau unter die Lupe nimmst, findest du bestimmt einige Möglichkeitenfür weitere Kundenkontakte und die Chance für weitere Abschlüsse.
++ Du hast bereits einige bestehende Kunden, die du beraten hast, oder du hast den Kundenstamm von einer Kollegin/einem Kollegen übernommen. Jetzt geht es darum, deinen Kundenstamm etwas genauer unter die Lupe zu nehmen. +
+Finde innerhalb deiner Organisation eine Person, die dich, während dem Lernprozess begleitet und dir Feedback zu den Ergebnissen deines Praxisauftrags geben kann. Dies können deine Vorgesetzte/dein Vorgesetzter oder eine Kollegin/ein Kollege sein.
++ Vereinbare mit dieser Person einen Termin fürs Feedback. +
+ + """ + ), + performance_objectives=[ + ( + "performance_objective", + PerformanceObjectiveBlockFactory( + text="Optimierungspotential bei bestehenden Kunden feststellen (B 3.2)" + ), + ), + ( + "performance_objective", + PerformanceObjectiveBlockFactory( + text="Aufgrund der Portfolios passende Zusatzprodukte anbieten (Cross-Selling) (C 1.3)" + ), + ), + ( + "performance_objective", + PerformanceObjectiveBlockFactory( + text="Den Kontakt zu bestehenden Kunden über diverse Medien und an Kundenanlässen aufrechterhalten (C 4.1)" + ), + ), + ( + "performance_objective", + PerformanceObjectiveBlockFactory( + text="Die Kunden regelmässig über aktuelle Angebote und Produkte informieren (C 4.2)" + ), + ), + ], + evaluation_document_url="", + evaluation_description="", + ) + + assignment.evaluation_tasks = [] + + assignment.tasks = [] + assignment.tasks.append( + ( + "task", + TaskBlockFactory( + title="Teilaufgabe 1: Filtere nach Kundeneigenschaften", + # it is hard to create a StreamValue programmatically, we have to + # create a `StreamValue` manually. Ask Daniel and/or Ramon + content=StreamValue( + TaskContentStreamBlock(), + stream_data=[ + ( + "explanation", + ExplanationBlockFactory( + text=RichText( + replace_whitespace( + """ +Wer sind deine Kundinnen und Kunden? Welche Versicherungslösungen haben sie bereits abgeschlossen?
+Um die Kundendaten auszuwerten, kannst du deine Kundschaft unterschiedlich gruppieren.
+ """ + ) + ) + ), + ), + ( + "user_text_input", + UserTextInputBlockFactory( + text=RichText( + """ +Nach welchen Kundeneigenschaften kannst du filtern?
+ """ + ) + ), + ), + ( + "user_text_input", + UserTextInputBlockFactory( + text=RichText( + """ +Wozu dient diese Selektierung?
+ """ + ) + ), + ), + ( + "user_text_input", + UserTextInputBlockFactory( + text=RichText( + """ +Filtere deinen Kundenstamm z. B. nach «Altersgruppe: 50+»
+Wähle aus dem Filterergebnis einen Kunden/eine Kundin aus und schau dir dessen/deren Policen an: Welche Versicherungen hat er/sie bereits?
+ """ + ) + ), + ), + ( + "user_text_input", + UserTextInputBlockFactory( + text=RichText( + """ +Bei welchen Bereichensiehst du bei dieser Kundin/diesem Kunden noch Potenzial für weitere Versicherungen?
+Ziehe das Versicherungsangebot deiner Gesellschaft bei.
+ """ + ) + ), + ), + ( + "user_text_input", + UserTextInputBlockFactory( + text=RichText( + """ +Formuliere für dich ein paar mögliche Sätze, um mit diesem Kunden/dieser Kundin per Telefon einen Beratungstermin zu vereinbaren.
+ """ + ) + ), + ), + ], + ), + ), + ) + ) + + assignment.tasks.append( + ( + "task", + TaskBlockFactory( + title="Teilaufgabe 2: Filtere nach Versicherungen", + content=StreamValue( + TaskContentStreamBlock(), + stream_data=[ + ( + "explanation", + ExplanationBlockFactory( + text=RichText( + replace_whitespace( + """ + Filtere nach VersicherungenNebst den Kundeneigenschaften kannst du im Kundenstamm auch nach spezifischen Versicherungen suchen, um Unter-/Überversicherung oder Lücken zu entdecken oder um Up- oder Cross-Selling anzuwenden. + """ + ) + ) + ), + ), + ( + "user_text_input", + UserTextInputBlockFactory( + text=RichText( + """ +Suche in den bestehenden Policen nach einer möglichen Unter- oder Überversicherung. Worauf achtest du?
+ """ + ) + ), + ), + ( + "user_text_input", + UserTextInputBlockFactory( + text=RichText( + """ +Filtere deinen Kundenstamm z. B. nach «Motorfahrzeugversicherung: Vollkasko»
+Wähle aus dem Filterergebnis einen Kunden/eine Kundin aus: Passt die Motorfahrzeug-Police noch zur aktuellen Situation (Fahrzeugalter, Pannenhilfe)?
+ """ + ) + ), + ), + ( + "user_text_input", + UserTextInputBlockFactory( + text=RichText( + """ +Wo siehst du noch Potenzial für weitere Versicherungen?
+Nutze dabei das Versicherungsangebot deiner Gesellschaft.
+ """ + ) + ), + ), + ( + "user_text_input", + UserTextInputBlockFactory( + text=RichText( + """ +Wie kontaktierst du diesen Kunden/diese Kundin, um ihn/sie auf eine passendere Versicherungslösung hinzuweisen?
+ """ + ) + ), + ), + ], + ), + ), + ) + ) + + assignment.tasks.append( + ( + "task", + TaskBlockFactory( + title="Teilaufgabe 3: Filtere nach besonderen Ereignissen", + content=StreamValue( + TaskContentStreamBlock(), + stream_data=[ + ( + "explanation", + ExplanationBlockFactory( + text=RichText( + replace_whitespace( + """ +Bei den Beratungsgesprächen hast du oder deine Vorgänger Notizen zu besonderen Ereignissen deiner Kunden und Kundinnen festgehalten. Nütze solche Ereignisse für die Kontaktaufnahme mit deiner Kundschaft.
+ """ + ) + ) + ), + ), + ( + "user_text_input", + UserTextInputBlockFactory( + text=RichText( + """ +Welche Ereignisse im Leben einer Kundin/eines Kunden können welches Versicherungspotenzial bieten?
+ """ + ) + ), + ), + ( + "user_text_input", + UserTextInputBlockFactory( + text=RichText( + """ +Beschäftige dich mit den Möglichkeiten deines Systems. Welche Filtermöglichkeiten stehen dir zur Verfügung?
+Notiere dir, welche Filterfunktionen du besonders hilfreich findest und wie du sie aktiv nutzen willst.
+ """ + ) + ), + ), + ], + ), + ), + ) + ) + + assignment.tasks.append( + ( + "task", + TaskBlockFactory( + title="Teilaufgabe 4: Kundentelefonate", + content=StreamValue( + TaskContentStreamBlock(), + stream_data=[ + ( + "user_text_input", + UserTextInputBlockFactory( + text=RichText( + """ +Notiere, welche fünf Kunden du nächste Woche für ein Beratungsgespräch telefonisch kontaktieren willst.
+ """ + ) + ), + ), + ], + ), + ), + ) + ) + + assignment.tasks.append( + ( + "task", + TaskBlockFactory( + title="Teilaufgabe 5: Kundenkontakte pflegen", + content=StreamValue( + TaskContentStreamBlock(), + stream_data=[ + ( + "explanation", + ExplanationBlockFactory( + text=RichText( + replace_whitespace( + """ +Dein bestehender Kundenstamm ist ein wertvoller Pool mit Potenzial, um weitere Versicherungslösungen anzubieten. Damit du die gute Beziehung zu deiner Kundschaft aufrechterhalten kannst, hast du nebst der Analyse des Kundenstamms noch weitere Optionen.
+ """ + ) + ) + ), + ), + ( + "user_text_input", + UserTextInputBlockFactory( + text=RichText( + """ + Welche weiteren Möglichkeiten hast du, um den Kontakt zu bestehenden Kundinnen/Kunden zu pflegen? + """ + ) + ), + ), + ], + ), + ), + ) + ) + + assignment.tasks.append( + ( + "task", + TaskBlockFactory( + title="Teilaufgabe 6: Reflexion und Learnings", + content=StreamValue( + TaskContentStreamBlock(), + stream_data=[ + ( + "explanation", + ExplanationBlockFactory( + text=RichText( + replace_whitespace( + """ + Welche Erkenntnisse nimmst du aus diesem Praxisauftrag mit? + """ + ) + ) + ), + ), + ( + "user_text_input", + UserTextInputBlockFactory( + text=RichText( + """ + Auf welche Weise wirst du deinen Kundenstamm durchforsten, um das Optimierungspotenzial deiner Kundinnen/Kunden zu erkennen? + """ + ) + ), + ), + ( + "user_text_input", + UserTextInputBlockFactory( + text=RichText( + """ + Frage zwei, drei Kolleginnen/Kollegen, wie sie ihren Kundenstamm pflegen. + """ + ) + ), + ), + ( + "user_text_input", + UserTextInputBlockFactory( + text=RichText( + """ + Wie wirst du deine bestehende Kundschaft pflegen? + """ + ) + ), + ), + ], + ), + ), + ) + ) + + assignment.save() + + return assignment + + def create_vv_einkommenssicherung_casework( course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID, ): diff --git a/server/vbv_lernwelt/core/create_default_users.py b/server/vbv_lernwelt/core/create_default_users.py index b42d4735..45215a00 100644 --- a/server/vbv_lernwelt/core/create_default_users.py +++ b/server/vbv_lernwelt/core/create_default_users.py @@ -131,13 +131,14 @@ def create_default_users(user_model=User, group_model=Group, default_password=No _create_student_user( email="expert-vv.expert1@eiger-versicherungen.ch", - first_name="Expert", - last_name="Expert1", + first_name="Heidi", + last_name="Zurbuchen", ) _create_student_user( email="expert-vv.expert2@eiger-versicherungen.ch", - first_name="Expert", - last_name="Expert2", + first_name="Christa", + last_name="von Allmen", + avatar_url="/static/avatars/uk1.patrizia.huggel.jpg", ) _create_student_user( email="expert-vv.expert3@eiger-versicherungen.ch", diff --git a/server/vbv_lernwelt/course/management/commands/create_default_courses.py b/server/vbv_lernwelt/course/management/commands/create_default_courses.py index 6d7b1e00..f503ad39 100644 --- a/server/vbv_lernwelt/course/management/commands/create_default_courses.py +++ b/server/vbv_lernwelt/course/management/commands/create_default_courses.py @@ -11,6 +11,7 @@ from vbv_lernwelt.assignment.creators.create_assignments import ( create_uk_reflection, create_vv_einkommenssicherung_casework, create_vv_gesundheit_casework, + create_vv_gewinnen_casework, create_vv_reflection, ) from vbv_lernwelt.assignment.models import Assignment @@ -136,6 +137,7 @@ def create_versicherungsvermittlerin_course(): course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID ) create_vv_gesundheit_casework(course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID) + create_vv_gewinnen_casework(course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID) create_vv_reflection(course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID) create_vv_new_learning_path() diff --git a/server/vbv_lernwelt/learnpath/create_vv_new_learning_path.py b/server/vbv_lernwelt/learnpath/create_vv_new_learning_path.py index 64422662..0d71878c 100644 --- a/server/vbv_lernwelt/learnpath/create_vv_new_learning_path.py +++ b/server/vbv_lernwelt/learnpath/create_vv_new_learning_path.py @@ -74,22 +74,6 @@ def create_vv_new_learning_path( create_circle_selbstaendigkeit(lp) create_circle_kmu(lp) - create_circle_standard_small( - lp, - title="Selbstständigkeit", - description=VV_CIRCLE_GOALS["selbstständigkeit"]["description"], - lc_title="Patrizia macht sich selbstständig", - lu_title="Selbstständigerwerbende versichern", - goals=VV_CIRCLE_GOALS["selbstständigkeit"]["goals"], - ) - create_circle_standard( - lp, - title="KMU", - description=VV_CIRCLE_GOALS["kmu"]["description"], - lc_title="Anne Fleur übernimmt den Blumenladen", - goals=VV_CIRCLE_GOALS["kmu"]["goals"], - ) - TopicFactory(title="Prüfung", parent=lp) create_circle_pruefungsvorbereitung(lp) create_circle_pruefung(lp) @@ -243,6 +227,7 @@ def create_circle_gewinnen(lp, title="Gewinnen"): title="Verschaffe dir einen Überblick", parent=circle, ) + course_slug = lp.slug.replace("-lp", "") LearningSequenceFactory(title="Verkaufsgrundlagen", parent=circle) LearningUnitFactory(title="Verkaufsgrundlagen", parent=circle) @@ -279,10 +264,13 @@ def create_circle_gewinnen(lp, title="Gewinnen"): title="Vom Lead zum Termin/Telefon auf Empfehlung/Neukundengewinnung", parent=circle, ) - LearningContentPlaceholderFactory( + LearningContentAssignmentFactory( title="Mein Kundenstamm", parent=circle, - ) + content_assignment=Assignment.objects.get( + slug__startswith=f"{course_slug}-assignment-mein-kundenstamm" + ), + ), LearningContentPlaceholderFactory( title="Selbsteinschätzung", parent=circle, @@ -898,7 +886,7 @@ def create_circle_gesundheit(lp, title="Gesundheit"): LearningSequenceFactory(title="Transfer", parent=circle, icon="it-icon-ls-end") LearningUnitFactory(title="Transfer", title_hidden=True, parent=circle) LearningContentAssignmentFactory( - title="Heirat: Was ändert sich", + title="Krankenversicherung: Passt die Lösung noch?", parent=circle, content_assignment=Assignment.objects.get( slug__startswith=f"{course_slug}-assignment-krankenversicherung-passt-die-lösung-noch" @@ -994,7 +982,7 @@ def create_circle_kmu(lp, title="KMU"): title=title, parent=lp, description=VV_CIRCLE_GOALS["kmu"]["description"], - goals=VV_CIRCLE_GOALS["kmu"], + goals=VV_CIRCLE_GOALS["kmu"]["description"], ) LearningSequenceFactory(title="Einführung", parent=circle, icon="it-icon-ls-start") LearningUnitFactory(title="Einführung", parent=circle, title_hidden=True)