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: 하위 회사, CommonTrait의 corporation/company 연관으로 연결
  • 관리 인터페이스: corporation.html.twig, companyEdit.html.twig

캐시 ​

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

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