환경 초기화 및 벤더 리포지토리 스켈레톤 도입

This commit is contained in:
JiWoong Sul
2025-09-22 17:38:51 +09:00
commit 5c9de2594a
171 changed files with 13304 additions and 0 deletions

View File

@@ -0,0 +1,47 @@
import 'package:flutter/widgets.dart';
import '../../../../../widgets/spec_page.dart';
class ApprovalHistoryPage extends StatelessWidget {
const ApprovalHistoryPage({super.key});
@override
Widget build(BuildContext context) {
return const SpecPage(
title: '결재 이력 조회',
summary: '결재 단계별 변경 이력을 조회합니다.',
sections: [
SpecSection(
title: '조회 테이블',
description: '수정 없이 이력 리스트만 제공.',
table: SpecTable(
columns: [
'번호',
'결재ID',
'단계ID',
'승인자',
'행위',
'변경전상태',
'변경후상태',
'작업일시',
'비고',
],
rows: [
[
'1',
'APP-20240301-001',
'STEP-1',
'최관리',
'승인',
'승인대기',
'승인완료',
'2024-03-01 10:30',
'-',
],
],
),
),
],
);
}
}

View File

@@ -0,0 +1,59 @@
import 'package:flutter/widgets.dart';
import '../../../../../widgets/spec_page.dart';
class ApprovalRequestPage extends StatelessWidget {
const ApprovalRequestPage({super.key});
@override
Widget build(BuildContext context) {
return const SpecPage(
title: '결재 관리',
summary: '결재 번호와 상태, 상신자를 확인하고 결재 플로우를 제어합니다.',
sections: [
SpecSection(
title: '입력 폼',
items: [
'트랜잭션번호 [Dropdown]',
'결재번호 [자동생성]',
'결재상태 [Dropdown]',
'상신자 [자동]',
'비고 [Text]',
],
),
SpecSection(
title: '수정 폼',
items: ['결재번호 [ReadOnly]', '상신자 [ReadOnly]', '요청일시 [ReadOnly]'],
),
SpecSection(
title: '테이블 리스트',
description: '1행 예시',
table: SpecTable(
columns: [
'번호',
'결재번호',
'트랜잭션번호',
'상태',
'상신자',
'요청일시',
'최종결정일시',
'비고',
],
rows: [
[
'1',
'APP-20240301-001',
'IN-20240301-001',
'승인대기',
'홍길동',
'2024-03-01 09:00',
'-',
'-',
],
],
),
),
],
);
}
}

View File

@@ -0,0 +1,50 @@
import 'package:flutter/widgets.dart';
import '../../../../../widgets/spec_page.dart';
class ApprovalStepPage extends StatelessWidget {
const ApprovalStepPage({super.key});
@override
Widget build(BuildContext context) {
return const SpecPage(
title: '결재 단계 관리',
summary: '결재 단계 순서와 승인자를 구성합니다.',
sections: [
SpecSection(
title: '입력 폼',
items: [
'결재ID [Dropdown]',
'단계순서 [Number]',
'승인자 [Dropdown]',
'단계상태 [Dropdown]',
'비고 [Text]',
],
),
SpecSection(
title: '수정 폼',
items: ['결재ID [ReadOnly]', '단계순서 [ReadOnly]'],
),
SpecSection(
title: '테이블 리스트',
description: '1행 예시',
table: SpecTable(
columns: ['번호', '결재ID', '단계순서', '승인자', '상태', '배정일시', '결정일시', '비고'],
rows: [
[
'1',
'APP-20240301-001',
'1',
'최관리',
'승인대기',
'2024-03-01 09:00',
'-',
'-',
],
],
),
),
],
);
}
}

View File

@@ -0,0 +1,51 @@
import 'package:flutter/widgets.dart';
import '../../../../../widgets/spec_page.dart';
class ApprovalTemplatePage extends StatelessWidget {
const ApprovalTemplatePage({super.key});
@override
Widget build(BuildContext context) {
return const SpecPage(
title: '결재 템플릿 관리',
summary: '반복적인 결재 흐름을 템플릿으로 정의합니다.',
sections: [
SpecSection(
title: '입력 폼',
items: [
'템플릿코드 [Text]',
'템플릿명 [Text]',
'설명 [Text]',
'작성자 [ReadOnly]',
'사용여부 [Switch]',
'비고 [Text]',
'단계 추가: 순서 [Number], 승인자 [Dropdown]',
],
),
SpecSection(
title: '수정 폼',
items: ['템플릿코드 [ReadOnly]', '작성자 [ReadOnly]'],
),
SpecSection(
title: '테이블 리스트',
description: '1행 예시',
table: SpecTable(
columns: ['번호', '템플릿코드', '템플릿명', '설명', '작성자', '사용여부', '변경일시'],
rows: [
[
'1',
'TEMP-001',
'입고 기본 결재',
'입고 처리 2단계 결재',
'홍길동',
'Y',
'2024-03-01 10:00',
],
],
),
),
],
);
}
}