대시보드를 gateway(tkfb)에서 분리하여 독립 서비스 tkds로 이동.
- tkds/web: nginx + dashboard.html 신규 서비스 (port 30780)
- gateway: /login 복원, /dashboard → tkds 301 리다이렉트
- 전체 시스템 getLoginUrl() → tkds.technicalkorea.net/dashboard로 변경
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- equipment/maintenance 삭제, partner_work/day_labor 신규 추가
- 알림 수신자 관리 UI: 카테고리별 그룹 렌더링 (생산/안전/구매/시스템)
- tkpurchase 컨트롤러 알림 타입 변경
- notification-bell 라벨 및 notifications.html 아이콘 업데이트
- 전 서비스 cache busting 갱신
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
구 JS 캐시가 신 API 응답(객체)을 배열로 처리하여 TypeError 발생.
Array.isArray 방어 로직 추가 + 캐시 버스팅 버전 갱신(v=20260313a).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
협력업체 포탈에서 오늘 일정이 없을 때 직접 작업을 신청할 수 있는 기능.
구매팀이 승인하면 일정이 생성되고, 반려 시 재신청 가능.
- DB: status ENUM에 requested/rejected 추가, requested_by 컬럼 추가
- API: POST /schedules/request, PUT /:id/approve, PUT /:id/reject
- 포탈: 신청 폼 + 승인 대기/반려 상태 카드
- 관리자: 신청 배지 + 승인 모달 (프로젝트 배정, 작업장 보정)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 체크아웃 시 work_report 자동 생성 (checkout-with-report 통합 엔드포인트)
- 업무현황 입력 단계 제거, 작업자+시간만 입력하면 체크아웃 완료
- 협력업체 작업 이력 조회 페이지 신규 추가 (partner-history)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Phase 1: tksafety에 출입신청/체크리스트 API·웹 추가, tkfb 안전 코드 삭제
Phase 2: 사용자 관리 페이지 삭제, API 축소, 알림 수신자 tkuser 이관
Phase 3: tkuser 권한 페이지 정의 업데이트
Phase 4: 전체 34개 페이지 Tailwind CSS + tkfb-core.js 전환,
미사용 CSS 20개·인프라 JS 10개·템플릿·컴포넌트 삭제
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
쿠키를 단일 진실 출처로 만들어 서브도메인 간 로그아웃 불일치 해결:
- login.html: logout=1 파라미터 시 localStorage+쿠키 전부 정리 후 토큰 체크 스킵
- 각 시스템 logout 함수에 &logout=1 추가 (6개 파일)
- 각 시스템 initAuth에 쿠키 우선 검증 추가 (7개 파일)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
프론트엔드는 company(텍스트)를 보내지만 백엔드는 company_id(정수)만
읽고 있어 업체명 필터가 무시되던 버그 수정. findAll()에서
pc.company_name LIKE 검색 지원 추가.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- partner_schedules: work_date → start_date/end_date 기간 기반으로 변경
- project_id 컬럼 추가 (projects 테이블 연결, 선택사항)
- 프로젝트 조회 API 추가 (GET /projects/active)
- 일정 조회 시 기간 겹침 조건으로 필터링
- 체크인 시 기간 내 검증 추가
- 프론트엔드: 시작일/종료일 입력 + 프로젝트 선택 드롭다운
- 마이그레이션 SQL 포함 (scripts/migration-schedule-daterange.sql)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
프론트엔드에서 /partners/:id/accounts로 호출했지만 실제 API 라우트는
/partner-accounts/company/:id (GET), /partner-accounts (POST),
/partner-accounts/:id (PUT/DELETE). 4곳 경로 일치시킴.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
partner_companies 테이블 컬럼명은 company_name인데 JS에서 c.name으로
접근하여 undefined가 반환되던 문제. accounts/schedule/workreport 3개 파일 6곳 수정.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Phase 1: tkuser 협력업체 CRUD 이관 (읽기전용 → 전체 CRUD)
Phase 2: tkpurchase 개편 — 일용공 신청/확정, 작업일정, 업무현황, 계정관리, 협력업체 포털
Phase 3: tksafety 신규 시스템 — 방문관리 + 안전교육 신고
Phase 4: SSO 인증 보강 (partner_company_id JWT, 만료일 체크), 권한 테이블 기반 접근 제어
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
atob()가 UTF-8 멀티바이트 문자를 Latin-1로 처리하여 한글 이름이
깨지는 문제 수정. Uint8Array + TextDecoder 패턴으로 교체.
tkpurchase, tkuser nginx에 charset utf-8 추가.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
신규 독립 시스템 tkpurchase (구매/방문 관리) 구축:
- 협력업체 CRUD + 소속 작업자 관리 (마스터 데이터 소유)
- 당일 방문 등록/체크인/체크아웃 + 일괄 마감
- 업체 자동완성, CSV 내보내기, 집계 통계
- 자정 자동 체크아웃 (node-cron)
- tkuser 협력업체 읽기 전용 탭 + 권한 그리드(tkpurchase-perms) 추가
- docker-compose에 tkpurchase-api/web 서비스 추가
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>