Fix training plan generation flow
这个提交包含在:
@@ -59,6 +59,24 @@ type MockAppState = {
|
||||
user: MockUser;
|
||||
videos: any[];
|
||||
analyses: any[];
|
||||
activePlan: {
|
||||
id: number;
|
||||
title: string;
|
||||
skillLevel: string;
|
||||
durationDays: number;
|
||||
exercises: Array<{
|
||||
day: number;
|
||||
name: string;
|
||||
category: string;
|
||||
duration: number;
|
||||
description: string;
|
||||
tips: string;
|
||||
sets: number;
|
||||
reps: number;
|
||||
}>;
|
||||
version: number;
|
||||
adjustmentNotes: string | null;
|
||||
} | null;
|
||||
mediaSession: MockMediaSession | null;
|
||||
nextVideoId: number;
|
||||
authMeNullResponsesAfterLogin: number;
|
||||
@@ -166,9 +184,41 @@ async function handleTrpc(route: Route, state: MockAppState) {
|
||||
case "profile.stats":
|
||||
return trpcResult(buildStats(state.user));
|
||||
case "plan.active":
|
||||
return trpcResult(null);
|
||||
return trpcResult(state.activePlan);
|
||||
case "plan.list":
|
||||
return trpcResult([]);
|
||||
return trpcResult(state.activePlan ? [state.activePlan] : []);
|
||||
case "plan.generate":
|
||||
state.activePlan = {
|
||||
id: 200,
|
||||
title: `${state.user.name} 的训练计划`,
|
||||
skillLevel: "beginner",
|
||||
durationDays: 7,
|
||||
version: 1,
|
||||
adjustmentNotes: null,
|
||||
exercises: [
|
||||
{
|
||||
day: 1,
|
||||
name: "正手影子挥拍",
|
||||
category: "影子挥拍",
|
||||
duration: 15,
|
||||
description: "练习完整引拍和收拍动作。",
|
||||
tips: "保持重心稳定,击球点在身体前侧。",
|
||||
sets: 3,
|
||||
reps: 12,
|
||||
},
|
||||
{
|
||||
day: 1,
|
||||
name: "交叉步移动",
|
||||
category: "脚步移动",
|
||||
duration: 12,
|
||||
description: "强化启动和回位节奏。",
|
||||
tips: "每次移动后快速回到准备姿势。",
|
||||
sets: 4,
|
||||
reps: 10,
|
||||
},
|
||||
],
|
||||
};
|
||||
return trpcResult({ planId: state.activePlan.id, plan: state.activePlan });
|
||||
case "video.list":
|
||||
return trpcResult(state.videos);
|
||||
case "analysis.list":
|
||||
@@ -316,6 +366,7 @@ export async function installAppMocks(
|
||||
createdAt: nowIso(),
|
||||
},
|
||||
],
|
||||
activePlan: null,
|
||||
mediaSession: null,
|
||||
nextVideoId: 100,
|
||||
authMeNullResponsesAfterLogin: options?.authMeNullResponsesAfterLogin ?? 0,
|
||||
|
||||
在新工单中引用
屏蔽一个用户