사용자 매뉴얼·번호알기·gov-portal 대시보드와 메뉴 동선·수불 리포트를 보강한다.
- 사용자 매뉴얼: league/commonmark 기반 bag/manual(로그인 전용), ManualRenderer + Config\Manual manifest, 콘텐츠 8종, E2E - 번호알기(봉투번호확인): bag/number-lookup, BagNumberLookup, E2E - gov-portal 대시보드 시안(기본/strip)·기본코드관리 화면 - 메뉴 관리: 등록·수정 후 메뉴 화면 유지, 수정 버튼 클릭 시 상단 스크롤 - 수불/분석 리포트(LOT 수불·반품/파기·수급계획·추이) 표시 보강 - .gitignore: docs/ → /docs/ 앵커링(최상위 개발문서만 제외, app/Docs는 추적) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -3571,6 +3571,71 @@ SQL);
|
||||
return $this->render('도움말', 'bag/help', []);
|
||||
}
|
||||
|
||||
/**
|
||||
* 사용자 매뉴얼(설명서) — 목차 첫 페이지로 이동.
|
||||
*/
|
||||
public function manual(): \CodeIgniter\HTTP\RedirectResponse
|
||||
{
|
||||
$first = (new \App\Libraries\ManualRenderer())->firstSlug();
|
||||
|
||||
return redirect()->to(site_url('bag/manual/' . $first));
|
||||
}
|
||||
|
||||
/**
|
||||
* 사용자 매뉴얼 개별 페이지 (slug = 화이트리스트). 미등록 slug 는 404.
|
||||
*/
|
||||
public function manualPage(string $slug): string
|
||||
{
|
||||
$renderer = new \App\Libraries\ManualRenderer();
|
||||
$page = $renderer->find($slug);
|
||||
$body = $page !== null ? $renderer->render($slug) : null;
|
||||
if ($page === null || $body === null) {
|
||||
throw \CodeIgniter\Exceptions\PageNotFoundException::forPageNotFound('매뉴얼 문서를 찾을 수 없습니다.');
|
||||
}
|
||||
|
||||
return $this->render('사용자 매뉴얼 · ' . $page['title'], 'bag/manual', [
|
||||
'pages' => $renderer->pages(),
|
||||
'current' => $slug,
|
||||
'title' => $page['title'],
|
||||
'body' => $body,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 도움말 — 번호알기(봉투번호확인). 코드 → 바코드·인쇄숫자·인식번호.
|
||||
*/
|
||||
public function numberLookup(): string
|
||||
{
|
||||
$code = trim((string) ($this->request->getGet('code') ?? ''));
|
||||
$result = null;
|
||||
$error = '';
|
||||
|
||||
if ($code !== '') {
|
||||
$resolved = (new \App\Libraries\BagNumberLookup())->resolve($code, $this->lgIdx());
|
||||
$result = $resolved;
|
||||
if (! $resolved['ok']) {
|
||||
$error = (string) $resolved['message'];
|
||||
}
|
||||
}
|
||||
|
||||
return $this->render('번호알기', 'bag/number_lookup', [
|
||||
'code' => $code,
|
||||
'result' => $result,
|
||||
'error' => $error,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 번호알기 AJAX 조회.
|
||||
*/
|
||||
public function numberLookupResolve()
|
||||
{
|
||||
$code = trim((string) ($this->request->getPost('code') ?? $this->request->getGet('code') ?? ''));
|
||||
$data = (new \App\Libraries\BagNumberLookup())->resolve($code, $this->lgIdx());
|
||||
|
||||
return $this->response->setJSON($data);
|
||||
}
|
||||
|
||||
// ══════════════════════════════════════════════
|
||||
// CRUD — 사이트 레이아웃으로 등록/처리 폼 제공
|
||||
// ══════════════════════════════════════════════
|
||||
|
||||
Reference in New Issue
Block a user