feat(server): scenario mapping (#13404)

fix AI-404

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Introduced scenario-based configuration for copilot, allowing default
model assignments for various AI use cases.
  * Added a new image generation model to the available options.

* **Improvements**
* Refined copilot provider settings by removing deprecated fallback
options and standardizing base URL configuration.
* Enhanced prompt management to support scenario-driven updates and
improved configuration handling.
* Updated admin and settings interfaces to support new scenario
configurations.

* **Bug Fixes**
* Removed deprecated or unused prompts and related references across
platforms for consistency.

* **Other**
* Improved test coverage and updated test assets to reflect prompt and
scenario changes.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
DarkSky
2025-08-04 17:50:38 +08:00
committed by GitHub
parent 7a93db4d12
commit 0fcb4cb0fe
23 changed files with 386 additions and 514 deletions

View File

@@ -104,22 +104,12 @@ export abstract class CopilotProvider<C = any> {
if (modelId) {
const hasOnlineModel = this.onlineModelList.includes(modelId);
const hasFallbackModel = cond.fallbackModel
? this.onlineModelList.includes(cond.fallbackModel)
: undefined;
const model = this.models.find(
m => m.id === modelId && m.capabilities.some(matcher)
);
if (model) {
// return fallback model if current model is not alive
if (!hasOnlineModel && hasFallbackModel) {
// oxlint-disable-next-line typescript-eslint(no-non-null-assertion)
return { id: cond.fallbackModel!, capabilities: [] };
}
return model;
}
if (model) return model;
// allow online model without capabilities check
if (hasOnlineModel) return { id: modelId, capabilities: [] };
return undefined;