Fix cockpit project option field: payload is projectId, not id
Why: the local ProjectView interface invented 'id'; rdm.project.list returns projectId. Every option value was undefined, so auto-select set pid to undefined and the overview request was never issued — cockpit showed 加载概览… forever after the project list loaded (I4 e2e scenario 1). Evidence: tsc clean, vitest green, build green (SELF); network probe shows rdm.cockpit.overview 200 and .cockpit-stats rendered; seven-scenario rerun to be recorded on the Dev I4 card. Impact: cockpit entry only. Refs: rollout I4
This commit is contained in:
@@ -18,7 +18,7 @@ import {
|
||||
} from '../documentCockpit'
|
||||
import { CockpitPanel, CockpitReader } from './CockpitReader'
|
||||
|
||||
interface ProjectView { id: string; name: string; canAudit?: boolean }
|
||||
interface ProjectView { projectId: string; name: string; canAudit?: boolean }
|
||||
|
||||
function CockpitErrorState({ raw }: { raw: string }) {
|
||||
const c = classifyRdmError(raw)
|
||||
@@ -71,7 +71,7 @@ export function DocumentCockpit() {
|
||||
const rows = Array.isArray(list) ? list : (list?.projects ?? [])
|
||||
setProjects(rows)
|
||||
// 设计 §6.2:进入驾驶舱默认选中第一个可见项目,驱动概览首屏。
|
||||
if (rows.length > 0) setPid(prev => prev || rows[0].id)
|
||||
if (rows.length > 0) setPid(prev => prev || rows[0].projectId)
|
||||
})
|
||||
.catch(e => { if (!c) setError(e.message) })
|
||||
return () => { c = true }
|
||||
@@ -130,7 +130,7 @@ export function DocumentCockpit() {
|
||||
<div className="cockpit">
|
||||
<div className="cockpit-header">
|
||||
<select className="ui-input cockpit-project" value={pid} onChange={e => { setPid(e.target.value); setSelected(null); setFilter('') }} aria-label="选择项目">
|
||||
{projects.map(p => <option key={p.id} value={p.id}>{p.name}</option>)}
|
||||
{projects.map(p => <option key={p.projectId} value={p.projectId}>{p.name}</option>)}
|
||||
</select>
|
||||
{filter && <button type="button" className="cockpit-filter-chip" onClick={() => setFilter('')}>
|
||||
筛选:{STAT_FILTERS.find(s => s.filter === filter)?.label || filter} ✕
|
||||
|
||||
Reference in New Issue
Block a user