- 新的 Workbench:左边题目(可收起)+ AI 对话,右边预览 / 代码(可编辑),底部版本条; 挑战页和自由创作页都用它,原来的“手动提交”“历史对话”标签换成“粘贴外部代码”和“全部历史” - 不再每轮 AI 回复自动提交:学生点“交这一版”,可交多次,成绩仍取最高分;已交的版本不能重复点 - 手改代码、粘贴外部 AI 代码都存成版本(POST /prompt/versions,source 为 edit / manual), 在版本条和提示词链里标“手改”“外部 AI”;它们进入 AI 上下文,AI 在手改后的代码上继续改; 以前手动提交的回复正文为空时用代码补上;edit 的占位提问不参与提示词层级分类 - 互评从全屏弹窗改成对话里的卡片,打分前不显示作者,每个分数写明含义 - 编辑器代码按任务各存一份(useTaskCode),挑战页“清空”不再清掉教程的代码; 提交列表“复制到编辑器”对挑战写入该任务自己的代码 - 抽出 utils/code.ts(整理代码、拆分整页 HTML);删除 RandomRatingModal、ExternalAIPanel Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
26 lines
868 B
TypeScript
26 lines
868 B
TypeScript
import { useDateFormat } from "@vueuse/core"
|
|
import { TASK_TYPE } from "./const"
|
|
|
|
export function parseTime(utc: Date | string, format = "YYYY年M月D日") {
|
|
const time = useDateFormat(utc, format, { locales: "zh-CN" })
|
|
return time.value
|
|
}
|
|
|
|
export function goHome(router: any, type: TASK_TYPE, display: number) {
|
|
if (type === TASK_TYPE.Tutorial) {
|
|
router.push({ name: "home-tutorial", params: { display } })
|
|
} else if (type === TASK_TYPE.Challenge) {
|
|
if (display) router.push({ name: "home-challenge", params: { display } })
|
|
else router.push({ name: "home-challenge-list" })
|
|
} else {
|
|
router.push({ name: "home" })
|
|
}
|
|
}
|
|
|
|
// 一轮对话 / 一个版本是怎么来的
|
|
export function sourceLabel(source: string | null | undefined) {
|
|
if (source === "edit") return "手改"
|
|
if (source === "manual") return "外部 AI"
|
|
return "AI 对话"
|
|
}
|