- 07 Aug, 2025 17 commits
-
-
t0ng7u committed
-
✨ ✨ feat(pricing+endpoints+ui): wire custom endpoint mapping end‑to‑end and overhaul visual JSON editor Backend (Go) - Include custom endpoints in each model’s SupportedEndpointTypes by parsing Model.Endpoints (JSON) and appending keys alongside native endpoint types. - Build a global supportedEndpointMap map[string]EndpointInfo{path, method} by: - Seeding with native defaults. - Overriding/adding from models.endpoints (accepts string path → default POST, or {path, method}). - Expose supported_endpoint at the top level of /api/pricing (vendors-like), removing per-model duplication. - Fix default path for EndpointTypeOpenAIResponse to /v1/responses. - Keep concurrency/caching for pricing retrieval intact. Frontend (React) - Fetch supported_endpoint in useModelPricingData and propagate to PricingPage → ModelDetailSideSheet → ModelEndpoints. - ModelEndpoints - Resolve path+method via endpointMap; replace {model} with actual model name. - Fix mobile visibility; always show path and HTTP method. - JSONEditor - Wrap with Form.Slot to inherit form layout; simplify visual styles. - Use Tabs for “Visual” / “Manual” modes. - Unify editors: key-value editor now supports nested JSON: - “+” to convert a primitive into an object and add nested fields. - Add “Convert to value” for two‑way toggle back from object. - Stable key rename without reordering rows; new rows append at bottom. - Use Row/Col grid for clean alignment; region editor uses Form.Slot + grid. - Editing flows - EditModelModal / EditPrefillGroupModal use JSONEditor (editorType='object') for endpoint mappings. - PrefillGroupManagement renders endpoint group items by JSON keys. Data expectations / compatibility - models.endpoints should be a JSON object mapping endpoint type → string path or {path, method}. Strings default to POST. - No schema changes; existing TEXT field continues to store JSON. QA - /api/pricing now returns custom endpoint types and global supported_endpoint. - UI shows both native and custom endpoints; paths/methods render on mobile; nested editing works and preserves order.t0ng7u committed -
Fix/gemini-fetch-models
Calcium-Ion committed -
Fix/disable-gemini-ping
Calcium-Ion committed -
CaIon committed
-
CaIon committed
-
feat: support deepseek claude format (convert)
Calcium-Ion committed -
feat: support qwen claude format
Calcium-Ion committed -
CaIon committed
-
CaIon committed
-
feat: enable thinking mode on ali thinking model
IcedTangerine committed -
CaIon committed
-
CaIon committed
-
feitianbubu committed
-
t0ng7u committed
-
🎨 Add visual distinction for enabled/disabled models by applying different background colors to table rows based on model status. This implementation follows the same pattern used in ChannelsTable for consistent user experience. Changes: - Modified handleRow function in useModelsData.js to include row styling - Disabled models (status !== 1) now display with gray background using --semi-color-disabled-border CSS variable - Enabled models (status === 1) maintain normal background color - Preserved existing row click selection functionality This enhancement improves the visual feedback for users to quickly identify which models are active vs inactive in the models management interface.
t0ng7u committed
-
- 06 Aug, 2025 13 commits
-
-
RedwindA committed
-
RedwindA committed
-
RedwindA committed
-
RedwindA committed
-
Xyfacai committed
-
Xyfacai committed
-
CaIon committed
-
CaIon committed
-
CaIon committed
-
feat: support aws bedrock apikey
Calcium-Ion committed -
fix:修复添加模型倍率时的输入框锁定
Calcium-Ion committed -
feat: add support for claude-opus-4-1 model and update ratios
Calcium-Ion committed -
fix: responses cache token 未计费
Calcium-Ion committed
-
- 05 Aug, 2025 10 commits
-
-
✨ 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 -
🚀 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 -
neotf committed
-
t0ng7u committed
-
RedwindA committed
-
🚀 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 -
creamlike1024 committed
-
wzxjohn committed
-
creamlike1024 committed
-
✨ 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
-