fix(WEB): E2E 테스트 버그 수정 (HOTFIX 2026-01-27)

- 카드내역 일괄변경 시 선택 항목 인식 안되는 버그 수정
- 게시판 글쓰기/수정 폼 미렌더링 버그 수정 (mode=new/edit 처리)
- 자동 출퇴근 설정 저장 안되는 버그 수정 (useAuto API 연동)
- DynamicBoardCreateForm/EditForm 컴포넌트 분리
- UniversalListPage에 onSelectionChange 콜백 추가

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
유병철
2026-01-27 14:47:28 +09:00
parent 815ed9267e
commit 07aaa32bdf
11 changed files with 786 additions and 395 deletions

View File

@@ -13,6 +13,7 @@ interface ApiAttendanceSetting {
id: number;
tenant_id: number;
use_gps: boolean;
use_auto: boolean;
allowed_radius: number;
hq_address: string | null;
hq_latitude: number | null;
@@ -21,9 +22,10 @@ interface ApiAttendanceSetting {
updated_at?: string;
}
// React 폼 데이터 타입 (API 지원 필드만)
// React 폼 데이터 타입
export interface AttendanceSettingFormData {
useGps: boolean;
useAuto: boolean;
allowedRadius: number;
hqAddress: string | null;
hqLatitude: number | null;
@@ -60,6 +62,7 @@ interface ApiResponse<T> {
function transformFromApi(data: ApiAttendanceSetting): AttendanceSettingFormData {
return {
useGps: data.use_gps,
useAuto: data.use_auto,
allowedRadius: data.allowed_radius,
hqAddress: data.hq_address,
hqLatitude: data.hq_latitude,
@@ -74,6 +77,7 @@ function transformToApi(data: Partial<AttendanceSettingFormData>): Record<string
const apiData: Record<string, unknown> = {};
if (data.useGps !== undefined) apiData.use_gps = data.useGps;
if (data.useAuto !== undefined) apiData.use_auto = data.useAuto;
if (data.allowedRadius !== undefined) apiData.allowed_radius = data.allowedRadius;
if (data.hqAddress !== undefined) apiData.hq_address = data.hqAddress;
if (data.hqLatitude !== undefined) apiData.hq_latitude = data.hqLatitude;

View File

@@ -69,6 +69,7 @@ export function AttendanceSettingsManagement() {
setSettings(prev => ({
...prev,
gpsEnabled: settingResult.data!.useGps,
autoEnabled: settingResult.data!.useAuto,
allowedRadius: settingResult.data!.allowedRadius as AllowedRadius,
}));
} else if (settingResult.error) {
@@ -103,7 +104,7 @@ export function AttendanceSettingsManagement() {
}));
};
// 자동 출퇴근 사용 토글 (UI 전용 - API 미지원)
// 자동 출퇴근 사용 토글
const handleAutoToggle = (checked: boolean) => {
setSettings(prev => ({
...prev,
@@ -132,9 +133,9 @@ export function AttendanceSettingsManagement() {
const handleSave = async () => {
setIsSaving(true);
try {
// API 지원 필드만 전송
const result = await updateAttendanceSetting({
useGps: settings.gpsEnabled,
useAuto: settings.autoEnabled,
allowedRadius: settings.allowedRadius,
});