perf(queue): 按策略动态扩缩异步 Worker
将 River 执行容量按平台模型与用户组的有效并发策略动态调整,并为长任务续租、并发租约原子抢占和限流退避补充保护。\n\n统一平台模型限流继承语义,兼容历史 platformLimits/modelLimits,并为三个迁移图像模型建立独立并发租约。补充管理端显式继承/覆盖配置、指标、单元测试及隔离 PostgreSQL 验收。\n\n验证:go test ./... -count=1;pnpm lint;pnpm test;pnpm build;隔离 PostgreSQL 并发原子性/续租测试;128 任务与三分钟长任务动态 Worker 验收。
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
import type { BaseModelCatalogItem } from '@easyai-ai-gateway/contracts';
|
||||
import { describe, expect, it } from 'vitest';
|
||||
import { createEmptyPlatformForm, platformModelPayloads } from './platform-form';
|
||||
|
||||
const baseModel = {
|
||||
id: 'model-1',
|
||||
providerKey: 'simulation',
|
||||
canonicalModelKey: 'simulation:model-1',
|
||||
invocationName: 'model-1',
|
||||
providerModelName: 'model-1',
|
||||
modelType: ['video_generate'],
|
||||
modelAlias: 'model-1',
|
||||
displayName: 'Model 1',
|
||||
referenceCount: 0,
|
||||
pricingVersion: 1,
|
||||
status: 'active',
|
||||
createdAt: '2026-07-24T00:00:00Z',
|
||||
updatedAt: '2026-07-24T00:00:00Z',
|
||||
} satisfies BaseModelCatalogItem;
|
||||
|
||||
function selectedForm() {
|
||||
return {
|
||||
...createEmptyPlatformForm('simulation'),
|
||||
selectedModelIds: [baseModel.id],
|
||||
};
|
||||
}
|
||||
|
||||
describe('platform model rate limit payload', () => {
|
||||
it('preserves an existing model policy when the edit form was not touched', () => {
|
||||
const [payload] = platformModelPayloads([baseModel], selectedForm());
|
||||
|
||||
expect(payload.rateLimitPolicyMode).toBeUndefined();
|
||||
expect(payload.rateLimitPolicy).toBeUndefined();
|
||||
});
|
||||
|
||||
it('writes inherit only after the override is explicitly disabled', () => {
|
||||
const [payload] = platformModelPayloads([baseModel], {
|
||||
...selectedForm(),
|
||||
modelRateLimitOverrideTouched: true,
|
||||
});
|
||||
|
||||
expect(payload.rateLimitPolicyMode).toBe('inherit');
|
||||
expect(payload.rateLimitPolicy).toBeUndefined();
|
||||
});
|
||||
|
||||
it('writes an explicit unlimited override when the enabled policy has no rules', () => {
|
||||
const [payload] = platformModelPayloads([baseModel], {
|
||||
...selectedForm(),
|
||||
modelOverrideRateLimit: true,
|
||||
modelRateLimitOverrideTouched: true,
|
||||
});
|
||||
|
||||
expect(payload.rateLimitPolicyMode).toBe('override');
|
||||
expect(payload.rateLimitPolicy).toEqual({ rules: [] });
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user