본문으로 이동

요양원 기록물 관리 시스템 구축안: 두 판 사이의 차이

원불교기록관리소 위키
57번째 줄: 57번째 줄:


== Claude 응답: 환경에 맞게 구체적인 개발 구성을 설계하겠습니다. ==
== Claude 응답: 환경에 맞게 구체적인 개발 구성을 설계하겠습니다. ==
환경에 맞게 구체적인 개발 구성을 설계하겠습니다.
시놀리지 NAS 환경의 전체 스택 구조를 먼저 보여드리겠습니다.
이 스택을 바탕으로 실제 개발에 필요한 핵심 내용을 정리합니다.
----


=== 개발 환경 구성 가이드 ===
=== 개발 환경 구성 가이드 ===

2026년 4월 27일 (월) 21:16 판

요양원의 업무 기록의 흐름에 따른 관리 시스템 만들기

목적

기록관리업무 목적 - 행정의 투명과 책임성, 증거성, 업무의 효율성, 활용성, 역사 보존 가능성.

목표

  • 종이문서 관리 체계에서 전자 문서 관리체계로 전환
  • 업무자 개인 저장소에서 공용 저장소로 통합 저장
  • 문서 파일명 체계 개선 → 날짜+업무명+문서명+처리과명+버전 정보+맥락 작성
  • 기록의 분류 기준 마련 → 요양원으 모든 기록 생산 때부터 분류

기본 구조 계획

요양원 아카이브 시스템 DB 스키마를 설계하겠습니다. 이제 ERD와 DB 스키마를 설계


전체 테이블 구조 요약

핵심 설계 원칙: RECORD 테이블을 중심으로 모든 기록물이 기관·처리과·업무분류표와 연결되며, 대상(입소자/직원)에 따라 별도 연결 테이블로 분리했습니다.

테이블 목록 (8개)

테이블 역할
INSTITUTION 기관 등록 — 요양원 기본 정보
DEPARTMENT 처리과 — 기관 내 부서 단위
RECORD_CLASSIFICATION 업무분류표 — 보존기간·폐기방법 포함
EMPLOYEE 직원 — 인사 기록 주체
RESIDENT 입소자 — 의무·간호 기록 주체
RECORD 기록물 — 모든 문서의 핵심 테이블
RESIDENT_RECORD 기록물 ↔ 입소자 연결
EMPLOYEE_RECORD 기록물 ↔ 직원 연결

주요 설계 포인트

RECORD.record_type으로 문서 유형(입소자 관련/행정·회계/직원 인사/의무·간호)을 구분하고, 연결 테이블의 record_subtype으로 세부 분류를 처리합니다. retention_end_datedisposal_status로 기록물 생애주기 관리가 가능.

입력 내용: 개발 환경-시놀리지 NAS 웹스테이션, 마리아DB,PHP8.

개발 환경-시놀리지 NAS 웹스테이션, 마리아DB,PHP8.2 이상

Claude 응답: 환경에 맞게 구체적인 개발 구성을 설계하겠습니다.

개발 환경 구성 가이드

1. 시놀로지 Web Station 설정

DSM 패키지 센터에서 아래 순서로 설치합니다.

  • Web StationPHP 8.2MariaDB 10phpMyAdmin (선택)

Web Station에서 가상 호스트 생성 시 백엔드를 PHP 8.2 FastCGI로, 루트를 /volume1/web/archive/로 지정합니다.

2. MariaDB 초기 설정

sql

-- DB 및 사용자 생성
CREATE DATABASE archive_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'archive_user'@'localhost' IDENTIFIED BY '강력한_패스워드';
GRANT ALL PRIVILEGES ON archive_db.* TO 'archive_user'@'localhost';
FLUSH PRIVILEGES;

3. PHP 8.2 필수 확장 모듈

Web Station → PHP 설정에서 활성화해야 할 모듈입니다.

모듈 용도
pdo_mysql MariaDB 연결 (PDO)
mbstring 한글 처리
fileinfo 업로드 파일 MIME 검증
zip 문서 압축/해제
json REST API 응답
openssl 암호화·HTTPS

4. 디렉토리 구조

/volume1/web/archive/
├── index.php               # 진입점 (프론트 컨트롤러)
├── config/
│   ├── database.php        # DB 연결 설정
│   └── app.php             # 앱 전역 설정
├── api/                    # REST API 엔드포인트
│   ├── institution.php     # 기관 관리
│   ├── record.php          # 기록물 CRUD
│   ├── classification.php  # 업무분류표
│   └── employee.php        # 직원/입소자
├── uploads/                # 원문 파일 (외부 접근 차단)
│   └── .htaccess           # direct access 금지
└── lib/
    ├── DB.php              # PDO 싱글턴 클래스
    ├── Auth.php            # 인증·권한
    └── FileManager.php     # 파일 업로드·관리

5. DB 연결 클래스 (PDO 기반)

php

<?php
// config/database.php - MariaDB PDO 연결 설정

class DB {
    private static ?PDO $instance = null;

    public static function connect(): PDO {
        if (self::$instance === null) {
            $dsn = 'mysql:host=localhost;dbname=archive_db;charset=utf8mb4';
            $options = [
                PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
                PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
                PDO::ATTR_EMULATE_PREPARES   => false, // 실제 prepared statement 사용
            ];
            self::$instance = new PDO($dsn, 'archive_user', '패스워드', $options);
        }
        return self::$instance;
    }
}

6. 시놀로지 특이사항 (주의점)

php.ini 커스텀 설정은 Web Station PHP 프로필 편집기에서만 적용됩니다. /etc/php.ini를 직접 수정하면 DSM 업데이트 시 초기화되므로 반드시 Web Station UI를 통해 설정해야 합니다.

파일 업로드 경로는 /volume1/ 하위로 지정하고, www-data 사용자에게 쓰기 권한을 부여해야 합니다.

bash

# SSH 접속 후 권한 설정
chown -R http:http /volume1/web/archive/uploads
chmod 750 /volume1/web/archive/uploads