一件成片积分计算补上
This commit is contained in:
@@ -113,14 +113,16 @@ def estimate_quick_create_points(
|
|||||||
resolution: str,
|
resolution: str,
|
||||||
total_duration: int,
|
total_duration: int,
|
||||||
):
|
):
|
||||||
"""与前端按钮预估同口径:脚本挂牌 + 默认出图×场次 + 视频挂牌秒价×时长(无引用视频)。"""
|
"""与前端按钮预估同口径:脚本挂牌 + 出图粗估(1商品+每场1角色+1场景) + 视频挂牌秒价×时长(无引用视频)。"""
|
||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
|
|
||||||
from apps.billing.pricing import quote_flat, quote_video_estimate
|
from apps.billing.pricing import quote_flat, quote_video_estimate
|
||||||
|
|
||||||
scene_count = max(1, int(total_duration) // 15)
|
scene_count = max(1, int(total_duration) // 15)
|
||||||
|
# 与 _ensure_fallback_entities / _specs_from_entities 下限对齐:商品1 + 角色1×场 + 场景1×场
|
||||||
|
image_count = 1 + scene_count * 2
|
||||||
script_points = quote_flat(text_model, units=1, team=team).points
|
script_points = quote_flat(text_model, units=1, team=team).points
|
||||||
image_points = quote_flat(image_model, units=scene_count, team=team).points
|
image_points = quote_flat(image_model, units=image_count, team=team).points
|
||||||
_tokens, video_quote = quote_video_estimate(
|
_tokens, video_quote = quote_video_estimate(
|
||||||
video_model,
|
video_model,
|
||||||
aspect_ratio=aspect_ratio,
|
aspect_ratio=aspect_ratio,
|
||||||
|
|||||||
@@ -597,7 +597,7 @@ export function QuickCreatePage({
|
|||||||
{ ratio: aspectRatio, resolution, duration: totalDuration, refs: [] },
|
{ ratio: aspectRatio, resolution, duration: totalDuration, refs: [] },
|
||||||
billingRates,
|
billingRates,
|
||||||
);
|
);
|
||||||
// 与实扣对齐:脚本(Seed 2.1 Pro 挂牌) + 默认出图挂牌×场次粗估 + 视频挂牌秒价×时长
|
// 与实扣对齐:脚本挂牌 + 出图粗估(1商品+每场1角色+1场景) + 视频挂牌秒价×时长
|
||||||
const applyTeam = (raw: number) => {
|
const applyTeam = (raw: number) => {
|
||||||
const multiplier = billingRates.multiplier || 1;
|
const multiplier = billingRates.multiplier || 1;
|
||||||
if (!(raw > 0)) return 0;
|
if (!(raw > 0)) return 0;
|
||||||
@@ -619,8 +619,10 @@ export function QuickCreatePage({
|
|||||||
const listed = pointsPerImageFromCatalog(img);
|
const listed = pointsPerImageFromCatalog(img);
|
||||||
return listed != null && listed > 0 ? listed : QUICK_IMAGE_POINTS_FALLBACK;
|
return listed != null && listed > 0 ? listed : QUICK_IMAGE_POINTS_FALLBACK;
|
||||||
})();
|
})();
|
||||||
|
// 脚本未出前粗估:1 张商品图 + 每场至少 1 角色图 + 1 场景图(与 _ensure_fallback_entities 兜底一致)
|
||||||
|
const estimatedAssetCount = 1 + sceneCount * 2;
|
||||||
const estimatedPoints = videoEstimate.listed
|
const estimatedPoints = videoEstimate.listed
|
||||||
? videoEstimate.points + applyTeam(scriptUnit) + applyTeam(sceneCount * imageUnit)
|
? videoEstimate.points + applyTeam(scriptUnit) + applyTeam(estimatedAssetCount * imageUnit)
|
||||||
: 0;
|
: 0;
|
||||||
const shellClass = [
|
const shellClass = [
|
||||||
"quick-create-shell",
|
"quick-create-shell",
|
||||||
|
|||||||
Reference in New Issue
Block a user