Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions confluence-mdx/bin/reverse_sync/list_patcher.py
Original file line number Diff line number Diff line change
Expand Up @@ -117,8 +117,8 @@ def _regenerate_list_from_parent(
for child_id in parent.children:
used_ids.add(child_id)

# <ac:image> 포함 시 텍스트 전이로 폴백 (이미지 보존)
if '<ac:image' in parent.xhtml_text:
# 재생성 시 소실되는 XHTML 요소 포함 시 텍스트 전이로 폴백
if '<ac:image' in parent.xhtml_text or '<span style=' in parent.xhtml_text:
old_plain = normalize_mdx_to_plain(
change.old_block.content, change.old_block.type)
new_plain = normalize_mdx_to_plain(
Expand Down Expand Up @@ -210,8 +210,8 @@ def build_list_item_patches(
if used_ids is not None:
used_ids.add(mapping.block_id)

# <ac:image> 포함 시 텍스트 전이로 폴백 (이미지 보존)
if '<ac:image' in mapping.xhtml_text:
# 재생성 시 소실되는 XHTML 요소 포함 시 텍스트 전이로 폴백
if '<ac:image' in mapping.xhtml_text or '<span style=' in mapping.xhtml_text:
xhtml_text = transfer_text_changes(
old_plain, new_plain, mapping.xhtml_plain_text)
patches.append({
Expand Down
5 changes: 3 additions & 2 deletions confluence-mdx/bin/reverse_sync/mdx_to_xhtml_inline.py
Original file line number Diff line number Diff line change
Expand Up @@ -197,9 +197,10 @@ def _render_nested_list(items: List[dict]) -> str:
if not items:
return ''
ordered = items[0]['ordered']
tag = 'ol' if ordered else 'ul'
inner = _render_list_items(items)
return f'<{tag}>{inner}</{tag}>'
if ordered:
return f'<ol start="1">{inner}</ol>'
return f'<ul>{inner}</ul>'


def mdx_block_to_xhtml_element(block) -> str:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -246,7 +246,7 @@ def test_nested_unordered(self):
def test_nested_ordered(self):
content = "1. parent\n 1. child1\n 2. child2\n"
result = mdx_block_to_inner_xhtml(content, "list")
assert '<li><p>parent</p><ol>' in result
assert '<li><p>parent</p><ol start="1">' in result
assert '<li><p>child1</p></li>' in result
assert '<li><p>child2</p></li>' in result

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
--- a/original.mdx
+++ b/improved.mdx
@@ -142,8 +142,8 @@
@@ -143,8 +143,8 @@
</figcaption>
</figure>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ changes:
* 사용하려는 계정을 선택하고 필요시 비밀번호를 입력한 뒤, `OK` 버튼을 클릭하여 세션을 엽니다.

'
created_at: '2026-02-26T06:18:24.580949+00:00'
created_at: '2026-02-26T09:02:54.021713+00:00'
improved_mdx: tests/testcases/544112828/improved.mdx
original_mdx: tests/testcases/544112828/original.mdx
page_id: '544112828'
Original file line number Diff line number Diff line change
Expand Up @@ -841,6 +841,6 @@ blocks:
xhtml_plain_text: ''
xhtml_text: ''
xhtml_xpath: p[36]
created_at: '2026-02-26T06:18:24.580949+00:00'
created_at: '2026-02-26T09:02:54.021713+00:00'
page_id: '544112828'
source_xhtml: page.xhtml
Original file line number Diff line number Diff line change
Expand Up @@ -841,6 +841,6 @@ blocks:
xhtml_plain_text: ''
xhtml_text: ''
xhtml_xpath: p[36]
created_at: '2026-02-26T06:18:24.580949+00:00'
created_at: '2026-02-26T09:02:54.021713+00:00'
page_id: '544112828'
source_xhtml: patched.xhtml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
changes_count: 1
created_at: '2026-02-26T06:18:24.580949+00:00'
created_at: '2026-02-26T09:02:54.021713+00:00'
mdx_diff_report: "--- tests/testcases/544112828/original.mdx+++ tests/testcases/544112828/improved.mdx@@\
\ -139,8 +139,8 @@ </figcaption>\n </figure>\n \n-* 이후 해당 서버에 접속 가능한 계정이 여러개라면,\
\ Account 선택창이 열립니다.\n-* 사용하려는 계정을 선택하고 필요시 비밀번호를 입력한 뒤, `OK` 버튼을 클릭하여 세션을 엽니다.\n\
Expand All @@ -8,24 +8,10 @@ mdx_diff_report: "--- tests/testcases/544112828/original.mdx+++ tests/testcases/
center\">\n <img src=\"/user-manual/user-agent/screenshot-20240730-162532.png\"\
\ alt=\"Agent &gt; Server &gt; Open New Session\" width=\"746\" />\n"
page_id: '544112828'
status: fail
status: pass
verification:
diff_report: "--- improved.mdx+++ verify.mdx (from patched XHTML)@@ -128,7 +128,7\
\ @@ 역할이 두 개 이상이라면, Agent 로그인 후 Server 기능 사용을 위해 역할 선택을 먼저 완료해야 합니다.\n </Callout>\n\
\ \n-#### <br/>2.Agent로 서버 접속하기\n+#### <br/>2. Agent로 서버 접속하기\n \n * 접속할 서버를 우클릭\
\ 후 Open Connection with 메뉴를 선택하여, 사용하려는 터미널 툴을 선택합니다.\n \n@@ -239,7 +239,7 @@\
\ </figcaption>\n </figure>\n \n-* **Path Configuration** : Kubeconfig 파일 저장\
\ 경로를 사용자가 지정할 수 있습니다.\n+* **Path Configuration** : Kubeconfig 파일 저장 경로를 사용자가\
\ 지정할 수 있습니다.\n * 기본값은 `$HOME/.kube/querypie-kubeconfig` 입니다.\n * 경로 필드\
\ 우측 `Upload` 버튼을 누르면 로컬 파일 경로를 지정할 수 있는 팝업이 나타납니다.\n \n@@ -251,9 +251,9 @@ </figcaption>\n\
\ </figure>\n \n-* **Where** : 우측의 `\U0001F53D` 버튼을 클릭하여 원하는 폴더를 지정합니다.\n-*\
\ **Save As** : Kubeconfig 파일의 이름을 입력합니다. 변경하지 않으면 기본값으로 적용됩니다.\n-* **Command\
\ Line** : KUBECONFIG 환경 변수를 선언하기 위한 커맨드 라인을 제공합니다.\n+* **Where** : 우측의 `\U0001F53D\
` 버튼을 클릭하여 원하는 폴더를 지정합니다.\n+* **Save As** : Kubeconfig 파일의 이름을 입력합니다. 변경하지 않으면\
\ 기본값으로 적용됩니다.\n+* **Command Line** : KUBECONFIG 환경 변수를 선언하기 위한 커맨드 라인을 제공합니다.\n\
\ \n 1) KUBECONFIG 환경 변수를 최초 설정하는 경우, 명령 줄 내의 디폴트 \"`${KUBECONFIG}`\" 값을 사용 전에\
\ \"`${HOME}/.kube/config`\"로 변경해야 합니다.\n ```\n"
exact_match: false
diff_report: ''
exact_match: true
xhtml_diff_report: "--- page.xhtml\n+++ reverse-sync.patched.xhtml\n@@ -294,12 +294,12\
\ @@\n <ul>\n <li>\n <p>\n- 이후 해당 서버에 접속 가능한 계정이 여러개라면, Account\
\ 선택창이 열립니다.\n- </p>\n- </li>\n- <li>\n- <p>\n- 사용하려는 계정을 선택하고\
Expand Down
11 changes: 6 additions & 5 deletions confluence-mdx/tests/testcases/544112828/improved.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
---
title: 'User Agent'
confluenceUrl: 'https://querypie.atlassian.net/wiki/spaces/QM/pages/544112828/User+Agent'
---

import { Callout } from 'nextra/components'
Expand Down Expand Up @@ -131,7 +132,7 @@ Agent &gt; Server &gt; Select a Role
역할이 두 개 이상이라면, Agent 로그인 후 Server 기능 사용을 위해 역할 선택을 먼저 완료해야 합니다.
</Callout>

#### <br/>2.Agent로 서버 접속하기
#### <br/>2. Agent로 서버 접속하기

* 접속할 서버를 우클릭 후 Open Connection with 메뉴를 선택하여, 사용하려는 터미널 툴을 선택합니다.

Expand Down Expand Up @@ -242,7 +243,7 @@ Agent &gt; Settings &gt; Configure Kubeconfig Path
</figcaption>
</figure>

* **Path Configuration** : Kubeconfig 파일 저장 경로를 사용자가 지정할 수 있습니다.
* **Path Configuration** : Kubeconfig 파일 저장 경로를 사용자가 지정할 수 있습니다.
* 기본값은 `$HOME/.kube/querypie-kubeconfig` 입니다.
* 경로 필드 우측 `Upload` 버튼을 누르면 로컬 파일 경로를 지정할 수 있는 팝업이 나타납니다.

Expand All @@ -254,9 +255,9 @@ Agent &gt; Settings &gt; Configure Kubeconfig Path
</figcaption>
</figure>

* **Where** : 우측의 `🔽` 버튼을 클릭하여 원하는 폴더를 지정합니다.
* **Save As** : Kubeconfig 파일의 이름을 입력합니다. 변경하지 않으면 기본값으로 적용됩니다.
* **Command Line** : KUBECONFIG 환경 변수를 선언하기 위한 커맨드 라인을 제공합니다.
* **Where** : 우측의 `🔽` 버튼을 클릭하여 원하는 폴더를 지정합니다.
* **Save As** : Kubeconfig 파일의 이름을 입력합니다. 변경하지 않으면 기본값으로 적용됩니다.
* **Command Line** : KUBECONFIG 환경 변수를 선언하기 위한 커맨드 라인을 제공합니다.

1) KUBECONFIG 환경 변수를 최초 설정하는 경우, 명령 줄 내의 디폴트 "`${KUBECONFIG}`" 값을 사용 전에 "`${HOME}/.kube/config`"로 변경해야 합니다.
```
Expand Down
11 changes: 6 additions & 5 deletions confluence-mdx/tests/testcases/544112828/original.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
---
title: 'User Agent'
confluenceUrl: 'https://querypie.atlassian.net/wiki/spaces/QM/pages/544112828/User+Agent'
---

import { Callout } from 'nextra/components'
Expand Down Expand Up @@ -131,7 +132,7 @@ Agent &gt; Server &gt; Select a Role
역할이 두 개 이상이라면, Agent 로그인 후 Server 기능 사용을 위해 역할 선택을 먼저 완료해야 합니다.
</Callout>

#### <br/>2.Agent로 서버 접속하기
#### <br/>2. Agent로 서버 접속하기

* 접속할 서버를 우클릭 후 Open Connection with 메뉴를 선택하여, 사용하려는 터미널 툴을 선택합니다.

Expand Down Expand Up @@ -242,7 +243,7 @@ Agent &gt; Settings &gt; Configure Kubeconfig Path
</figcaption>
</figure>

* **Path Configuration** : Kubeconfig 파일 저장 경로를 사용자가 지정할 수 있습니다.
* **Path Configuration** : Kubeconfig 파일 저장 경로를 사용자가 지정할 수 있습니다.
* 기본값은 `$HOME/.kube/querypie-kubeconfig` 입니다.
* 경로 필드 우측 `Upload` 버튼을 누르면 로컬 파일 경로를 지정할 수 있는 팝업이 나타납니다.

Expand All @@ -254,9 +255,9 @@ Agent &gt; Settings &gt; Configure Kubeconfig Path
</figcaption>
</figure>

* **Where** : 우측의 `🔽` 버튼을 클릭하여 원하는 폴더를 지정합니다.
* **Save As** : Kubeconfig 파일의 이름을 입력합니다. 변경하지 않으면 기본값으로 적용됩니다.
* **Command Line** : KUBECONFIG 환경 변수를 선언하기 위한 커맨드 라인을 제공합니다.
* **Where** : 우측의 `🔽` 버튼을 클릭하여 원하는 폴더를 지정합니다.
* **Save As** : Kubeconfig 파일의 이름을 입력합니다. 변경하지 않으면 기본값으로 적용됩니다.
* **Command Line** : KUBECONFIG 환경 변수를 선언하기 위한 커맨드 라인을 제공합니다.

1) KUBECONFIG 환경 변수를 최초 설정하는 경우, 명령 줄 내의 디폴트 "`${KUBECONFIG}`" 값을 사용 전에 "`${HOME}/.kube/config`"로 변경해야 합니다.
```
Expand Down
59 changes: 12 additions & 47 deletions confluence-mdx/tests/testcases/544379140/expected.beautify-diff
Original file line number Diff line number Diff line change
Expand Up @@ -17,60 +17,25 @@
</p>
<ac:image ac:align="center" ac:alt="스크린샷 2025-01-16 오후 1.18.05.png" ac:custom-width="true" ac:layout="center" ac:original-height="1005" ac:original-width="1494" ac:width="612">
<ri:attachment ri:filename="스크린샷 2025-01-16 오후 1.18.05.png" ri:version-at-save="1">
@@ -753,7 +753,7 @@
</strong>
: 추출 대상 로그의 종류를 선택합니다.
</p>
- <ol start="1">
+ <ol>
<li>
<p>
Query Audit 등 추출하기 원하는 로그 타입을 선택합니다.
@@ -761,11 +761,7 @@
</li>
<li>
<p>
- 로그 종류 선택 후
- <span style="color: rgb(76,154,255);">
- See Log Template and Description
- </span>
@@ -765,7 +765,7 @@
<span style="color: rgb(76,154,255);">
See Log Template and Description
</span>
- 을 클릭하시면 각 로그의 key 등 상세 정보를 조회할 수 있습니다.
+ 로그 종류 선택 후 See Log Template and Description을 클릭하면 각 로그의 key 등 상세 정보를 조회할 수 있습니다.
+ 클릭하면 각 로그의 key 등 상세 정보를 조회할 수 있습니다.
</p>
</li>
</ol>
@@ -789,10 +785,10 @@
</strong>
: CSV 파일의 경우 32,000자를 초과하는 글자를 잘라낼지 여부를 선택할 수 있습니다.
</p>
- <ol start="1">
+ <ol>
@@ -792,7 +792,7 @@
<ol start="1">
<li>
<p>
- Trim Overflowing Text - 32,000자를 초과하는 글자를 잘라냅니다. Excel로 파일을 직접 열어야 하는 경우에 셀 당 최대 글자수 초과로 표가 깨지는 현상을 방지합니다.
+ Trim Overflowing Text - 32,000자를 초과하는 글자를 잘라냅니다. Excel로 파일을 직접 열어야 하는 경우에 셀당 최대 글자수 초과로 표가 깨지는 현상을 방지합니다.
</p>
</li>
<li>
@@ -825,7 +821,7 @@
</strong>
: 필터 표현식을 지정합니다.
</p>
- <ol start="1">
+ <ol>
<li>
<p>
조건 입력 방법 및 예시는 하단의 ‘
@@ -844,7 +840,7 @@
</strong>
: 미리보기를 생성합니다.
</p>
- <ol start="1">
+ <ol>
<li>
<p>
미리보기는 필수 단계입니다.
@@ -890,7 +886,7 @@
@@ -890,7 +890,7 @@
</strong>
</p>
<p>
Expand All @@ -79,7 +44,7 @@
<span style="color: rgb(76,154,255);">
See Log Template and Description
</span>
@@ -1035,7 +1031,7 @@
@@ -1035,7 +1035,7 @@
연산자를 활용합니다.
</p>
<p>
Expand All @@ -88,7 +53,7 @@
<code>
( )
</code>
@@ -1059,7 +1055,7 @@
@@ -1059,7 +1059,7 @@
</code>
</p>
<p>
Expand All @@ -97,7 +62,7 @@
<code>
connectionName == 'database1' || connectionName == 'database2'
</code>
@@ -1279,7 +1275,7 @@
@@ -1279,7 +1279,7 @@
</strong>
</p>
<p>
Expand All @@ -106,7 +71,7 @@
</p>
<ol start="1">
<li>
@@ -1335,7 +1331,7 @@
@@ -1335,7 +1335,7 @@
<p>
</p>
<h2>
Expand Down
26 changes: 13 additions & 13 deletions confluence-mdx/tests/testcases/544379140/expected.mdx.diff
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
--- a/original.mdx
+++ b/improved.mdx
@@ -78,10 +78,10 @@
@@ -79,10 +79,10 @@
### 로그 추출 작업 생성하기

감사 로그 추출 및 다운로드는 크게 다음과 같은 단계로 진행됩니다.
Expand All @@ -13,20 +13,20 @@

<figure data-layout="center" data-align="center">
<img src="/administrator-manual/audit/reports/audit-log-export/screenshot-20250116-131805.png" alt="Administrator &gt; Audit &gt; General &gt; Audit Log Export &gt; Create New Task" width="612" />
@@ -93,10 +93,10 @@
1. **Task Name** : 로그 추출 작업의 이름을 입력합니다.
2. **Log Type** : 추출 대상 로그의 종류를 선택합니다.
@@ -94,10 +94,10 @@
1. **Task Name**: 로그 추출 작업의 이름을 입력합니다.
2. **Log Type**: 추출 대상 로그의 종류를 선택합니다.
1. Query Audit 등 추출하기 원하는 로그 타입을 선택합니다.
- 2. 로그 종류 선택 후 See Log Template and Description을 클릭하시면 각 로그의 key 등 상세 정보를 조회할 수 있습니다.
+ 2. 로그 종류 선택 후 See Log Template and Description을 클릭하면 각 로그의 key 등 상세 정보를 조회할 수 있습니다.
3. **Download File Format** : 로그 출력 파일 형식을 지정합니다. (9.17.0 기준, 각 로그마다 다운로드 가능한 형식이 단일로 제한됩니다. 상단의 **‘추출 지원 로그 종류’** 을 참고해주시기 바랍니다.)
4. **For Text Exceeding 32,000 Characters** : CSV 파일의 경우 32,000자를 초과하는 글자를 잘라낼지 여부를 선택할 수 있습니다.
3. **Download File Format**: 로그 출력 파일 형식을 지정합니다. (9.17.0 기준, 각 로그마다 다운로드 가능한 형식이 단일로 제한됩니다. 상단의 **‘추출 지원 로그 종류’** 을 참고해주시기 바랍니다.)
4. **For Text Exceeding 32,000 Characters** : CSV 파일의 경우 32,000자를 초과하는 글자를 잘라낼지 여부를 선택할 수 있습니다.
- 1. Trim Overflowing Text - 32,000자를 초과하는 글자를 잘라냅니다. Excel로 파일을 직접 열어야 하는 경우에 셀 당 최대 글자수 초과로 표가 깨지는 현상을 방지합니다.
+ 1. Trim Overflowing Text - 32,000자를 초과하는 글자를 잘라냅니다. Excel로 파일을 직접 열어야 하는 경우에 셀당 최대 글자수 초과로 표가 깨지는 현상을 방지합니다.
2. No Action - 32,000자를 초과하는 글자를 그대로 포함시킵니다.
5. **From** : 추출 시작 날짜를 지정합니다.
6. **To** : 추출 대상 마지막 날짜를 지정합니다. 11.2.0부터 당일 날짜를 선택할 수 있도록 개선되었습니다.
@@ -115,7 +115,7 @@
5. **From** : 추출 시작 날짜를 지정합니다.
6. **To**: 추출 대상 마지막 날짜를 지정합니다. 11.2.0부터 당일 날짜를 선택할 수 있도록 개선되었습니다.
@@ -116,7 +116,7 @@
<Callout type="important">
**필터 표현식**

Expand All @@ -35,7 +35,7 @@

(2) 사용 가능한 필터 표현식은 데이터의 종류에 따라 아래와 같이 나뉩니다.

@@ -142,7 +142,7 @@
@@ -143,7 +143,7 @@

- OR 조건 : `||` 연산자를 활용합니다.

Expand All @@ -44,7 +44,7 @@


(4) 예시
@@ -151,7 +151,7 @@
@@ -152,7 +152,7 @@

- Query Audit 중 웹에디터에 수행한 쿼리 실행 로그만 추출하려는 경우 필요한 표현식 : `actionType == 'SQL_EXECUTION' && executedFrom == 'WEB_EDITOR'`

Expand All @@ -53,7 +53,7 @@

- DB Access History 중 특정 데이터베이스 2종류이면서 Replication Type이 SINGLE인 경우에 대해서만 추출하려는 경우 필요한 표현식 : `(connectionName == 'database1' || connectionName == 'database2') && replicationType == 'SINGLE'`
</Callout>
@@ -160,7 +160,7 @@
@@ -161,7 +161,7 @@
<Callout type="important">
**Query Audit의 내보내기 파일의 Privilege Type 명시 기준**

Expand All @@ -62,7 +62,7 @@
아래와 같이 작동합니다.

1. 기본 권한으로 실행되는 명령어(SET, SHOW 등)는 해당 컬럼의 값이 공백입니다.
@@ -169,7 +169,7 @@
@@ -170,7 +170,7 @@
</Callout>


Expand Down
Loading