add runtime log views and standardize status dots
ci/woodpecker/push/woodpecker Pipeline was successful

This commit is contained in:
2026-07-09 10:16:25 +09:00
parent f67017623f
commit 3cab64a256
13 changed files with 990 additions and 65 deletions
+21 -4
View File
@@ -36,9 +36,11 @@ import { LauncherBuildPage } from './pages/launcher/LauncherBuildPage';
import { LauncherSourcePage } from './pages/launcher/LauncherSourcePage';
import { LauncherAppsPage as LauncherAppsApiPage } from './pages/launcher/LauncherAppsPage';
import { LauncherComponentsPage } from './pages/launcher/LauncherComponentsPage';
import { LauncherLogsPage } from './pages/launcher/LauncherLogsPage';
import { LauncherVersionsPage as LauncherVersionsApiPage } from './pages/launcher/LauncherVersionsPage';
import { CommonAppBuildPage } from './pages/common-apps/CommonAppBuildPage';
import { CommonAppComponentsPage } from './pages/common-apps/CommonAppComponentsPage';
import { CommonAppLogsPage } from './pages/common-apps/CommonAppLogsPage';
import { CommonAppSourcePage } from './pages/common-apps/CommonAppSourcePage';
import { LoadingModal, useMinimumLoading } from './pages/operations/operation-utils';
import {
@@ -60,10 +62,12 @@ type ViewKey =
| 'commonSources'
| 'commonBuilds'
| 'commonComponents'
| 'commonLogs'
| 'launcherSources'
| 'launcherBuilds'
| 'launcherVersions'
| 'launcherComponents'
| 'launcherLogs'
| 'launcherApps'
| 'notices'
| 'appManagement'
@@ -130,10 +134,12 @@ const pathByView: Record<ViewKey, string> = {
commonSources: '/common-apps/sources',
commonBuilds: '/common-apps/builds',
commonComponents: '/common-apps/components',
commonLogs: '/common-apps/logs',
launcherSources: '/launcher/sources',
launcherBuilds: '/launcher/builds',
launcherVersions: '/launcher/versions',
launcherComponents: '/launcher/components',
launcherLogs: '/launcher/logs',
launcherApps: '/launcher/apps',
notices: '/operations/notices',
appManagement: '/applications/apps',
@@ -916,7 +922,7 @@ function MetricCards({
},
{
label: '진행 중 작업',
value: loading ? '-' : `${activeWorkTotal}건`,
value: loading ? '-' : `${activeWorkTotal}`,
delta: `빌드 ${activeWork.builds} · 릴리즈 ${activeWork.releases} · 배포 ${activeWork.deployments}`,
hint: '대기/실행 중 작업 기준',
tone: activeWorkTotal > 0 ? 'amber' as const : 'green' as const
@@ -1032,10 +1038,14 @@ function LauncherPanel({ versions, loading, onOpen }: { versions: ApiLauncherVer
);
}
function CommonAppsPanel({ pipelines, loading }: { pipelines: CommonAppPipeline[]; loading: boolean }) {
function CommonAppsPanel({ pipelines, loading, onOpen }: { pipelines: CommonAppPipeline[]; loading: boolean; onOpen: () => void }) {
return (
<Card className="min-w-0 overflow-hidden">
<CardHeader title="공통앱" description="공통앱의 최근 빌드 상태를 확인합니다." />
<CardHeader
title="공통앱"
description="공통앱의 최근 빌드 상태를 확인합니다."
action={<DashboardLinkButton onClick={onOpen} label="공통앱 빌드 관리로 이동" />}
/>
<div className="max-h-[420px] overflow-y-auto">
{loading ? (
<div className="space-y-3 p-5">
@@ -1369,12 +1379,14 @@ function NoticePanel({ notices: dashboardNotices, loading, onOpen }: { notices:
function DashboardPage({
onLauncherVersionsOpen,
onCommonBuildsOpen,
onAppManagementOpen,
onRuntimeLogsOpen,
onNoticesOpen,
onUserSessionsOpen
}: {
onLauncherVersionsOpen: () => void;
onCommonBuildsOpen: () => void;
onAppManagementOpen: () => void;
onRuntimeLogsOpen: () => void;
onNoticesOpen: () => void;
@@ -1477,7 +1489,7 @@ function DashboardPage({
<div className="mt-4 grid gap-4 xl:grid-cols-2">
<LauncherPanel versions={launcherRows} loading={dashboardLoading} onOpen={onLauncherVersionsOpen} />
<CommonAppsPanel pipelines={commonAppPipelines} loading={dashboardLoading} />
<CommonAppsPanel pipelines={commonAppPipelines} loading={dashboardLoading} onOpen={onCommonBuildsOpen} />
</div>
<div className="mt-4">
@@ -1556,10 +1568,14 @@ function App() {
return <CommonAppBuildPage />;
case 'commonComponents':
return <CommonAppComponentsPage />;
case 'commonLogs':
return <CommonAppLogsPage />;
case 'launcherVersions':
return <LauncherVersionsApiPage />;
case 'launcherComponents':
return <LauncherComponentsPage />;
case 'launcherLogs':
return <LauncherLogsPage />;
case 'launcherSources':
return <LauncherSourcePage />;
case 'launcherBuilds':
@@ -1623,6 +1639,7 @@ function App() {
return (
<DashboardPage
onLauncherVersionsOpen={() => changeView('launcherVersions')}
onCommonBuildsOpen={() => changeView('commonBuilds')}
onAppManagementOpen={() => changeView('appManagement')}
onRuntimeLogsOpen={() => changeView('runtimeLogs')}
onNoticesOpen={() => changeView('notices')}