<?php

declare(strict_types=1);

namespace Config;

use CodeIgniter\Config\BaseConfig;

/**
 * 사용자 매뉴얼(설명서) 목차 정의.
 *
 * - 배열 순서가 곧 목차(사이드바) 노출 순서입니다.
 * - slug 는 URL 세그먼트이자 화이트리스트입니다. 여기에 없는 slug 는 404 입니다.
 * - file 은 $dir 하위의 실제 마크다운 파일명입니다(사용자 입력으로 조합하지 않음).
 */
class Manual extends BaseConfig
{
    /** 마크다운 콘텐츠 디렉터리 (웹 루트 밖). */
    public string $dir = APPPATH . 'Docs/manual/';

    /**
     * @var array<string, array{title: string, file: string}>
     */
    public array $pages = [
        'overview'  => ['title' => '시작하기·시스템 개요',     'file' => '00_overview.md'],
        'account'   => ['title' => '로그인·회원가입·계정',      'file' => '01_account.md'],
        'workspace' => ['title' => '화면 구성·워크스페이스·단축키', 'file' => '05_workspace.md'],
        'flow'      => ['title' => '핵심 업무 흐름',           'file' => '10_workflow.md'],
        'order'     => ['title' => '발주·입고',                'file' => '20_order_receiving.md'],
        'inventory' => ['title' => '재고·실사',                'file' => '30_inventory.md'],
        'sales'     => ['title' => '판매·반품·불출·주문',       'file' => '40_sales_issue.md'],
        'reports'   => ['title' => '현황·리포트·수불',          'file' => '50_reports.md'],
        'basic'     => ['title' => '기본정보(판매소·단가·코드)', 'file' => '60_basic_info.md'],
        'codes'     => ['title' => '봉투·LOT·바코드 코드체계',  'file' => '90_code_system.md'],
        'faq'       => ['title' => '자주 묻는 질문·문의',       'file' => '99_faq.md'],
    ];

    /**
     * 화면 경로(접두) → 그 화면을 설명하는 매뉴얼 slug.
     * "이 화면 설명" 버튼이 현재 경로로 알맞은 매뉴얼 페이지를 연다.
     * 더 긴(구체적) 접두가 우선하도록 길이 내림차순으로 매칭한다.
     *
     * 값에 "slug#소제목힌트" 형식으로 적으면, 매뉴얼 창이 열릴 때 해당 소제목으로
     * 자동 스크롤하고 잠시 강조 표시한다(힌트는 그 페이지의 H2/H3 텍스트 일부와 일치).
     *
     * @var array<string, string>
     */
    public array $screenHelp = [
        'bag/order/phone'        => 'sales#전화 주문 접수',
        'bag/order/lot-seed'     => 'order#발주파일 생성',
        'bag/order'              => 'order#발주 등록',
        'bag/password-change'    => 'account#비밀번호 변경',
        'bag/bag-orders'         => 'order#발주 현황',
        'bag/receiving'          => 'order#입고 처리',
        'bag/bag-receivings'     => 'order#입고 현황',
        'bag/inventory'          => 'inventory#재고 현황',
        'bag/sale'               => 'sales#지정판매소 판매',
        'bag/sales'              => 'sales#지정판매소 판매',
        'bag/issue'              => 'sales#무료용 불출 처리',
        'bag/bag-issues'         => 'sales#무료용 불출 처리',
        'bag/bag-sales'          => 'sales#판매/반품 현황',
        'bag/shop-orders'        => 'sales#전화 주문 접수',
        'bag/flow'                  => 'reports#기간별 봉투 수불 현황',
        'bag/reports/misc-flow'     => 'reports#기타 입출고',
        'bag/reports/returns'       => 'reports#반품/파기 현황',
        'bag/reports/lot-flow'      => 'reports#LOT 수불 조회',
        'bag/reports/supply-demand' => 'reports#쓰레기봉투 수급 계획',
        'bag/reports/shop-sales'    => 'reports#지정 판매소별 판매현황',
        'bag/reports/daily-summary' => 'reports#일계표',
        'bag/reports/period-sales'  => 'reports#그 밖의 현황',
        'bag/reports/yearly-sales'  => 'reports#그 밖의 현황',
        'bag/reports/sales-ledger'  => 'reports#그 밖의 현황',
        'bag/reports/hometax-export' => 'reports#그 밖의 현황',
        'bag/reports'            => 'reports#일계표',
        'bag/analytics'          => 'reports#그 밖의 현황',
        'bag/designated-shops/status'            => 'basic#지정 판매소 신규/취소 현황',
        'bag/designated-shops/district-new-cancel' => 'basic#지정 판매소 신규/취소 현황',
        'bag/designated-shops'   => 'basic#지정판매소 관리',
        'bag/bag-prices'         => 'basic#단가 관리',
        'bag/prices'             => 'basic#단가 관리',
        'bag/packaging-units'    => 'basic#포장 단위 관리',
        'bag/code-kinds'         => 'basic#기본코드 관리',
        'bag/code-details'       => 'basic#기본코드 관리',
        'bag/managers'           => 'basic#그 밖의 기본정보',
        'bag/companies'          => 'basic#그 밖의 기본정보',
        'bag/sales-agencies'     => 'basic#그 밖의 기본정보',
        'bag/free-recipients'    => 'basic#그 밖의 기본정보',
        'bag/number-lookup'      => 'codes',
    ];
}
