그누보드7을 위한 Form Builder & Submission 모듈의 첫 공개 릴리스입니다.
glitter-form_builder는 폼 정의부터 버전 관리, 공개 폼 렌더링, 제출 데이터 처리와 관리자 조회까지 이어지는 폼 라이프사이클을 모듈 단위로 제공하는 것을 목표로 합니다.
단순한 입력 폼 UI에 그치지 않고, Canonical Form Schema와 Field Provider Contract를 중심으로 다양한 필드와 외부 확장이 동일한 규약 위에서 동작할 수 있도록 설계했습니다.
주요 기능
Form 관리
관리자에서 폼을 생성하고 관리할 수 있습니다.
- 폼 목록 및 검색
- 폼 생성
- 폼 수정
- 폼 상태 관리
- Schema 검증
- Publish 흐름
- Form Version 관리
폼의 편집 상태와 실제 공개 상태를 분리하고, 게시 시점의 Schema를 버전 단위로 관리할 수 있는 구조를 제공합니다.
Canonical Form Schema
폼 필드의 정의를 공통 Schema Contract로 관리합니다.
Field Definition은 필드의 종류뿐 아니라 key, type, provider, contract version, validation 및 metadata 등을 일관된 계약으로 다룰 수 있도록 설계되어 있습니다.
이를 통해 관리자 Form Builder, 공개 폼 렌더러, 제출 처리 계층이 동일한 Schema를 기준으로 동작합니다.
Built-in Field Providers
기본 Field Provider를 제공합니다.
- Text
- Textarea
- Number
- Date
- Datetime
- Select
- Radio
- Checkbox
- Consent
- Hidden
Field Provider 구조를 통해 새로운 필드 타입을 독립적으로 확장할 수 있습니다.
Schema Validation
폼을 게시하기 전에 Schema의 구조와 필드 정의를 검증합니다.
- Form Schema parsing
- Schema validation
- Publish validation
- Field definition validation
- Field contract compatibility 검사
- 중복 및 알 수 없는 field type 검사
- Schema issue severity 처리
잘못된 Schema가 공개 폼이나 제출 처리 단계까지 전달되는 것을 줄이기 위한 검증 계층을 제공합니다.
Public Form
게시된 폼을 사용자 화면에 렌더링할 수 있는 공개 Form 구조를 제공합니다.
- 공개 Form Schema 조회
- Schema 기반 Form projection
- Public rendering policy
- 사용자 Form layout
- 공개 제출 API
관리자에서 정의한 Form Schema를 공개 UI와 Submission 처리 계층에서 공통으로 사용할 수 있도록 구성했습니다.
Submission 처리
사용자가 제출한 데이터를 Schema와 Field Provider Contract에 따라 정규화하고 저장합니다.
- Submission 입력 검증
- Field별 normalization
- Canonical payload 처리
- Submission Context
- Submission Receipt
- Idempotency conflict 처리
- SubmissionReceived event
- 제출 데이터 및 field value 저장
Form 정의와 Submission 데이터를 분리하여 이후 connector, automation 및 외부 처리 계층으로 확장할 수 있는 기반을 제공합니다.
관리자 Submission 관리
관리자에서 제출 데이터를 조회할 수 있습니다.
- 제출 목록
- 제출 검색 및 필터
- 제출 상세 조회
- Pagination
- 관리자 전용 Submission Resource
Form 관리와 Submission 관리를 별도의 관리자 화면으로 제공합니다.
관리자 UI
그누보드7 JSON Layout과 typed frontend route 구조를 사용합니다.
주요 관리자 화면:
- Form 목록
- Form 생성
- Form 수정
- Submission 목록
- Submission 상세
관리자 사이드 메뉴는 다음과 같이 구성됩니다.
반짝이 폼 관리
- 폼
- 제출
관리자 목록 화면은 sirsoft-admin_basic의 반응형 관리자 레이아웃 규약을 사용하며 화면 크기에 따라 적절한 콘텐츠 padding과 section spacing을 적용합니다.
다국어 지원
한국어와 영어 UI를 지원합니다.
- 관리자 메뉴
- Form 관리 화면
- Submission 관리 화면
- 공개 Form 화면
- Field 관련 UI
JSON Layout의 표시 문자열은 G7 frontend i18n 체계를 사용하며, backend message와 field metadata도 모듈 language resource를 통해 관리합니다.
권한 관리
G7의 Role / Permission 체계를 사용하여 Form과 Submission 관리 권한을 분리합니다.
관리자 route와 API는 모듈의 permission contract를 기준으로 접근을 제어합니다.
권한 검사를 제거하거나 별도의 관리자 우회 로직을 사용하지 않습니다.
확장 구조
glitter-form_builder는 독립적인 Form UI보다 다른 모듈에서도 사용할 수 있는 Form Infrastructure를 지향합니다.
주요 확장 지점:
- Field Provider
- Field Type Registry
- Form Schema Contract
- Submission Contract
- Submission Handler
- Processing Lifecycle
- Connector Boundary
- Event
- Idempotency
관련 contract와 설계 문서를 docs/contracts 및 docs/design에 포함했습니다.
테스트
초기 릴리스에는 다음 영역에 대한 테스트가 포함되어 있습니다.
- Module lifecycle
- Module skeleton
- Form repository/service
- Field Provider contract
- Built-in field behavior
- Field Type Registry
- Schema parser/validator
- Publish validation
- Public Form rendering
- Submission contract
- Submission resource
- 관리자 UI/layout contract
- i18n/menu contract
- Designer state/publish flow
기술 환경
- PHP 8.2+
- Laravel 12.x
- Gnuboard7 7.0.5+
- TypeScript
- JSON Layout
- Vite
설치
그누보드7의 module lifecycle을 통해 설치 및 활성화합니다.
모듈 identifier:
glitter-form_builder
배포 환경에서는 저장소의 소스를 직접 수정하기보다 그누보드7의 정식 모듈 설치·업데이트 절차를 사용하는 것을 권장합니다.
v0.3.16 UI 보완
첫 공개 릴리스에 앞서 관리자 UI를 추가로 정리했습니다.
- 모듈 표시명을
반짝이 폼 관리로 정리 - 관리자 사이드 메뉴 branding 통일
- 관리자 메뉴 i18n 처리 보완
- Form/Submission 화면 i18n contract 검증
- Form/Submission 목록의 반응형 콘텐츠 padding 적용
- 관리자 section 간 vertical spacing 정리
- 기존 route, API 및 permission contract 유지
현재 단계
v0.3.16은 glitter-form_builder의 첫 공개 릴리스입니다.
현재 릴리스는 Form Schema, Field Provider, Public Form, Submission 처리 및 관리자 UI를 포함하는 기반 기능을 제공합니다.
향후 다른 그누보드7 모듈이 Form Builder를 공통 입력·제출 인프라로 사용할 수 있도록 Contract와 확장 지점을 지속적으로 안정화할 예정입니다.