Skip to content

조직 구조

Doggy는 완전한 기업 조직 구조 관리 기능을 제공하며, Gedmo Nested Set 기반 트리 구조로 다중 회사, 다중 부서, 직위 편제를 지원합니다.

엔티티 모델

조직 구조 관련 엔티티는 src/Entity/Organization/에 있습니다:

엔티티테이블명설명
Corporation그룹/기업 그룹
Company회사
Departmentorg_department부서(Gedmo NestedTree)
Position직위
PositionLevel직급
Employee직원(동시에 시스템 사용자)

부서 관리

부서는 Gedmo NestedTree로 무제한 계층의 트리 구조를 구현합니다(src/Entity/Organization/Department.php):

php
#[ORM\Entity]
#[ORM\Table(name: 'org_department')]
#[Gedmo\Tree(type: 'nested')]
class Department implements GedmoNode
{
    use CommonTrait;

    #[ORM\Id]
    #[ORM\Column(type: 'uuid', unique: true)]
    #[ORM\GeneratedValue(strategy: 'CUSTOM')]
    #[ORM\CustomIdGenerator(class: 'doctrine.uuid_generator')]
    private $id;

    #[ORM\Column(length: 100)]
    private string $name;

    #[ORM\Column(length: 50, nullable: true)]
    private ?string $code = null;

    #[Gedmo\TreeLeft]
    #[ORM\Column(type: 'integer')]
    private int $lft;

    #[Gedmo\TreeLevel]
    #[ORM\Column(type: 'integer')]
    private int $lvl;

    #[Gedmo\TreeRight]
    #[ORM\Column(type: 'integer')]
    private int $rgt;

    #[Gedmo\TreeRoot]
    #[ORM\Column(type: 'integer', nullable: true)]
    private ?int $root = null;

    #[Gedmo\TreeParent]
    #[ORM\ManyToOne(targetEntity: self::class, inversedBy: 'children')]
    private ?self $parent = null;

    #[ORM\OneToMany(targetEntity: self::class, mappedBy: 'parent')]
    private Collection $children;

    /** Many-to-Many with Employee for managers */
    #[ORM\ManyToMany(targetEntity: Employee::class)]
    private Collection $manager;
}

부서 속성

필드타입설명
namestring부서명
codestring고유 코드
parentself (NestedTree)상위 부서
managerManyToMany(Employee)부서 책임자
companyManyToOne(Company)소속 회사
typestring부서 유형
statestring활성화/비활성화
sortOrderinteger정렬 가중치

관리 인터페이스

관리 백엔드 진입점: App\Controller\Admin\OrgController

  • 트리 구조 시각화 표시(templates/admin/org/department.html.twig)
  • 부서 편집(departmentEdit.html.twig)
  • 부서 트리 노드 컴포넌트(department_node.html.twig)
  • 부서 선택기(department/singleSelect.html.twig)

직위 관리

직위는 조직 내 직무 정의로 부서와 연관되며 관리 진입점은 templates/admin/org/position/:

  • 직위 목록(index.html.twig)
  • 직위 생성/편집(create_drawer.html.twig, edit_drawer.html.twig)
  • 직급 관리(level_index.html.twig)
  • 직위 선택기(position_modal.html.twig, position_multi_modal.html.twig)

회사 관리

다중 회사 구조 지원:

  • Corporation: 기업 그룹 최상위
  • Company: 하위 회사, CommonTraitcorporation/company 연관으로 연결
  • 관리 인터페이스: corporation.html.twig, companyEdit.html.twig

캐시

조직 구조는 의미 기반 캐시 전략을 사용하며 Doctrine 이벤트 리스너로 캐시 일관성을 자동 유지합니다.

MIT 라이선스 오픈소스 | Copyright © 2026 Doggy