jasan/.work
2026-02-08 15:54:29 +09:00

91 lines
No EOL
4.2 KiB
Text

WORK ORDER: FKI Corporate Asset System Migration
Project Code: FKI-ASSET-V2 Date: 2026-02-08 To: Antigravity Development Team From: System Architect
1. Project Overview
기존 Notion으로 관리되던 한경협(FKI)의 4대 핵심 자산(직원, 노트북, 임시출입증, 복합기 계정) 데이터를 완벽하게 이관하고, PHP 8.4 + SQLite 기반의 독립적인 웹 애플리케이션을 구축한다. 핵심 목표는 **Zero Latency(즉각적인 반응 속도)**와 Data Integrity(데이터 무결성) 확보이며, 특히 **CSV 데이터의 자동 정규화 및 관계 연결(Mapping)**이 필수 요구사항이다.
2. Technical Stack & Environment
Platform: Synology NAS Web Station (Self-hosted)
Language: PHP 8.4 (Strong Typing, Modern Syntax)
Database: SQLite 3 (WAL Mode Enabled, Foreign Keys ON)
Frontend: HTML5, Tailwind CSS (CDN), Alpine.js (CDN)
Architecture: Single File DB (assets.db), RESTful API (api.php)
3. Database Schema Requirements (Finalized)
모든 테이블은 확장을 대비해 spare_1 ~ spare_5 컬럼을 포함할 것.
[A] departments (조직도)
계층형 구조 지원 (parent_id, level).
Migration Rule: CSV의 상위 항목 컬럼을 분석하여 부모-자식 관계를 자동으로 연결할 것.
[B] users (직원 마스터)
Columns: emp_id(사번), name, department_id, position(직위), email, phone(내선), mobile(휴대폰), status(active/resigned), accounting_type(회계구분).
Migration Rule: 사번이 없는 경우 FKI_TEMP_{id} 형식으로 임시 발급. 회계구분은 기본 '일반회계'로 설정하되 추후 수정 가능하도록 구현.
[C] laptop_models (모델 마스터)
Columns: model_name, manufacturer.
Migration Rule: 노트북 데이터에서 모델명을 추출하여 중복 없이 마스터 테이블로 생성.
[D] laptop_assets (노트북 실물)
Columns: asset_tag(자산관리번호-PK), model_id, current_user_id(FK), status(stock/assigned), serial_number, purchase_date.
Migration Rule (Critical):
CSV의 사용중노트북 컬럼(User CSV)과 배정 사용자(Laptop CSV) 양방향을 대조하여 매핑.
Notion Link 포맷(Name (Link))을 파싱하여 순수 텍스트만 추출해 매핑할 것.
[E] access_cards (임시 출입증)
Columns: card_number(보안실 넘버링-PK), card_type(임시 네이밍), nfc_id.
[F] mfp_accounts (복합기 계정)
Columns: account_id(이름-PK), account_pw, purpose(사용목적), status.
4. Migration & Initialization Logic (db_init.php)
핵심 요구사항: 별도의 CSV 업로드 과정 없이, 제공된 PHP 파일 실행 한 번으로 DB 생성부터 데이터 주입까지 완료되어야 함.
Embed SQL Data: 분석 완료된 CSV 데이터를 INSERT 쿼리 형태로 PHP 파일 내부에 하드코딩할 것 (약 400+ Rows).
Hierarchy Restoration: 부서명을 기준으로 부모 ID를 찾아 departments 테이블의 계층 구조를 복원할 것.
Smart Linking: 노트북의 asset_tag를 키로 사용하여 users 테이블과 laptop_assets 테이블의 Foreign Key 관계를 완벽하게 연결할 것.
5. UI/UX Specifications
5.1 Dashboard (index.php)
Layout: 4-Column Grid (Laptops, Access Cards, MFP, Users).
Metrics: 총 자산 수 vs 할당된 자산 수(Assign Rate)를 시각화 (Progress Bar).
Design: Clean & Corporate Style (Tailwind slate-800 as Primary).
5.2 User Management (users.php)
Table: 사번, 이름/직위, 부서(계층 경로 포함), 연락처(내선/휴대폰/이메일), 상태.
Feature: 검색 기능 및 상태(재직/퇴사) 필터링.
5.3 Asset Management
Laptop List: 자산번호, 모델명, 시리얼, 현재 사용자, 취득일 표시.
6. Deliverables (Files to Submit)
config.php: DB Path 및 WAL 모드 설정.
db_init.php: (중요) 스키마 생성 + CSV 데이터 파싱 완료된 Insert 쿼리 내장 + 자동 실행 로직.
api.php: 4대 자산 CRUD 및 대시보드 통계 API.
index.php: 통합 대시보드 Frontend.
users.php: 직원 관리 Frontend.
laptops.php: 노트북 관리 Frontend.
assets/style.css: 커스텀 스타일.
Note to Developer: db_init.php 작성 시 set_time_limit(300)을 반드시 포함하여 대량의 Insert 쿼리 실행 중 타임아웃이 발생하지 않도록 하십시오. 데이터 분석은 이미 완료되었으므로, 첨부된 SQL 데이터를 그대로 사용하면 됩니다.