feat: 링크와 백링크 기능 개선 및 겹침 처리 구현

 주요 기능 추가:
- 링크 생성 후 즉시 렌더링 (캐시 무효화 수정)
- 하이라이트, 링크, 백링크 겹침 시 선택 팝업 메뉴
- 백링크 오프셋 기반 정확한 렌더링
- 링크 렌더링 디버깅 로직 강화

🔧 기술적 개선:
- 캐시 무효화 함수 수정 (invalidateRelatedCache 사용)
- 텍스트 오프셋 불일치 시 자동 검색 대체
- 겹치는 요소 감지 및 상호작용 처리
- 상세한 디버깅 로그 추가

🎨 UI/UX 개선:
- 겹침 메뉴에서 각 요소별 아이콘과 색상 구분
- 클릭된 요소 시각적 표시
- 툴팁과 메뉴 외부 클릭 처리

🐛 버그 수정:
- 신규 링크 생성 후 표시되지 않는 문제 해결
- 백링크 렌더링 오프셋 정확성 개선
- 캐시 관련 JavaScript 오류 수정
This commit is contained in:
Hyungi Ahn
2025-09-02 13:42:01 +09:00
parent 222e5bcb9e
commit 397c63979d
4 changed files with 351 additions and 108 deletions

View File

@@ -127,55 +127,6 @@
<p class="text-gray-500">이 서적에 등록된 문서가 없습니다</p>
</div>
</div>
<!-- PDF 매칭 섹션 -->
<div x-show="availablePDFs.length > 0" class="bg-white rounded-lg shadow-sm border">
<div class="p-6 border-b border-gray-200">
<h2 class="text-lg font-semibold text-gray-900 flex items-center">
<i class="fas fa-file-pdf mr-2 text-red-600"></i>
사용 가능한 PDF 문서
<span class="ml-2 px-2 py-1 bg-red-100 text-red-800 text-xs rounded-full" x-text="availablePDFs.length"></span>
</h2>
<p class="text-gray-600 text-sm mt-1">이 서적과 연결할 수 있는 PDF 문서들입니다</p>
</div>
<div class="p-6">
<div class="grid gap-4">
<template x-for="pdf in availablePDFs" :key="pdf.id">
<div class="border border-gray-200 rounded-lg p-4 hover:bg-gray-50 transition-colors">
<div class="flex items-start justify-between">
<div class="flex-1">
<h3 class="text-md font-medium text-gray-900 mb-1" x-text="pdf.title"></h3>
<p class="text-gray-600 text-sm mb-2" x-text="pdf.description || '설명이 없습니다'"></p>
<div class="flex items-center text-sm text-gray-500 space-x-4">
<span class="flex items-center">
<i class="fas fa-file-pdf mr-1 text-red-500"></i>
<span x-text="pdf.original_filename"></span>
</span>
<span class="flex items-center">
<i class="fas fa-calendar mr-1"></i>
<span x-text="formatDate(pdf.created_at)"></span>
</span>
</div>
</div>
<div class="flex items-center space-x-2 ml-4">
<button @click="matchPDFToBook(pdf.id)"
class="px-3 py-1.5 bg-blue-600 hover:bg-blue-700 text-white rounded-lg transition-colors text-sm">
<i class="fas fa-link mr-1"></i>서적에 연결
</button>
<button @click="openPDF(pdf)"
class="p-2 text-gray-400 hover:text-blue-600 transition-colors"
title="PDF 열기">
<i class="fas fa-external-link-alt"></i>
</button>
</div>
</div>
</div>
</template>
</div>
</div>
</div>
</main>
<!-- JavaScript 파일들 -->