feat: Add VisionData panel, HW error display, and reel handler 3D model

- Add hardware error banner with priority system (motion > i/o > emergency)
- Add DIO status to HW status display with backend integration
- Remove status text from HW status, keep only LED indicators
- Add VisionDataPanel showing real-time recognized data for L/C/R ports
- Add GetVisionData API in MachineBridge with batch field support
- Add BroadcastVisionData function (250ms interval)
- Replace 3D model with detailed reel handler equipment
- Use OrthographicCamera with front view for distortion-free display
- Fix ProcessedDataPanel layout to avoid right sidebar overlap
- Show log viewer filename in error message when file not found

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-27 23:22:56 +09:00
parent 3bd35ad852
commit 86fe466b55
7 changed files with 843 additions and 569 deletions

View File

@@ -8,6 +8,7 @@ import { MotionPanel } from '../components/MotionPanel';
import { CyberPanel } from '../components/common/CyberPanel';
import { ModelInfoPanel } from '../components/ModelInfoPanel';
import { ProcessedDataPanel } from '../components/ProcessedDataPanel';
import { VisionDataPanel } from '../components/VisionDataPanel';
import { SystemStatusPanel } from '../components/SystemStatusPanel';
import { EventLogPanel } from '../components/EventLogPanel';
import { SystemState, Recipe, IOPoint, LogEntry, RobotTarget, ConfigItem } from '../types';
@@ -121,8 +122,13 @@ export const HomePage: React.FC<HomePageProps> = ({
<EventLogPanel logs={logs} />
</div>
{/* Bottom Docked - Processed Data Panel */}
<div className="absolute left-6 right-6 bottom-10 h-48 z-20">
{/* Left - Vision Data Panel (Recognized Data) - 세로 공간 최대 사용 */}
<div className="absolute left-6 top-0 bottom-52 w-[680px] z-20">
<VisionDataPanel />
</div>
{/* Bottom Docked - Processed Data Panel (우측 사이드바 피함) */}
<div className="absolute left-6 right-[356px] bottom-10 h-40 z-20">
<ProcessedDataPanel />
</div>
</main>