ποΈ κ³΅μ¬κ΄λ¦¬ ERP β DB μ€κ³μ v1
ποΈ κ³΅μ¬κ΄λ¦¬ ERP β DB μ€κ³μ v1
μΉμ μ λͺ©: βποΈ κ³΅μ¬κ΄λ¦¬ ERP β DB μ€κ³μ v1βλΆνμ΄ κ΅¬μ + λΆνμλΉ κΈ°ν κΈ°λ° λμ€μ μ μνλ©΄μ μμ /μΆκ° μμ
1. Company (νμ¬)
μΉμ μ λͺ©: β1. Company (νμ¬)βCompanyβββ id UUID PKβββ name VARCHAR(100) -- νμ¬λͺ
βββ business_number VARCHAR(20) -- μ¬μ
μλ±λ‘λ²νΈβββ domain VARCHAR(100) -- μ μ© λλ©μΈβββ address TEXTβββ phone VARCHAR(20)βββ email VARCHAR(100)βββ logo_url VARCHAR(500)βββ settings JSONB -- νμ¬λ³ μ€μ βββ subscription ENUM(무λ£/κΈ°λ³Έ/ν리미μ)βββ subscription_expires TIMESTAMPβββ is_active BOOLEAN DEFAULT TRUEβββ created_at TIMESTAMPβββ updated_at TIMESTAMP2. User (μ¬μ©μ)
μΉμ μ λͺ©: β2. User (μ¬μ©μ)βUserβββ id UUID PKβββ company_id UUID FK β Companyβββ name VARCHAR(50)βββ email VARCHAR(100) -- λ‘κ·ΈμΈIDβββ password_hash VARCHAR(255)βββ phone VARCHAR(20)βββ role ENUM(κ΄λ¦¬μ/곡μ¬κ°λ
/νμ₯λ리/νμ₯ν/곡무ν)βββ team_type ENUM(μΈμ /μ μ/κΈ°ν) -- νμ₯νλ§, λλ¨Έμ§ NULLβββ is_active BOOLEAN DEFAULT TRUEβββ last_login_at TIMESTAMPβββ created_at TIMESTAMPβββ updated_at TIMESTAMPViewerPermission (κ°μμΈ νμ΄μ§ κΆν)
μΉμ μ λͺ©: βViewerPermission (κ°μμΈ νμ΄μ§ κΆν)βViewerPermissionβββ id UUID PKβββ user_id UUID FK β Userβββ page_key VARCHAR(50) -- μ: 곡μ¬λͺ©λ‘/μμ¬νν©/μ§νμνβββ can_view BOOLEAN DEFAULT TRUEβββ granted_by UUID FK β User -- κ΄λ¦¬μ3. ProjectType (곡μ¬μ ν ν νλ¦Ώ)
μΉμ μ λͺ©: β3. ProjectType (곡μ¬μ ν ν νλ¦Ώ)βProjectTypeβββ id UUID PKβββ company_id UUID FK β Companyβββ name VARCHAR(100) -- μ: ν΅μ μ λ‘곡μ¬, 건μΆκ³΅μ¬βββ description TEXTβββ is_active BOOLEAN DEFAULT TRUEβββ created_at TIMESTAMPβββ updated_at TIMESTAMPProjectTypeStage (μ νλ³ νμ΄νλΌμΈ λ¨κ³)
μΉμ μ λͺ©: βProjectTypeStage (μ νλ³ νμ΄νλΌμΈ λ¨κ³)βProjectTypeStageβββ id UUID PKβββ project_type_id UUID FK β ProjectTypeβββ stage_group ENUM(λ°μ/μ€μ¬/μ€κ³/κ²ν /μ§ν/νμ₯μλ£/μ€κ³΅/μλ£)βββ stage_name VARCHAR(100) -- μ: 곡κ°μ¬μ κ²ν βββ stage_order INT -- μ λ ¬μμβββ is_required BOOLEAN DEFAULT TRUEβββ created_at TIMESTAMPβββ updated_at TIMESTAMPμμ (ν΅μ μ λ‘곡μ¬):
| stage_group | stage_name | order |
|---|---|---|
| λ°μ | μ μ | 1 |
| μ€μ¬ | μ€μ¬ | 2 |
| μ€κ³ | μ€κ³ | 3 |
| κ²ν | κ²ν (μΉμΈ) | 4 |
| μ§ν | 곡κ°μ¬μ κ²ν | 5 |
| μ§ν | μ λ‘ν¬μ€ | 6 |
| μ§ν | μ λ²μ‘°μ¬ | 7 |
| μ§ν | μ 체 | 8 |
| μ§ν | μ λ‘μ² κ±° | 9 |
| νμ₯μλ£ | νμ₯μλ£ | 10 |
| μ€κ³΅ | μλ₯μμ± | 11 |
| μ€κ³΅ | 곡κ°μ μ² | 12 |
| μ€κ³΅ | μλ₯μ μ | 13 |
| μλ£ | μλ£ | 14 |
4. Project (곡μ¬)
μΉμ μ λͺ©: β4. Project (곡μ¬)βProjectβββ id UUID PKβββ company_id UUID FK β Companyβββ project_type_id UUID FK β ProjectTypeβββ title VARCHAR(200) -- 곡μ¬λͺ
βββ description TEXTβββ location TEXT -- κ³΅μ¬ μμΉβββ current_stage ENUM(λ°μ/μ€μ¬/μ€κ³/κ²ν /μ§ν/νμ₯μλ£/μ€κ³΅/μλ£)βββ current_step VARCHAR(100) -- νμ¬ μ§νλ¨κ³λͺ
βββ approval_status ENUM(λκΈ°/μΉμΈ/μ·¨μ) DEFAULT 'λκΈ°'βββ agent_id UUID FK β User -- νμ₯λ리 (1λͺ
, κ΅μ²΄κ°λ₯)βββ started_at TIMESTAMPβββ completed_at TIMESTAMPβββ created_at TIMESTAMPβββ updated_at TIMESTAMP5. ProjectTeam (νμ₯ν λ°°μ )
μΉμ μ λͺ©: β5. ProjectTeam (νμ₯ν λ°°μ )βProjectTeamβββ id UUID PKβββ project_id UUID FK β Projectβββ user_id UUID FK β Userβββ team_type ENUM(μΈμ /μ μ/κΈ°ν)βββ assigned_at TIMESTAMPβββ removed_at TIMESTAMP -- νμμ λΉ μ§ λ6. ProjectStageLog (κ³΅μ¬ λ¨κ³ μ§ν μ΄λ ₯)
μΉμ μ λͺ©: β6. ProjectStageLog (κ³΅μ¬ λ¨κ³ μ§ν μ΄λ ₯)βProjectStageLogβββ id UUID PKβββ project_id UUID FK β Projectβββ stage_group ENUM(λ°μ/μ€μ¬/μ€κ³/κ²ν /μ§ν/νμ₯μλ£/μ€κ³΅/μλ£)βββ stage_name VARCHAR(100)βββ status ENUM(μμ/μλ£/μ·¨μ)βββ note TEXT -- λΉκ³ βββ updated_by UUID FK β Userβββ started_at TIMESTAMPβββ completed_at TIMESTAMPβββ created_at TIMESTAMP7. Material (μμ¬ λ§μ€ν°)
μΉμ μ λͺ©: β7. Material (μμ¬ λ§μ€ν°)βMaterialβββ id UUID PKβββ company_id UUID FK β Companyβββ name VARCHAR(100) -- μμ¬λͺ
βββ code VARCHAR(50) -- μμ¬μ½λβββ unit VARCHAR(20) -- λ¨μ (κ°/m/λ±)βββ supply_type ENUM(μ¬κΈ/μ§μ
)βββ unit_price DECIMAL(12,2) -- λ¨κ° (μ§μ
λ§ ν΄λΉ)βββ is_active BOOLEAN DEFAULT TRUEβββ created_at TIMESTAMPβββ updated_at TIMESTAMP8. MaterialInput (μμ¬ μ λ ₯ β 곡μ¬λ³)
μΉμ μ λͺ©: β8. MaterialInput (μμ¬ μ λ ₯ β 곡μ¬λ³)βMaterialInputβββ id UUID PKβββ project_id UUID FK β Projectβββ material_id UUID FK β Materialβββ input_type ENUM(μ΅μ΄/μ¬μ©/λ°μ)βββ quantity INTβββ input_by UUID FK β Userβββ team_type ENUM(μΈμ /μ μ/κ΄λ¦¬μ) -- λκ° μ
λ ₯νλβββ input_at TIMESTAMPβββ created_at TIMESTAMPμλ κ³μ° (VIEW λλ μ±λ¨)
μΉμ μ λͺ©: βμλ κ³μ° (VIEW λλ μ±λ¨)βλΆμ©μμ¬ = μ¬μ©μμ¬ - λ°μμμ¬ (κ°μ project_id + material_id κΈ°μ€)μ¬κ³ = μ΅μ΄μ
λ ₯ - μ¬μ©μμ¬9. Plugin (νλ¬κ·ΈμΈ κ΄λ¦¬)
μΉμ μ λͺ©: β9. Plugin (νλ¬κ·ΈμΈ κ΄λ¦¬)βPluginβββ id UUID PKβββ company_id UUID FK β Companyβββ plugin_key VARCHAR(50) -- μ: 곡κ°μ μ²/μ λ²μ‘°μ¬κ²°κ³Όβββ name VARCHAR(100) -- νμλͺ
βββ enabled BOOLEAN DEFAULT FALSEβββ config JSONB -- νλ¬κ·ΈμΈλ³ μ€μ βββ created_at TIMESTAMPβββ updated_at TIMESTAMPProjectTypePlugin (곡μ¬μ νλ³ νλ¬κ·ΈμΈ μ°κ²°)
μΉμ μ λͺ©: βProjectTypePlugin (곡μ¬μ νλ³ νλ¬κ·ΈμΈ μ°κ²°)βProjectTypePluginβββ id UUID PKβββ project_type_id UUID FK β ProjectTypeβββ plugin_id UUID FK β Pluginβββ enabled BOOLEAN DEFAULT TRUE10. Document (곡κ°μ μ²/ν΄μ§ β νλ¬κ·ΈμΈ μ μ©)
μΉμ μ λͺ©: β10. Document (곡κ°μ μ²/ν΄μ§ β νλ¬κ·ΈμΈ μ μ©)βDocumentβββ id UUID PKβββ project_id UUID FK β Projectβββ doc_type ENUM(곡κ°μ μ²/곡κ°ν΄μ§) -- νλ¬κ·ΈμΈ νμ±ν μλ§βββ status ENUM(μμ±μ€/μ μ²/μ μ/μλ£)βββ content JSONB -- μλ₯ λ΄μ©βββ created_by UUID FK β Userβββ created_at TIMESTAMPβββ updated_at TIMESTAMP11. OCRUpload (OCR μλ£ λ°μ)
μΉμ μ λͺ©: β11. OCRUpload (OCR μλ£ λ°μ)βOCRUploadβββ id UUID PKβββ project_id UUID FK β Projectβββ uploaded_by UUID FK β User -- νμ₯(μ μ)νβββ file_path VARCHAR(500)βββ ocr_result JSONB -- OCR λΆμ κ²°κ³Όβββ reviewed_by UUID FK β User -- νμ₯λ리βββ review_status ENUM(λκΈ°/νμΈ/μμ )βββ uploaded_at TIMESTAMPβββ reviewed_at TIMESTAMPπ ER κ΄κ³ μμ½
μΉμ μ λͺ©: βπ ER κ΄κ³ μμ½βCompany ββββ User ββββ ViewerPermission β βββββ ProjectType ββ ProjectTypeStage β β β βββββ ProjectTypePlugin ββ Plugin β βββββ Project ββ ProjectTeam β β β βββββ ProjectStageLog β βββββ MaterialInput βββ Material β βββββ Document (νλ¬κ·ΈμΈ) β βββββ OCRUpload β βββββ Materialπ λμ€μ μΆκ°ν κ²
μΉμ μ λͺ©: βπ λμ€μ μΆκ°ν κ²β- κ°μ¬ λ‘κ·Έ (AuditLog) β λκ° λ μΈμ λ³κ²½νλ
- μλ¦Ό μμ€ν β λ¨κ³ λ³κ²½ μ μλ¦Ό
- νμΌ μ²¨λΆ β 곡μ¬λ³ 첨λΆνμΌ
- ν΅κ³/리ν¬νΈ β κ΄λ¦¬μ λμ보λμ©
- API ν ν° β μΈλΆ μ°λμ©
[!note] μμ μ΄λ ₯ | 2026-05-08 02:35, λ£¨ν€ (hermes)
- NAS μ΄μ λ³ΌνΈ(v0.2) κ΅μ²΄μ¬λ‘ λ΄μ© 볡μ
- μλ³Έ: 2026-04-20_곡μ¬κ΄λ¦¬ERP_DBμ€κ³_v1.md