1. 07 Aug, 2025 17 commits
  2. 06 Aug, 2025 13 commits
  3. 05 Aug, 2025 10 commits
    • feat(models): Revamp EditModelModal UI and UX · 029768e8
      This commit significantly refactors the `EditModelModal` component to streamline the user interface and enhance usability, aligning it with the interaction patterns found elsewhere in the application.
      
      - **Consolidated Layout:** Merged the "Vendor Information" and "Feature Configuration" sections into a single "Basic Information" card. This simplifies the form, reduces clutter, and makes all settings accessible in one view.
      
      - **Improved Prefill Groups:** Replaced the separate `Select` dropdowns for tag and endpoint groups with a more intuitive button-based system within the `extraText` of the `TagInput` components.
      
      - **Additive Button Logic:** The prefill group buttons now operate in an additive mode. Users can click multiple group buttons to incrementally add tags or endpoints, with duplicates being automatically handled.
      
      - **Clear Functionality:** Added "Clear" buttons for both tags and endpoints, allowing users to easily reset the fields.
      
      - **Code Cleanup:** Removed the unused `endpointOptions` constant and unnecessary icon imports (`Building`, `Settings`) to keep the codebase clean.
      t0ng7u committed
    • 🚀 refactor: migrate vendor-count aggregation to model layer & align frontend logic · ac054461
      Summary
      • Backend
        – Moved duplicate-name validation and total vendor-count aggregation from controllers (`controller/model_meta.go`, `controller/vendor_meta.go`, `controller/prefill_group.go`) to model layer (`model/model_meta.go`, `model/vendor_meta.go`, `model/prefill_group.go`).
        – Added `GetVendorModelCounts()` and `Is*NameDuplicated()` helpers; controllers now call these instead of duplicating queries.
        – API response for `/api/models` now returns `vendor_counts` with per-vendor totals across all pages, plus `all` summary.
        – Removed redundant checks and unused imports, eliminating `go vet` warnings.
      
      • Frontend
        – `useModelsData.js` updated to consume backend-supplied `vendor_counts`, calculate the `all` total once, and drop legacy client-side counting logic.
        – Simplified initial data flow: first render now triggers only one models request.
        – Deleted obsolete `updateVendorCounts` helper and related comments.
        – Ensured search flow also sets `vendorCounts`, keeping tab badges accurate.
      
      Why
      This refactor enforces single-responsibility (aggregation in model layer), delivers consistent totals irrespective of pagination, and removes redundant client queries, leading to cleaner code and better performance.
      t0ng7u committed
    • 🚀 refactor: refine pricing refresh logic & hide disabled models · cfb5b602
      Summary
      -------
      1. Pricing generation
         • `model/pricing.go`: skip any model whose `status != 1` when building
           `pricingMap`, ensuring disabled models are never returned to the
           front-end.
      
      2. Cache refresh placement
         • `controller/model_meta.go`
           – Removed `model.RefreshPricing()` from pure read handlers
             (`GetAllModelsMeta`, `SearchModelsMeta`).
           – Kept refresh only in mutating handlers
             (`Create`, `Update`, `Delete`), guaranteeing data is updated
             immediately after an admin change while avoiding redundant work
             on every read.
      
      Result
      ------
      Front-end no longer receives information about disabled models, and
      pricing cache refreshes occur exactly when model data is modified,
      improving efficiency and consistency.
      t0ng7u committed
    • feat: support aws bedrock apikey · d31027d5
      wzxjohn committed
    • feat: enhance soft-delete handling & boost pricing cache performance · d7428227
      Summary
      -------
      This commit unifies soft-delete behaviour across meta tables and
      introduces an in-memory cache for model pricing look-ups to improve
      throughput under high concurrency.
      
      Details
      -------
      Soft-delete consistency
      • PrefillGroup / Vendor / Model
        – Added `gorm.DeletedAt` field with `json:"-" gorm:"index"`.
        – Replaced plain `uniqueIndex` with partial unique indexes
          `uniqueIndex:<name>,where:deleted_at IS NULL`
          allowing duplicate keys after logical deletion while preserving
          uniqueness for active rows.
      • Imports updated to include `gorm.io/gorm`.
      • JSON output now hides `deleted_at`, matching existing tables.
      
      High-throughput pricing cache
      • model/pricing.go
        – Added thread-safe maps `modelEnableGroups` & `modelQuotaTypeMap`
          plus RW-mutex for O(1) access.
        – `updatePricing()` now refreshes these maps alongside `pricingMap`.
      • model/model_extra.go
        – Rewrote `GetModelEnableGroups` & `GetModelQuotaType` to read from
          the new maps, falling back to automatic refresh via `GetPricing()`.
      
      Misc
      • Retained `RefreshPricing()` helper for immediate cache invalidation
        after admin actions.
      • All modified files pass linter; no breaking DB migrations required
        (handled by AutoMigrate).
      
      Result
      ------
      – Soft-delete logic is transparent, safe, and allows record “revival”.
      – Pricing-related queries are now constant-time, reducing CPU usage and
        latency under load.
      t0ng7u committed