feat: release v2.0 - visual linker, instant edit, and ux improvements

This commit is contained in:
leeyj
2026-04-17 15:21:21 +09:00
parent 331411895e
commit bff0beea96
23 changed files with 560 additions and 78 deletions
+23
View File
@@ -130,6 +130,29 @@ def get_memos():
conn.close()
return jsonify(memos)
@memo_bp.route('/api/memos/<int:memo_id>', methods=['GET'])
@login_required
def get_memo(memo_id):
conn = get_db()
c = conn.cursor()
c.execute('SELECT * FROM memos WHERE id = ?', (memo_id,))
row = c.fetchone()
if not row:
conn.close()
return jsonify({'error': 'Memo not found'}), 404
memo = dict(row)
# 태그 가져오기
c.execute('SELECT name, source FROM tags WHERE memo_id = ?', (memo_id,))
memo['tags'] = [dict(r) for r in c.fetchall()]
# 첨부파일 가져오기
c.execute('SELECT id, filename, original_name, file_type, size FROM attachments WHERE memo_id = ?', (memo_id,))
memo['attachments'] = [dict(r) for r in c.fetchall()]
conn.close()
return jsonify(memo)
@memo_bp.route('/api/stats/heatmap', methods=['GET'])
@login_required
def get_heatmap_stats():
+4 -4
View File
@@ -17,8 +17,8 @@ def parse_metadata(text, default_group=GROUP_DEFAULT):
if group_match:
group_name = group_match.group(1)
# #태그 추출 (마크다운 헤더 방지: 최소 한 개의 공백이나 시작 지점 뒤에 오는 #)
tag_matches = re.finditer(r'(?<!#)#(\w+)', text)
# #태그 추출 (마크다운 헤더 및 내부 링크[[#ID]] 방지)
tag_matches = re.finditer(r'(?<!#)(?<!\[\[)#(\w+)', text)
for match in tag_matches:
tags.append(match.group(1))
@@ -44,8 +44,8 @@ def parse_and_clean_metadata(content, ui_group=GROUP_DEFAULT, ui_tags=None):
# 3. 본문에서 기호 패턴 삭제
# $그룹 삭제
content = re.sub(r'\$\w+', '', content)
# #태그 삭제 (헤더 제외)
content = re.sub(r'(?<!#)#\w+', '', content)
# #태그 삭제 (헤더 및 내부 링크 제외)
content = re.sub(r'(?<!#)(?<!\[\[)#\w+', '', content)
content = content.strip()
# 4. 데이터 통합