기존 주문 건 등록일 기준으로 주문날짜가 입력되게 해두었는데,
담당자가 다음날 등록할 경우도 있다고 하여 주문날짜 수정 기능을 추가하는 김에 최적화 등을 진행했다.
모달페이지를 열고 닫을 때 크롬 일시멈춤 증상이 발생하여 여러 조치를 했고, 결국엔 1페이지에 30개로 제한한 것이 유효했다.
그때마다 추가하고 수정해서 프랑켄슈타인과 같은 코드와 설명문을 한번 싹 정리했다. 그렇다고 내가 코드를 읽을 수 있는 것은 아니지만.. 그래도 짧고 간결해졌다.
NAS에 배치파일을 넣어두고 담당자 PC가 켜질 때 자동으로 서버 실행을 해두었는데, DB가 열리지 않는 증상이 발생하여 관련해서도 수정했다.
계속 메모장을 통해서 작업했었는데 VSCODE를 사용하여 이제사 코딩답게(?) 작업을 해보았다.
1. 인프라 환경: NAS DB 연결 오류 해결
2. 백엔드 로직 최적화 (app.py)
연산 속도 개선: 날짜 변환 함수를 strptime에서 파이썬 내장 함수인 date.fromisoformat으로 교체하여 처리 시간을 단축함.
코드 경량화: 그룹핑 로직을 dict.setdefault()로 압축하고, 불필요한 try-except 구문을 제거하여 서버 연산량을 줄임.
DB 쿼리 수정: 데이터 삭제 방식을 반복문을 통한 개별 삭제에서 일괄 삭제(id.in_()) 방식으로 변경하여 쿼리 실행 횟수를 줄임.
3. 프론트엔드 및 UI/UX 개선
브라우저 멈춤 해결: 모달창 생성 방식을 객체 재사용(getOrCreateInstance)으로 변경하고, 창 종료 시 포커스 자동 복귀를 차단하여 크롬 프리징 현상을 해결함.
데이터 캐싱 적용: 조회한 업체 및 이력 데이터를 브라우저 메모리에 임시 저장(Cache)하여, 재조회 시 서버 통신 없이 화면에 표출되도록 로딩 시간을 단축함.
페이지네이션 도입: 렌더링 과부하를 방지하기 위해 전체 데이터를 한 화면에 30건씩 분할 출력하도록 피복 및 린넨 페이지에 적용함.
레이아웃 고정: 화면 크기 조절 시 표의 '업데이트 날짜' 열이 잘리는 현상을 방지하기 위해 테이블 헤더 너비를 고정 픽셀(px)로 지정함.