- 신고 제출 후 alert → 성공 모달로 교체 (신고현황/새신고 버튼)
- cross-nav.js: tkreport 페이지 상단 크로스시스템 네비게이션 배너
- report-status.html: AI 신고 도우미 버튼 추가
- common-header.js: tkqc 헤더에 "신고" 외부 링크 추가
- 배포 스크립트/가이드 추가
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- ChromaDB → Qdrant 전환 (맥미니 기존 인스턴스, tk_qc_issues 컬렉션)
- Ollama 임베딩/텍스트 생성 URL 분리 (임베딩: 맥미니, 텍스트: GPU서버)
- MLX fallback 제거, Ollama 단일 경로로 단순화
- ds923 docker-compose에서 ai-service 제거
- gateway/system3-web nginx: ai-service 프록시를 ai.hyungi.net 경유로 변경
- resolver + 변수 기반 proxy_pass로 런타임 DNS 해석 (컨테이너 시작 실패 방지)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Chrome은 secure 쿠키 삭제 시 삭제 문자열에도 secure 플래그가 필요함.
6개 파일의 cookieRemove 함수에 '; secure; samesite=lax' 추가.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- ai-service: 챗봇 분석/요약 엔드포인트 추가 (chatbot.py, chatbot_service.py)
- tkreport: 챗봇 신고 페이지 (chat-report.html/js/css), nginx ai-api 프록시
- tkreport: 이미지 업로드 서비스 개선, M-Project 연동 신고자 정보 전달
- system1: TBM 작업보고서 UI 개선
- TKQC: 관리함/수신함 기능 개선
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Service Worker 제거: 캐시 간섭으로 인한 Chrome 인증 루프 방지
- sw.js를 자기 정리(캐시 삭제+해제) 버전으로 교체
- auth-manager.js에 SW 해제 코드 추가 (모든 페이지 즉시 적용)
- page-preloader.js SW 등록을 해제 로직으로 전환
- Gateway 로그인 리다이렉트: isSafeRedirect() 함수로 서브도메인 절대 URL 허용
- *.technicalkorea.net만 허용하여 open redirect 방지 유지
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- api.js 401 핸들러: window.location.href 리다이렉트 제거, throw Error로 변경 (auth-manager가 처리)
- auth-manager.js refreshAuth(): throw error → return null (무한 리다이렉트 방지)
- auth-manager.js setupTokenExpiryCheck(): catch→logout 대신 then으로 변경 (이중 리다이렉트 방지)
- 모든 HTML: api.js를 auth-manager.js보다 먼저 로드하도록 순서 수정
- 누락 페이지(archive, issue-view)에 api.js + auth-manager.js 추가
- 전체 HTML 캐시 버스팅 버전 v=20260308로 통일
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 현황판: AI 시맨틱 검색/Q&A 제거 (AI 어시스턴트로 이관)
- 관리함 진행중 카드: AI 해결방안 제안 버튼 추가
- aiSuggestSolutionInline() 인라인 카드용 함수 추가
- applyAiSuggestion() AI 제안 → textarea 적용 기능
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- marked.js 라이브러리 추가, AI 답변 마크다운 렌더링
- AI 답변 prose 스타일 적용 (제목, 목록, 굵은글씨, 인용)
- health 응답 파싱 개선 (이중 중첩 구조 fallback 추가)
- JS/CSS 버전 캐시 무효화 (v=20260307)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Ollama 메인 → MLX fallback 순서로 변경 (기존 MLX 우선 제거)
- OLLAMA_BASE_URL을 gpu.hyungi.net으로 변경 (Docker 네트워크 호환)
- OLLAMA_TEXT_MODEL을 qwen3:8b → qwen3.5:9b-q8_0으로 업데이트
- health 엔드포인트: model 필드 직접 반환, 이중 중첩 해소
- health 체크 타임아웃 120초 → 5초로 단축
- Ollama API 호출에 think: false 추가 (thinking 토큰 방지)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- ai-service에 MLX_BASE_URL, MLX_TEXT_MODEL 환경변수 추가
- OLLAMA_TEXT_MODEL 기본값 qwen3:8b로 변경
- MariaDB healthcheck 개선
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- System2 신고: SSO JWT 인증 전환, API base 정리
- System3 부적합: SSO 인증 매니저 통합, 권한 체계 정비
- User Management: SSO 토큰 기반 사용자 관리 API 연동
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Gateway 로그인/포탈 페이지 SSO 연동
- System1 web/fastapi-bridge API base URL 동적 설정
- SSO 토큰 기반 인증 흐름 통일
- deprecated JS 파일 삭제
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- MLX(맥미니 27B) 우선 → Ollama(조립컴 9B) fallback 구조
- pydantic-settings 기반 config 전환
- health check에 MLX 상태 추가
- 텍스트 모델 qwen3:8b → qwen3.5:9b-q8_0 변경
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- CORS origin 검증 로직 추가 (운영 도메인 + localhost + 192.168.x.x)
- Redis 기반 세션/토큰 관리 유틸 추가
- departments 테이블 JOIN 지원 (findByUsername, findById)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- ai-service: Ollama 기반 AI 서비스 (분류, 시맨틱 검색, RAG Q&A, 패턴 분석)
- AI 어시스턴트 페이지: 채팅형 Q&A, 시맨틱 검색, 패턴 분석, 분류 테스트
- 권한 시스템에 ai_assistant 페이지 등록 (기본 비활성)
- 기존 페이지에 AI 기능 통합 (대시보드, 수신함, 관리함)
- docker-compose, gateway, nginx 설정 업데이트
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- workerModel: remove()를 user_id 기반 cascading delete로 전환
- workerController: 계정 생성/해제를 workers.user_id 연결 방식으로 변경
- userController: JOIN 방향 전환 (u.worker_id→w.worker_id 에서 w.user_id→u.user_id)
- authController, systemController, authRoutes: 모든 CRUD에서 worker_id 참조 제거
- DB: UNIQUE KEY 5개 교체, FK 7개 삭제, daily_worker_summary user_id 추가
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- tbmTransferModel: leader_id → leader_user_id 컬럼명 수정, department 필터 제거
- daily-work-report: TBM 출근유형(정상/연장/조퇴)에 따른 시간 자동 계산
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- TBM 팀원 추가 시 중복 배정 검증 및 409 에러 처리 (tbmController, tbmModel, tbm-create.js, tbm.js, tbm/api.js)
- tkuser/tkfb 설비 배치도 좌표계를 좌상단 기준으로 통일 (CSS left/top 방식)
- tkuser 설비 배치도에 드래그 이동, 코너 리사이즈, 배치 버튼 추가
- 대분류 지도 영역 수정 버튼 추가 (workplace-layout-map.js, tkuser-layout-map.js)
- tkfb workplace-status 캔버스 maxWidth 800 통일
- zone-detail.css object-fit:contain 제거 → height:auto로 마커 위치 정확도 개선
- imageUploadService 업로드 경로 Docker 볼륨 마운트 경로로 수정
- repair-management 카테고리 필터 nonconformity → facility 수정
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 모바일 전용 페이지 신규: /m/dashboard, /m/inbox, /m/management
- 공통 모바일 CSS/JS: m-common.css, m-common.js (바텀시트, 바텀네비, 터치 최적화)
- nginx.conf에 /m/ location 블록 추가
- 데스크탑 HTML에 모바일 뷰포트 리다이렉트 추가 (<=768px)
- 데스크탑 관리함 카드 헤더 반응형 레이아웃 (flex-wrap, 1280px 브레이크포인트)
- collapse-content overflow:hidden → overflow:visible 수정 (내용 잘림 해결)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
sso_users.user_id를 단일 식별자로 통합. JWT에서 worker_id 제거,
department_id/is_production 추가. 백엔드 15개 모델, 11개 컨트롤러,
4개 서비스, 7개 라우트, 프론트엔드 32+ JS/11+ HTML 변환.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
tkuser에서 프로젝트/사용자를 통합 관리하므로 TKQC에서 불필요한 기능 제거:
- 프로젝트 관리: POST/PUT/DELETE API 및 페이지 삭제 (GET 유지)
- 사용자 관리: CRUD API 및 admin.html 삭제 (login/me/change-password 유지)
- 일일 공수: daily_work.py, daily-work.html 삭제, reports.py에서 DailyWork 참조 제거
- 디버그 페이지 4개 삭제 (check-projects, sync-projects, test_api, mobile-fix)
- 네비게이션/권한/키보드 단축키에서 제거된 메뉴 정리
- tkuser permissionModel.js에서 daily_work, projects_manage 키 제거
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- config.js loginPage를 /index.html에서 /login(SSO)으로 변경
- navigation.js, load-navbar.js에 redirect 파라미터 추가
- 8개 JS 파일의 하드코딩된 '/login' → window.getLoginUrl() 전환
- 로그아웃 시 clearSSOAuth() 호출 추가 (SSO 쿠키 삭제)
- api-base.js v=2→v=3 (SW 캐시 해제 코드 통합)
- TBM 모듈 버전 쿼리스트링 통일 (tbm.html, tbm-mobile.html)
- dashboard.html SW 캐시 해제 인라인 코드 제거 (api-base.js에서 처리)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 공통 유틸리티 추출 (common/utils.js, common/base-state.js)
- TBM 모바일 인라인 JS/CSS 외부 파일로 분리 (tbm-mobile.js, tbm-mobile.css)
- 미사용 코드 삭제 (index.js, work-report-*.js 등 5개 파일)
- TBM/작업보고 state.js, utils.js를 공통 모듈 기반으로 전환
- 작업보고서 SSO 인증 호환 수정 (token/user 함수)
- tbmModel.js: incomplete-reports 쿼리에서 users→sso_users 조인 수정, leader_name 조인 추가
- docker-compose.yml: system1-web 볼륨 마운트 추가
- 모바일 인계(handover) 기능 추가
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- TBM 관리 탭의 비관리자 클라이언트 필터링 제거 (모바일과 동일하게 전체 표시)
- tbm.js의 state.js 프록시 변수 중복 선언 제거 (mapRegions, mapCanvas 등)
- 누락된 common/utils.js, common/base-state.js 추가
- 캐시 버스팅을 위한 버전 쿼리 스트링 업데이트
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- sw.js: POST 요청 캐시 시도 차단 (Cache API는 GET만 지원)
- sw.js: staleWhileRevalidate에서 response.clone() 타이밍 수정
(body 소비 전에 clone하도록 변경)
- sw.js: 캐시 버전 v1.0.3으로 업데이트하여 구버전 캐시 강제 갱신
- auth-manager.js: 쿠키/localStorage에 "undefined" 문자열 저장된 경우
JSON.parse 오류 방지
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- reports.py: role==admin 하드코딩 → check_page_access로 변경하여
reports/reports_daily 페이지 권한 보유자도 미리보기/엑셀 내보내기 가능
- page_permissions.py: 동기 헬퍼 함수 check_page_access() 추가
(기존 async API 엔드포인트를 await 없이 호출하는 버그 해결)
- reports-daily.html: 에러 핸들링 강화 (401/403 구분), blob download
revokeObjectURL 지연 처리 (Edge 호환)
- nginx.conf: proxy_read_timeout/proxy_buffering off 추가
- reports.py: JSONResponse+jsonable_encoder로 명시적 직렬화,
Content-Disposition에 ASCII 폴백 파일명 추가
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
11개 모델 파일의 171개 콜백 메서드를 직접 return/throw 패턴으로 변환.
8개 컨트롤러에서 new Promise 래퍼와 중첩 콜백 제거, console.error→logger.error 교체.
미사용 pageAccessModel.js 삭제. 전체 -3,600줄 감소.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 모델: 콜백 래퍼 제거, 결과 직접 반환 (async/await 네이티브)
- 컨트롤러: 중첩 콜백 → 플랫한 async/await 구조
- console.error → logger.error 전환
- 코드 566줄 → 247줄 (모델) + 컨트롤러 대폭 간소화
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 인증 없는 임시 엔드포인트 삭제 (index.js, healthRoutes.js, publicPaths)
- skipAuth 우회 라우트 삭제 (workAnalysis.js)
- 하드코딩 유저 백도어 삭제 (routes/auth.js)
- 안전체크 CRUD에 admin 권한 추가 (tbmRoutes.js)
- deprecated shim 3개 삭제 + 8개 소비 파일 import 정리 (auth.js 직접 참조)
- 미사용 pageAccessController, db.js, common/security.js 삭제
- escapeHtml() 5곳 로컬 중복 제거 → api-base.js 전역 사용
- userPageAccess_v2_v2 캐시 키 버그 수정 (app-init.js)
- system3 .bak 파일 삭제, PROGRESS.md 업데이트
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
TBM 시스템:
- 4단계 워크플로우 (draft→세부편집→완료→작업보고)
- 모바일 전용 TBM 페이지 (tbm-mobile.html) + 3단계 생성 위자드
- 작업자 작업 분할 (work_hours + split_seq)
- 작업자 이동 보내기/빼오기 (tbm_transfers 테이블)
- 생성 시 중복 배정 방지 (당일 배정 현황 조회)
- 데스크탑 TBM 페이지 세부편집 기능 추가
작업보고서:
- 모바일 전용 작업보고서 페이지 (report-create-mobile.html)
- TBM에서 사전 등록된 work_hours 자동 반영
권한 시스템:
- tkuser user_page_permissions 테이블과 system1 페이지 접근 연동
- pageAccessRoutes를 userRoutes보다 먼저 등록 (라우트 우선순위 수정)
- TKUSER_DEFAULT_ACCESS 폴백 추가 (개인→부서→기본값 3단계)
- 권한 캐시키 갱신 (userPageAccess_v2)
기타:
- app-init.js 캐시 버스팅 (v=5)
- iOS Safari touch-action: manipulation 적용
- KST 타임존 날짜 버그 수정 (toISOString UTC 이슈)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- tkuser: 권한 관리를 별도 탭으로 분리, 부서 클릭 시 소속 인원 목록 표시
- system1: 모바일 UI 개선, nginx 권한 보정, 신고 카테고리 타입 마이그레이션
- system2: 신고 상세/보고서 개선, 내 보고서 페이지 추가
- system3: 이슈 뷰/수신함/관리함 개선
- gateway: 포털 라우팅 수정
- user-management API: 부서별 권한 벌크 설정 추가
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
tkqc 5개 페이지 인라인 JS/CSS를 외부 파일로 추출 (HTML 82% 감소)
tkuser index.html을 CSS 1개 + JS 10개 모듈로 분리 (3283→1155줄)
- 공통 유틸 추출: issue-helpers, photo-modal, toast
- 공통 CSS 확장: tkqc-common.css (모바일 반응형 포함)
- 모바일 하단 네비게이션 추가 (mobile-bottom-nav.js)
- nginx: JS/CSS 1시간 캐싱 + gzip 압축 활성화
- Tailwind CDN preload, 캐시버스터 통일 (?v=20260213)
- 카메라 capture="environment" 추가
- tkuser Dockerfile에 static/ 디렉토리 복사 추가
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- UI: tkuser 스타일로 통일 (dark slate 헤더, flat 배경, gradient/glass 제거)
- tkqc-common.css 공통 스타일시트 신규 생성
- 의견 제시 API 별도 엔드포인트 추가 (모든 사용자 접근 가능)
- 일일 공수 기능 완전 제거 (라우터, 모델, 스키마, DB 테이블 DROP)
- 프로젝트 관리/사용자 관리 메뉴 숨김 (통합관리 페이지로 이관)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- tkuser 서비스 신규 추가 (API + Web)
- 사용자/권한/프로젝트/부서/작업자/작업장/설비/작업/휴가 통합 관리
- 작업장 탭: 공장→작업장 드릴다운 네비게이션 + 구역지도 클릭 연동
- 작업 탭: 공정(work_types)→작업(tasks) 계층 관리
- 휴가 탭: 유형 관리 + 연차 배정(근로기준법 자동계산)
- 전 시스템 SSO 쿠키 인증으로 통합 (.technicalkorea.net 공유)
- System 2: 작업 이슈 리포트 기능 강화
- System 3: tkuser API 연동, 페이지 권한 체계 적용
- docker-compose에 tkuser-api, tkuser-web 서비스 추가
- ARCHITECTURE.md, DEPLOYMENT.md 문서 작성
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Path-based 라우팅을 서브도메인 기반으로 전환
(tkfb/tkreport/tkqc.technicalkorea.net)
- 3개 시스템 프론트엔드에 SSO 쿠키 인증 통합
(domain=.technicalkorea.net, localStorage 폴백)
- Gateway: 포털+로그인+System1 프록시, 쿠키 SSO 설정
- System 1: 토큰키 통일, nginx.conf 생성, 신고페이지 리다이렉트
- System 2: api-base.js/app-init.js 생성, getSSOToken() 통합
- System 3: TokenManager 쿠키 지원, 중앙 로그인 리다이렉트
- docker-compose.yml에 cloudflared 서비스 추가
- DEPLOY-GUIDE.md 배포 가이드 작성
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>