fix: stop overstating subsystem runtime evidence
This commit is contained in:
parent
07a573f660
commit
ccee303355
3 changed files with 21 additions and 19 deletions
|
|
@ -5,7 +5,6 @@ type FifthDomainSystemId = 'pufferfish' | 'eternal-lake-heart'
|
||||||
|
|
||||||
type FifthDomainSystemsProps = {
|
type FifthDomainSystemsProps = {
|
||||||
detail?: 'overview' | 'pufferfish'
|
detail?: 'overview' | 'pufferfish'
|
||||||
evidenceMode?: 'receipt' | 'visual-preview'
|
|
||||||
onEnterEternalLake: () => void
|
onEnterEternalLake: () => void
|
||||||
onEnterPufferfish: () => void
|
onEnterPufferfish: () => void
|
||||||
}
|
}
|
||||||
|
|
@ -19,7 +18,6 @@ const PUFFERFISH_FACTS = {
|
||||||
|
|
||||||
export function FifthDomainSystems({
|
export function FifthDomainSystems({
|
||||||
detail = 'overview',
|
detail = 'overview',
|
||||||
evidenceMode = 'receipt',
|
|
||||||
onEnterEternalLake,
|
onEnterEternalLake,
|
||||||
onEnterPufferfish,
|
onEnterPufferfish,
|
||||||
}: FifthDomainSystemsProps) {
|
}: FifthDomainSystemsProps) {
|
||||||
|
|
@ -28,9 +26,8 @@ export function FifthDomainSystems({
|
||||||
)
|
)
|
||||||
const pufferfishSelected = selected === 'pufferfish'
|
const pufferfishSelected = selected === 'pufferfish'
|
||||||
const eternalLakeSelected = selected === 'eternal-lake-heart'
|
const eternalLakeSelected = selected === 'eternal-lake-heart'
|
||||||
const isVisualPreview = evidenceMode === 'visual-preview'
|
const evidenceLabel = '本地拓扑预览'
|
||||||
const evidenceLabel = isVisualPreview ? '本地拓扑预览' : '真实接入'
|
const nodeState = '未实时核验'
|
||||||
const nodeState = isVisualPreview ? '未实时核验' : '在线回执'
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<section className="fifth-systems" data-detail={detail}>
|
<section className="fifth-systems" data-detail={detail}>
|
||||||
|
|
@ -73,7 +70,7 @@ export function FifthDomainSystems({
|
||||||
<span>执行节点</span>
|
<span>执行节点</span>
|
||||||
<strong>苍耳家庭 Ubuntu</strong>
|
<strong>苍耳家庭 Ubuntu</strong>
|
||||||
<code>{PUFFERFISH_FACTS.node}</code>
|
<code>{PUFFERFISH_FACTS.node}</code>
|
||||||
<small><i />{isVisualPreview ? '本地登记' : '登记回执'}</small>
|
<small><i />本地登记</small>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="system-path__persona">
|
<div className="system-path__persona">
|
||||||
|
|
@ -150,9 +147,7 @@ export function FifthDomainSystems({
|
||||||
)}
|
)}
|
||||||
</>}
|
</>}
|
||||||
<footer>
|
<footer>
|
||||||
{isVisualPreview
|
本页仅展示本地登记拓扑,不能证明节点在线或人格体已恢复。
|
||||||
? '本页仅展示本地登记拓扑,不能证明节点在线或人格体已恢复。'
|
|
||||||
: '拓扑信息来自本地登记;在线状态仅以当前会话回执为准。'}
|
|
||||||
</footer>
|
</footer>
|
||||||
</aside>
|
</aside>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -405,7 +405,7 @@ describe('HoloLakeHome', () => {
|
||||||
expect(screen.getAllByText('ICE-GL-CA001').length).toBeGreaterThan(0)
|
expect(screen.getAllByText('ICE-GL-CA001').length).toBeGreaterThan(0)
|
||||||
expect(screen.getByRole('button', { name: '心跳核心频道' })).toBeEnabled()
|
expect(screen.getByRole('button', { name: '心跳核心频道' })).toBeEnabled()
|
||||||
|
|
||||||
fireEvent.click(screen.getByRole('button', { name: '湖永恒湖心系统真实接入' }))
|
fireEvent.click(screen.getByRole('button', { name: '湖永恒湖心系统本地拓扑预览' }))
|
||||||
fireEvent.click(screen.getByRole('button', { name: /进入永恒湖心系统/ }))
|
fireEvent.click(screen.getByRole('button', { name: /进入永恒湖心系统/ }))
|
||||||
expect(screen.getByRole('heading', { name: '永恒湖心系统' })).toBeInTheDocument()
|
expect(screen.getByRole('heading', { name: '永恒湖心系统' })).toBeInTheDocument()
|
||||||
expect(screen.getByRole('heading', { name: '光之湖子系统' })).toBeInTheDocument()
|
expect(screen.getByRole('heading', { name: '光之湖子系统' })).toBeInTheDocument()
|
||||||
|
|
@ -430,12 +430,22 @@ describe('HoloLakeHome', () => {
|
||||||
expect(screen.queryByText('在线回执')).not.toBeInTheDocument()
|
expect(screen.queryByText('在线回执')).not.toBeInTheDocument()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('does not treat a Fifth Domain router receipt as proof that every registered subsystem is online', () => {
|
||||||
|
useGuanghuRouterMock.mockReturnValue(onlineRouter())
|
||||||
|
|
||||||
|
render(<HoloLakeHome locale="zh-CN" onEnterKnowledgeBase={vi.fn()} />)
|
||||||
|
fireEvent.click(screen.getByRole('button', { name: /进入第五域/ }))
|
||||||
|
|
||||||
|
expect(screen.queryByText('在线回执')).not.toBeInTheDocument()
|
||||||
|
expect(screen.getAllByText('未实时核验').length).toBeGreaterThan(0)
|
||||||
|
})
|
||||||
|
|
||||||
it('shows receipt-backed Eternal Lake information without invented resonance scores', () => {
|
it('shows receipt-backed Eternal Lake information without invented resonance scores', () => {
|
||||||
useGuanghuRouterMock.mockReturnValue(onlineRouter())
|
useGuanghuRouterMock.mockReturnValue(onlineRouter())
|
||||||
|
|
||||||
render(<HoloLakeHome locale="zh-CN" onEnterKnowledgeBase={vi.fn()} />)
|
render(<HoloLakeHome locale="zh-CN" onEnterKnowledgeBase={vi.fn()} />)
|
||||||
fireEvent.click(screen.getByRole('button', { name: /进入第五域/ }))
|
fireEvent.click(screen.getByRole('button', { name: /进入第五域/ }))
|
||||||
fireEvent.click(screen.getByRole('button', { name: '湖永恒湖心系统真实接入' }))
|
fireEvent.click(screen.getByRole('button', { name: '湖永恒湖心系统本地拓扑预览' }))
|
||||||
fireEvent.click(screen.getByRole('button', { name: /进入永恒湖心系统/ }))
|
fireEvent.click(screen.getByRole('button', { name: /进入永恒湖心系统/ }))
|
||||||
fireEvent.click(screen.getByRole('button', { name: /语言回声带.*真实路由回执已抵达/ }))
|
fireEvent.click(screen.getByRole('button', { name: /语言回声带.*真实路由回执已抵达/ }))
|
||||||
|
|
||||||
|
|
@ -449,7 +459,7 @@ describe('HoloLakeHome', () => {
|
||||||
|
|
||||||
render(<HoloLakeHome locale="zh-CN" onEnterKnowledgeBase={vi.fn()} />)
|
render(<HoloLakeHome locale="zh-CN" onEnterKnowledgeBase={vi.fn()} />)
|
||||||
fireEvent.click(screen.getByRole('button', { name: /进入第五域/ }))
|
fireEvent.click(screen.getByRole('button', { name: /进入第五域/ }))
|
||||||
fireEvent.click(screen.getByRole('button', { name: '湖永恒湖心系统真实接入' }))
|
fireEvent.click(screen.getByRole('button', { name: '湖永恒湖心系统本地拓扑预览' }))
|
||||||
fireEvent.click(screen.getByRole('button', { name: /进入永恒湖心系统/ }))
|
fireEvent.click(screen.getByRole('button', { name: /进入永恒湖心系统/ }))
|
||||||
fireEvent.click(screen.getByRole('button', { name: '返回第五域' }))
|
fireEvent.click(screen.getByRole('button', { name: '返回第五域' }))
|
||||||
|
|
||||||
|
|
@ -462,7 +472,7 @@ describe('HoloLakeHome', () => {
|
||||||
|
|
||||||
render(<HoloLakeHome locale="zh-CN" onEnterKnowledgeBase={vi.fn()} />)
|
render(<HoloLakeHome locale="zh-CN" onEnterKnowledgeBase={vi.fn()} />)
|
||||||
fireEvent.click(screen.getByRole('button', { name: /进入第五域/ }))
|
fireEvent.click(screen.getByRole('button', { name: /进入第五域/ }))
|
||||||
fireEvent.click(screen.getByRole('button', { name: /胖头鱼语言子系统.*真实接入/ }))
|
fireEvent.click(screen.getByRole('button', { name: /胖头鱼语言子系统.*本地拓扑预览/ }))
|
||||||
fireEvent.click(screen.getByRole('button', { name: '进入胖头鱼系统' }))
|
fireEvent.click(screen.getByRole('button', { name: '进入胖头鱼系统' }))
|
||||||
|
|
||||||
expect(screen.getAllByRole('heading', { name: '胖头鱼语言子系统' }).length).toBeGreaterThan(0)
|
expect(screen.getAllByRole('heading', { name: '胖头鱼语言子系统' }).length).toBeGreaterThan(0)
|
||||||
|
|
@ -486,7 +496,7 @@ describe('HoloLakeHome', () => {
|
||||||
|
|
||||||
render(<HoloLakeHome locale="zh-CN" onEnterKnowledgeBase={onEnterKnowledgeBase} />)
|
render(<HoloLakeHome locale="zh-CN" onEnterKnowledgeBase={onEnterKnowledgeBase} />)
|
||||||
fireEvent.click(screen.getByRole('button', { name: /进入第五域/ }))
|
fireEvent.click(screen.getByRole('button', { name: /进入第五域/ }))
|
||||||
fireEvent.click(screen.getByRole('button', { name: '湖永恒湖心系统真实接入' }))
|
fireEvent.click(screen.getByRole('button', { name: '湖永恒湖心系统本地拓扑预览' }))
|
||||||
fireEvent.click(screen.getByRole('button', { name: /进入永恒湖心系统/ }))
|
fireEvent.click(screen.getByRole('button', { name: /进入永恒湖心系统/ }))
|
||||||
fireEvent.click(screen.getByRole('button', { name: /进入心跳核心频道/ }))
|
fireEvent.click(screen.getByRole('button', { name: /进入心跳核心频道/ }))
|
||||||
fireEvent.click(screen.getByRole('button', { name: /打开知识库/ }))
|
fireEvent.click(screen.getByRole('button', { name: /打开知识库/ }))
|
||||||
|
|
@ -506,7 +516,7 @@ describe('HoloLakeHome', () => {
|
||||||
/>,
|
/>,
|
||||||
)
|
)
|
||||||
fireEvent.click(screen.getByRole('button', { name: /进入第五域/ }))
|
fireEvent.click(screen.getByRole('button', { name: /进入第五域/ }))
|
||||||
fireEvent.click(screen.getByRole('button', { name: '湖永恒湖心系统真实接入' }))
|
fireEvent.click(screen.getByRole('button', { name: '湖永恒湖心系统本地拓扑预览' }))
|
||||||
fireEvent.click(screen.getByRole('button', { name: /进入永恒湖心系统/ }))
|
fireEvent.click(screen.getByRole('button', { name: /进入永恒湖心系统/ }))
|
||||||
fireEvent.click(screen.getByRole('button', { name: /进入心跳核心频道/ }))
|
fireEvent.click(screen.getByRole('button', { name: /进入心跳核心频道/ }))
|
||||||
fireEvent.click(screen.getByRole('button', { name: /打开人格体工作舱/ }))
|
fireEvent.click(screen.getByRole('button', { name: /打开人格体工作舱/ }))
|
||||||
|
|
@ -609,7 +619,7 @@ describe('HoloLakeHome', () => {
|
||||||
|
|
||||||
render(<HoloLakeHome locale="zh-CN" onEnterKnowledgeBase={vi.fn()} />)
|
render(<HoloLakeHome locale="zh-CN" onEnterKnowledgeBase={vi.fn()} />)
|
||||||
fireEvent.click(screen.getByRole('button', { name: /进入第五域/ }))
|
fireEvent.click(screen.getByRole('button', { name: /进入第五域/ }))
|
||||||
fireEvent.click(screen.getByRole('button', { name: '湖永恒湖心系统真实接入' }))
|
fireEvent.click(screen.getByRole('button', { name: '湖永恒湖心系统本地拓扑预览' }))
|
||||||
fireEvent.click(screen.getByRole('button', { name: /进入永恒湖心系统/ }))
|
fireEvent.click(screen.getByRole('button', { name: /进入永恒湖心系统/ }))
|
||||||
fireEvent.click(screen.getByRole('button', { name: /进入心跳核心频道/ }))
|
fireEvent.click(screen.getByRole('button', { name: /进入心跳核心频道/ }))
|
||||||
fireEvent.click(screen.getByRole('button', { name: /打开研发仓库/ }))
|
fireEvent.click(screen.getByRole('button', { name: /打开研发仓库/ }))
|
||||||
|
|
|
||||||
|
|
@ -115,7 +115,6 @@ export function HoloLakeHome({
|
||||||
const restoreAttempted = useRef(false)
|
const restoreAttempted = useRef(false)
|
||||||
const livingRequestSequence = useRef(0)
|
const livingRequestSequence = useRef(0)
|
||||||
const worldOpen = login.state.phase === 'online'
|
const worldOpen = login.state.phase === 'online'
|
||||||
const isVisualPreview = login.state.workorderId === 'local-visual-preview'
|
|
||||||
const fifthDomainOpen = worldOpen && route !== 'world'
|
const fifthDomainOpen = worldOpen && route !== 'world'
|
||||||
const worldRouterState = router.state
|
const worldRouterState = router.state
|
||||||
const t = (key: TranslationKey) => translate(locale, key)
|
const t = (key: TranslationKey) => translate(locale, key)
|
||||||
|
|
@ -315,7 +314,6 @@ export function HoloLakeHome({
|
||||||
if (route === 'fifth-domain') {
|
if (route === 'fifth-domain') {
|
||||||
return (
|
return (
|
||||||
<FifthDomainSystems
|
<FifthDomainSystems
|
||||||
evidenceMode={isVisualPreview ? 'visual-preview' : 'receipt'}
|
|
||||||
onEnterEternalLake={() => navigate('eternal-lake-heart')}
|
onEnterEternalLake={() => navigate('eternal-lake-heart')}
|
||||||
onEnterPufferfish={() => navigate('pufferfish')}
|
onEnterPufferfish={() => navigate('pufferfish')}
|
||||||
/>
|
/>
|
||||||
|
|
@ -326,7 +324,6 @@ export function HoloLakeHome({
|
||||||
return (
|
return (
|
||||||
<FifthDomainSystems
|
<FifthDomainSystems
|
||||||
detail="pufferfish"
|
detail="pufferfish"
|
||||||
evidenceMode={isVisualPreview ? 'visual-preview' : 'receipt'}
|
|
||||||
onEnterEternalLake={() => navigate('eternal-lake-heart')}
|
onEnterEternalLake={() => navigate('eternal-lake-heart')}
|
||||||
onEnterPufferfish={() => navigate('pufferfish')}
|
onEnterPufferfish={() => navigate('pufferfish')}
|
||||||
/>
|
/>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue