small bug fix
This commit is contained in:
1 parent
cd8bc56871
commit
b02504e5f8
8 files changed
No files matched your search
@@ -0,0 +1,72 @@
|
||||
from datetime import datetime
|
||||
from dataclasses import field
|
||||
|
||||
from pydantic.dataclasses import dataclass
|
||||
|
||||
|
||||
@dataclass
|
||||
class ConsumerConfig:
|
||||
# used claude to refactor the consumer building in the discord bot
|
||||
"""Configuration for a single retailer's consumer.
|
||||
|
||||
Attributes:
|
||||
monitor_name: Retailer name (matches setup_config key).
|
||||
collection: MongoDB collection for this retailer's products.
|
||||
channel_ids: Discord webhook/channel routing config.
|
||||
min_percentage: Minimum discount % to trigger a ping.
|
||||
ping_threshold: Price floor for the secondary 40% rule (e.g. Woot pings
|
||||
on 40%+ discounts if the item is >= this price). None disables
|
||||
the secondary rule.
|
||||
"""
|
||||
|
||||
monitor_name: str
|
||||
collection: object
|
||||
channel_ids: dict
|
||||
min_percentage: int
|
||||
ping_threshold: int | None = None
|
||||
|
||||
|
||||
@dataclass
|
||||
class PricingInfo:
|
||||
original_price: float
|
||||
current_price: float
|
||||
price_before_drop: float | None = None
|
||||
edu_price: float | None = None
|
||||
|
||||
|
||||
@dataclass
|
||||
class AvailabilityInfo:
|
||||
available: bool | None = None
|
||||
condition: str | None = None
|
||||
app_exclusive: bool | None = None
|
||||
member_pick: bool | None = None
|
||||
member_deal: bool | None = None
|
||||
|
||||
|
||||
@dataclass
|
||||
class ProductMetadata:
|
||||
image_url: str | None = None
|
||||
channel_id: str | None = None
|
||||
customization_index: str | None = None
|
||||
member_non_member_comparison: str | None = None
|
||||
overstock_text: str | None = None
|
||||
percentage: int | None = None
|
||||
affiliate_url: str | None = None
|
||||
|
||||
|
||||
@dataclass
|
||||
class ProductTiming:
|
||||
discovered_date: datetime | None = None
|
||||
start_date: datetime | None = None
|
||||
end_date: datetime | None = None
|
||||
|
||||
|
||||
@dataclass
|
||||
class Product:
|
||||
product_id: str
|
||||
title: str
|
||||
url: str
|
||||
pricing: PricingInfo
|
||||
metadata: ProductMetadata = field(default_factory=ProductMetadata)
|
||||
timing: ProductTiming = field(default_factory=ProductTiming)
|
||||
availability: AvailabilityInfo = field(default_factory=AvailabilityInfo)
|
||||
Reference in new issue
Block a user