修改前
return { evidence: null, errors: ["尚未完成其餘欄位預檢"] };
const urlValue = document.querySelector("#url").value.trim();
status.textContent = isProductionUrl(urlValue)
? "URL 格式預檢通過;仍需人工開啟確認"
: "請輸入非 example.com、非 localhost 的 HTTPS Production URL";
修改後
const commitPattern = /^[0-9a-f]{7,40}$/i;
const evidence = {
url: document.querySelector("#url").value.trim(),
commit: document.querySelector("#commit").value.trim(),
problem: document.querySelector("#problem").value.trim(),
mobile: document.querySelector("#mobile").checked,
};
const errors = [];
if (!isProductionUrl(evidence.url)) errors.push("Production URL 格式不合格");
if (!commitPattern.test(evidence.commit)) errors.push("commit 必須是 7–40 位十六進位 SHA");
if (evidence.problem.length < 20) errors.push("問題描述至少 20 個字元");
if (!evidence.mobile) errors.push("尚未勾選手機操作自我確認");
return { evidence, errors };
const { errors } = collectEvidence();
status.textContent = errors.length
? errors.join(";")
: "格式預檢通過;請交由教師或同儕開啟 URL、比對 commit 並操作手機版";