From 51e803475961d3d2c6284eca5ed9cf1ab1755650 Mon Sep 17 00:00:00 2001 From: hyungi Date: Wed, 1 Jul 2026 23:13:12 +0000 Subject: [PATCH] =?UTF-8?q?feat(safety):=20=EC=95=88=EC=A0=84=20=EC=9E=90?= =?UTF-8?q?=EB=A3=8C=EC=8B=A4=20UI=20Phase=203=20=E2=80=94=20/safety=203?= =?UTF-8?q?=ED=83=AD(=EC=9E=AC=ED=95=B4=C2=B7=EB=B2=95=EB=A0=B9=EC=A7=80?= =?UTF-8?q?=EC=B9=A8=C2=B7=EC=84=9C=EC=A0=81=ED=91=9C=EC=A4=80)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit safety-library-1 Phase 3 슬라이스. /safety=재해 redirect, 탭=incident / law·guide 세그먼트(법령 기본 KR) / standard·book·manual·paper 프리셋. 공용 SafetyDocList(GET /documents/ material_type C-1 계약 재사용, 백엔드 무변경=freeze 정합) + Sidebar 네비 1건. 케이스 그룹핑·version_status 뱃지=API 확장 필요라 후속. Co-Authored-By: Claude Fable 5 --- frontend/src/lib/components/Sidebar.svelte | 9 ++- frontend/src/routes/safety/+layout.svelte | 34 +++++++++ frontend/src/routes/safety/+page.svelte | 9 +++ .../src/routes/safety/SafetyDocList.svelte | 75 +++++++++++++++++++ .../src/routes/safety/incidents/+page.svelte | 29 +++++++ frontend/src/routes/safety/laws/+page.svelte | 48 ++++++++++++ .../src/routes/safety/materials/+page.svelte | 29 +++++++ 7 files changed, 232 insertions(+), 1 deletion(-) create mode 100644 frontend/src/routes/safety/+layout.svelte create mode 100644 frontend/src/routes/safety/+page.svelte create mode 100644 frontend/src/routes/safety/SafetyDocList.svelte create mode 100644 frontend/src/routes/safety/incidents/+page.svelte create mode 100644 frontend/src/routes/safety/laws/+page.svelte create mode 100644 frontend/src/routes/safety/materials/+page.svelte diff --git a/frontend/src/lib/components/Sidebar.svelte b/frontend/src/lib/components/Sidebar.svelte index e1c05b4..dcedf02 100644 --- a/frontend/src/lib/components/Sidebar.svelte +++ b/frontend/src/lib/components/Sidebar.svelte @@ -2,7 +2,7 @@ import { page } from '$app/stores'; import { goto } from '$app/navigation'; import { api } from '$lib/api'; - import { ChevronRight, ChevronDown, FolderOpen, FolderTree, Inbox, Clock, Mail, Scale, StickyNote, GraduationCap, CalendarCheck, MessageCircle, Hash } from 'lucide-svelte'; + import { ChevronRight, ChevronDown, FolderOpen, FolderTree, Inbox, Clock, Mail, Scale, StickyNote, GraduationCap, CalendarCheck, MessageCircle, Hash, HardHat } from 'lucide-svelte'; let tree = $state([]); let loading = $state(true); @@ -195,6 +195,13 @@ > 자료실 + + 안전 자료실 + +
+

안전 자료실

+

재해사례·법령·지침·표준 — 자료유형(material_type) 축 기반

+
+ +
+ + + diff --git a/frontend/src/routes/safety/+page.svelte b/frontend/src/routes/safety/+page.svelte new file mode 100644 index 0000000..1a497ed --- /dev/null +++ b/frontend/src/routes/safety/+page.svelte @@ -0,0 +1,9 @@ + diff --git a/frontend/src/routes/safety/SafetyDocList.svelte b/frontend/src/routes/safety/SafetyDocList.svelte new file mode 100644 index 0000000..5f4db29 --- /dev/null +++ b/frontend/src/routes/safety/SafetyDocList.svelte @@ -0,0 +1,75 @@ + + +
+ {#if !loading || docs.length > 0} +

총 {total.toLocaleString()}건

+ {/if} + + {#if docs.length > 0} +
+ {#each docs as doc (doc.id)} + + {/each} +
+ {:else if !loading} +
+ 해당 조건의 자료가 없습니다. +
+ {/if} + + {#if loading} +
불러오는 중…
+ {:else if hasMore} + + {/if} +
diff --git a/frontend/src/routes/safety/incidents/+page.svelte b/frontend/src/routes/safety/incidents/+page.svelte new file mode 100644 index 0000000..b270fe6 --- /dev/null +++ b/frontend/src/routes/safety/incidents/+page.svelte @@ -0,0 +1,29 @@ + + +
+
+ {#each JURISDICTIONS as j} + + {/each} +
+ + +
diff --git a/frontend/src/routes/safety/laws/+page.svelte b/frontend/src/routes/safety/laws/+page.svelte new file mode 100644 index 0000000..4fd7c14 --- /dev/null +++ b/frontend/src/routes/safety/laws/+page.svelte @@ -0,0 +1,48 @@ + + +
+
+
+ {#each KINDS as k} + + {/each} +
+
+ {#each JURISDICTIONS as j} + + {/each} +
+
+ + +
diff --git a/frontend/src/routes/safety/materials/+page.svelte b/frontend/src/routes/safety/materials/+page.svelte new file mode 100644 index 0000000..b895959 --- /dev/null +++ b/frontend/src/routes/safety/materials/+page.svelte @@ -0,0 +1,29 @@ + + +
+
+ {#each KINDS as k} + + {/each} +
+ + +