fix(chat): keep rectification sessions findable and keep the delivery card
Independent Staging Quality Gate / validate (push) Failing after 6m45s
Independent Staging Quality Gate / publish (push) Skipped

Rectification answers now advance chat_sessions.updated_at (BUG-704).
A ?c= id missing from the loaded page is fetched before anyone may call
it deleted (BUG-705). The range card no longer has a post-card tie-break
button; live questions leave the card visible with adopt locked
(BUG-706/708). Spoken copy bans 相对支持度 (BUG-709).

Task docs assigned 700-704; qizheng already took 700-703.
This commit is contained in:
jesse-ux
2026-09-15 17:10:53 +08:00
parent d3a2c48ba5
commit f51e494c5a
37 changed files with 799 additions and 177 deletions
-18
View File
@@ -3326,24 +3326,6 @@ input:not([type="radio"]):not([type="checkbox"]):not([class^="ant-"]):not([class
.rectification-range-delivery__accept:disabled {
cursor: default;
}
.rectification-range-delivery__tie-break {
justify-self: start;
min-height: 44px;
padding: 0 12px;
border: 1px solid var(--color-border);
border-radius: var(--radius-lg);
color: var(--color-ink-secondary);
background: var(--color-canvas);
font: inherit;
cursor: pointer;
}
.rectification-range-delivery__tie-break:focus-visible {
outline: 2px solid var(--color-focus);
outline-offset: 2px;
}
.rectification-range-delivery__tie-break:disabled {
cursor: default;
}
.rectification-range-delivery__invite {
margin: 0;
color: var(--color-ink);
+14 -1
View File
@@ -210,6 +210,7 @@ import {
LoginRedirectError,
mergeHydratedSession,
patchSessionModel,
resolveLookupBootstrap,
payloadCode,
payloadMessage,
readSessions,
@@ -993,12 +994,22 @@ export default function Home() {
}
if (controller.signal.aborted) return;
const bootstrapSelection = resolveBootstrapSessionSelection({
const listedSelection = resolveBootstrapSessionSelection({
listedIds: nextSessions.map((session) => session.id),
defaultSessionId: nextSessions[0].id,
search: window.location.search,
storedReturnId: readLoginSessionReturn(),
});
const lookedUp = await resolveLookupBootstrap({
selection: listedSelection,
sessions: nextSessions,
defaultSessionId: nextSessions[0].id,
catalog: nextModelCatalog,
signal: controller.signal,
});
if (controller.signal.aborted) return;
nextSessions = lookedUp.sessions;
const bootstrapSelection = lookedUp.selection;
let landingSessionId = resolveStarterHomeLandingSessionId(
nextSessions,
bootstrapSelection.sessionId,
@@ -1061,6 +1072,8 @@ export default function Home() {
setComposerNotice("模型服务暂时不可用,当前无法发送问题。");
} else if (parsedSessions.fallbackSessionIds.length > 0) {
setComposerNotice("此前选择的模型已下线,已切换为默认模型。");
} else if (lookedUp.notice) {
setComposerNotice(lookedUp.notice);
} else if (bootstrapSelection.missing) {
setComposerNotice(SESSION_MISSING_NOTICE);
}