Complete CarPass product flows
This commit is contained in:
@@ -36,6 +36,54 @@ class MissingItem:
|
||||
|
||||
|
||||
DEFAULT_ACHIEVEMENTS = [
|
||||
{
|
||||
"code": "vehicle_added",
|
||||
"scope": "vehicle",
|
||||
"title": "Авто добавлено",
|
||||
"description": "В гараже появилась первая карточка автомобиля.",
|
||||
"icon": "car",
|
||||
"category": "profile",
|
||||
},
|
||||
{
|
||||
"code": "vin_added",
|
||||
"scope": "vehicle",
|
||||
"title": "VIN указан",
|
||||
"description": "Идентификация автомобиля стала надежнее.",
|
||||
"icon": "vin",
|
||||
"category": "profile",
|
||||
},
|
||||
{
|
||||
"code": "license_plate_added",
|
||||
"scope": "vehicle",
|
||||
"title": "Госномер указан",
|
||||
"description": "Карточку проще связать с сервисными визитами.",
|
||||
"icon": "plate",
|
||||
"category": "profile",
|
||||
},
|
||||
{
|
||||
"code": "vehicle_profile_half",
|
||||
"scope": "vehicle",
|
||||
"title": "Карточка авто заполнена на 50%",
|
||||
"description": "Данных уже достаточно для базовой аналитики.",
|
||||
"icon": "progress",
|
||||
"category": "profile",
|
||||
},
|
||||
{
|
||||
"code": "vehicle_profile_full",
|
||||
"scope": "vehicle",
|
||||
"title": "Карточка авто заполнена полностью",
|
||||
"description": "Цифровой паспорт автомобиля готов к эксплуатации.",
|
||||
"icon": "passport",
|
||||
"category": "profile",
|
||||
},
|
||||
{
|
||||
"code": "first_fuel_record",
|
||||
"scope": "vehicle",
|
||||
"title": "Первая заправка",
|
||||
"description": "Расход топлива начал формировать историю владения.",
|
||||
"icon": "fuel",
|
||||
"category": "tracking",
|
||||
},
|
||||
{
|
||||
"code": "first_service_record",
|
||||
"scope": "vehicle",
|
||||
@@ -371,6 +419,47 @@ async def evaluate_vehicle_achievements(
|
||||
visits: list[ServiceVisit],
|
||||
) -> None:
|
||||
achievements = await ensure_default_achievements(session)
|
||||
await unlock_achievement(
|
||||
session,
|
||||
user_id=car.owner_id,
|
||||
vehicle_id=car.id,
|
||||
achievement=achievements["vehicle_added"],
|
||||
)
|
||||
if car.vin_normalized:
|
||||
await unlock_achievement(
|
||||
session,
|
||||
user_id=car.owner_id,
|
||||
vehicle_id=car.id,
|
||||
achievement=achievements["vin_added"],
|
||||
)
|
||||
if car.license_plate_normalized:
|
||||
await unlock_achievement(
|
||||
session,
|
||||
user_id=car.owner_id,
|
||||
vehicle_id=car.id,
|
||||
achievement=achievements["license_plate_added"],
|
||||
)
|
||||
if vehicle_score.completeness_score >= 50:
|
||||
await unlock_achievement(
|
||||
session,
|
||||
user_id=car.owner_id,
|
||||
vehicle_id=car.id,
|
||||
achievement=achievements["vehicle_profile_half"],
|
||||
)
|
||||
if vehicle_score.completeness_score >= 95:
|
||||
await unlock_achievement(
|
||||
session,
|
||||
user_id=car.owner_id,
|
||||
vehicle_id=car.id,
|
||||
achievement=achievements["vehicle_profile_full"],
|
||||
)
|
||||
if fuel_entries:
|
||||
await unlock_achievement(
|
||||
session,
|
||||
user_id=car.owner_id,
|
||||
vehicle_id=car.id,
|
||||
achievement=achievements["first_fuel_record"],
|
||||
)
|
||||
if service_entries or visits:
|
||||
await unlock_achievement(
|
||||
session,
|
||||
|
||||
Reference in New Issue
Block a user