09

지자체 연계

기능설계 ⑨ — 공공 돌봄과 실벗을 잇는 다리 (B2G)

항목내용
기능 IDFEAT-GOV
연결 시스템마스터 시스템⑨ 지자체연계 · ③ 생존지킴(d02 SOS) · 사업플랜 B2G
한 줄 정의지자체·복지기관이 관할 어르신의 안전·돌봄 현황을 보고, SOS·복지 연계를 처리
관련 액터지자체 관제(웹)실벗서버어르신 PWA
개인정보 최우선 — 지자체에 제공되는 데이터는 어르신 동의 범위 내로 한정하고, 모든 조회는 audit_logs에 기록한다. 공공 연계라도 존엄·프라이버시가 먼저다.

설계 7계층 체크리스트

계층이 문서의 섹션
① UI지자체 관제 대시보드 SCR-GOV-01
② FlowSOS·이상징후 → 지자체 접수 → 처리 상태 머신
③ Datagov_orgs / gov_cases / audit_logs
④ API관할 현황·케이스·리포팅 엔드포인트
⑤ SeqSOS 에스컬레이션 → 지자체 접수 시퀀스
⑥ Comp지자체 브릿지·권한 모듈
⑦ Test검수 체크리스트

① UI · 화면 명세

지자체 관제 대시보드 SCR-GOV-01 (웹·담당자용)

영역요소 / 동작
관할 현황 요약등록 어르신 수·오늘 SOS·미응답 안부·복지 대기 건수
실시간 케이스 목록SOS·이상징후 케이스(상태·시각·위치), 긴급순 정렬
케이스 처리접수→출동→완료 상태 변경, 메모, 119 이관
리포팅주간/월간 통계 다운로드(B2G 보고용)

담당자 화면은 어르신 PWA와 별개의 관리자 웹(데스크톱 기준). 단, 동일 디자인 토큰 사용.

② Flow · 케이스 처리 상태 머신

발생(SOS/이상징후) 지자체 접수(received) 출동/조치(dispatched) 완료(resolved)

d02 SOS 에스컬레이션 2단계(가족 무응답)에서 지자체 케이스가 자동 생성된다. 지자체는 SOS의 보조 안전망.

③ Data · DB 스키마

MariaDB · UTF8MB4 · InnoDB
CREATE TABLE gov_orgs ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(100), -- '○○구 복지과' region VARCHAR(60), -- 관할 지역코드 is_active TINYINT DEFAULT 1 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE gov_cases ( id BIGINT PRIMARY KEY AUTO_INCREMENT, org_id INT NOT NULL, user_id BIGINT NOT NULL, case_type ENUM('sos','no_response','welfare'), sos_event_id BIGINT, -- d02 sos_events 연계 status ENUM('received','dispatched','resolved') DEFAULT 'received', memo TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (org_id) REFERENCES gov_orgs(id), FOREIGN KEY (user_id) REFERENCES users(id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE audit_logs ( id BIGINT PRIMARY KEY AUTO_INCREMENT, actor VARCHAR(80), -- 담당자/시스템 action VARCHAR(60), -- 'view_user','update_case' target_id BIGINT, detail JSON, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
설계 포인트 — 지자체의 모든 개인정보 조회는 audit_logs에 남는다. 누가·언제·무엇을 봤는지 추적 가능 — 공공 신뢰의 기반.

④ API · 엔드포인트 명세 (관리자 권한)

M경로설명
GET/gov/dashboard관할 현황 요약(권한·관할 필터)
GET/gov/cases케이스 목록(긴급순)
PUT/gov/cases/{id}케이스 상태 변경·메모(audit 기록)
GET/gov/report주간/월간 통계 리포팅
권한 — 모든 /gov/* 는 관리자 역할 + 관할 지역 일치를 검증. 권한 밖 회원 조회 시 FORBIDDEN(403) + audit 기록.

⑤ Seq · SOS → 지자체 접수

실벗(d02 워커)
SOS 에스컬레이션 2단계 도달(가족 무응답) → GovBridge 호출
GovBridge
관할 gov_org 판정(위치·지역) → gov_cases(received) 생성
지자체 관제
실시간 케이스 알림 수신 → 대시보드에 긴급 표시
담당자
접수→출동→완료 처리 (각 단계 audit_logs 기록)
실벗
처리 상태를 d02 sos_events에 역동기화 → 가족에게도 공유

⑥ Comp · 컴포넌트 / 모듈 구조

프론트엔드 (관리자 웹)

admin/gov/ ├─ GovDashboard.js ├─ CaseList.js ├─ CaseDetail.js └─ ReportExport.js

백엔드 (PHP)

app/ ├─ Controllers/GovController.php ├─ Middleware/GovAuthGuard.php # 관리자+관할 검증 └─ Services/ ├─ GovBridge.php # SOS→케이스 생성(d02 연계) └─ AuditLogger.php # 모든 조회·변경 기록
모듈책임
GovAuthGuard관리자 역할 + 관할 지역 일치 검증. 권한 밖 접근 차단·기록.
AuditLogger개인정보 조회/변경을 빠짐없이 audit_logs에 기록. 공공 신뢰의 근거.

⑦ Test · 검수 체크리스트

ID시나리오기대 결과
T-01SOS 가족 무응답 2단계관할 gov_cases 자동 생성, 관제 알림
T-02담당자 케이스 처리상태 변경 + audit_logs 기록
T-03관할 밖 회원 조회 시도FORBIDDEN(403) + audit 기록
T-04비동의 항목 조회share_scope 밖 데이터 미제공
T-05월간 리포팅 다운로드통계 집계 정상, 개인 식별정보 비식별화
완료 판정 — T-01~T-05 통과 시 FEAT-GOV 완료. T-03·T-04(권한·동의)는 공공 연계의 법적·윤리적 필수.
기능설계 ⑨ 완성 — 지자체 연계를 7계층으로 설계했습니다. 공공 돌봄과 잇되, 존엄·프라이버시를 먼저 지킵니다.