размещения ручки

This commit is contained in:
Artem Tsyrulnikov
2026-01-20 20:15:18 +03:00
parent 33c9121571
commit e8ff317566
35 changed files with 949 additions and 290 deletions

View File

@@ -60,20 +60,29 @@ def _format_period_label(dt: datetime.datetime, grouping: dto.DateGrouping) -> s
raise ValueError('Invalid date grouping')
def _get_placement_date(placement_post: domain.PlacementPost) -> datetime.datetime:
placement = placement_post.placement
if placement and placement.placement_at:
return placement.placement_at
if placement_post.post and placement_post.post.created_at:
return placement_post.post.created_at
return placement_post.created_at
def _get_grouping_date(placement_post: domain.PlacementPost, date_grouping: dto.DateGroupingType) -> datetime.datetime:
match date_grouping:
case dto.DateGroupingType.PLACEMENT_DATE:
return placement_post.wanted_placement_date
return _get_placement_date(placement_post)
case dto.DateGroupingType.PURCHASE_DATE:
if placement_post.placement:
return placement_post.placement.created_at
return placement_post.wanted_placement_date # Fallback
return _get_placement_date(placement_post) # Fallback
case dto.DateGroupingType.LINK_DATE:
if placement_post.placement:
return placement_post.placement.created_at
return placement_post.wanted_placement_date # Fallback
return _get_placement_date(placement_post) # Fallback
case _:
return placement_post.wanted_placement_date
return _get_placement_date(placement_post)
@dataclass
@@ -223,7 +232,8 @@ async def get_projects_analytics(
pd.purchases_count += 1
total_metrics.purchases_count += 1
cost = placement_post.cost or 0.0
placement = placement_post.placement
cost = placement.cost_value if placement and placement.cost_value is not None else 0.0
pd.total_cost += cost
total_metrics.total_cost += cost
@@ -241,7 +251,6 @@ async def get_projects_analytics(
total_metrics.reach_volume += views_count
# Расчет скидок
placement = placement_post.placement
if placement and placement.cost_before_bargain and placement.cost_before_bargain > cost:
discount = placement.cost_before_bargain - cost
discount_percent = (