• erio's avatar
    fix: address audit findings across websearch, notify, and channel pricing · a68df457
    erio authored
    Backend fixes:
    - Fix balance notify ignoring percentage threshold type (was treating
      percentage value as fixed USD amount)
    - Remove dead code parseJSONStringArray
    - Add ImageOutputTokens to tryModelFilePricing calculation
    - Unify zero-value check: cost == 0 → cost <= 0 in calculateTokenStatsCost
    - Use MarshalNotifyEmails instead of json.Marshal for consistency
    - Rename quotaDim.oldUsed → currentUsed for clarity
    - Extract HTML email templates to const variables (function ≤30 lines)
    
    Test fixes:
    - Rewrite account_websearch_test.go for GetWebSearchEmulationMode tri-state
    - Add 6 tryModelFilePricing test cases
    
    Frontend fixes:
    - Replace hardcoded '未命名' with i18n key
    - Extract getBillingModeLabel/getBillingModeBadgeClass to shared utils
    - Replace inline type with imported NotifyEmailEntry
    - Pass platform to AccountStats pricing rules via inferRulePlatform()
    - Add billing mode constants (BILLING_MODE_TOKEN/PER_REQUEST/IMAGE)
    a68df457
ChannelsView.vue 58.1 KB