사용자 매뉴얼·번호알기·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:
taekyoungc
2026-06-08 00:46:51 +09:00
parent 0f1d414f37
commit 8763876f19
77 changed files with 6139 additions and 182 deletions

View File

@@ -240,16 +240,27 @@ test.describe('P5-08: 반품/파기 현황', () => {
test('기간·입출고 조회 및 엑셀', async ({ page }) => {
await loginAsLocal(page);
await page.goto('/bag/reports/returns?search=1&start_date=2026-01-01&end_date=2026-12-31&io_type=out');
await page.goto('/bag/reports/returns?search=1&start_date=2026-05-01&end_date=2026-05-31&io_type=out');
await expect(page.locator('table.data-table')).toBeVisible();
await expect(page.locator('table.data-table tbody tr').first()).not.toContainText('해당 자료가 없습니다');
await expect(page.getByText('반품').first()).toBeVisible();
await expect(page.getByRole('link', { name: '엑셀저장' })).toBeVisible();
const res = await page.request.get(
'/bag/reports/returns/export?search=1&start_date=2026-01-01&end_date=2026-12-31&io_type=out'
'/bag/reports/returns/export?search=1&start_date=2026-05-01&end_date=2026-05-31&io_type=out'
);
expect(res.status()).toBe(200);
const ct = (res.headers()['content-type'] || '').toLowerCase();
expect(ct).toContain('application/vnd.ms-excel');
});
test('5월 입고(파기) 조회', async ({ page }) => {
await loginAsLocal(page);
await page.goto('/bag/reports/returns?search=1&start_date=2026-05-01&end_date=2026-05-31&io_type=in');
await expect(page.locator('table.data-table')).toBeVisible();
await expect(page.locator('table.data-table tbody tr').first()).not.toContainText('해당 자료가 없습니다');
await expect(page.getByText('물류창고')).toBeVisible();
await expect(page.getByText('파기').first()).toBeVisible();
});
});
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━