diff --git a/confluence-mdx/bin/converter/core.py b/confluence-mdx/bin/converter/core.py
index f8b177acc..c50448e85 100644
--- a/confluence-mdx/bin/converter/core.py
+++ b/confluence-mdx/bin/converter/core.py
@@ -930,7 +930,7 @@ def convert_li(self, node, list_type, counter=None):
logging.debug(f'li_itself={li_itself}')
logging.debug(f'child_markdown={child_markdown}')
- itself = ' '.join(li_itself)
+ itself = ''.join(li_itself)
self.markdown_lines.append(f'{prefix}{itself}\n')
for line in child_markdown:
self.markdown_lines.append(prefix_for_children + line)
diff --git a/confluence-mdx/docs/fc-whitespace-preservation.md b/confluence-mdx/docs/fc-whitespace-preservation.md
new file mode 100644
index 000000000..e8e532cb9
--- /dev/null
+++ b/confluence-mdx/docs/fc-whitespace-preservation.md
@@ -0,0 +1,128 @@
+# Forward Converter 공백 보존 원칙
+
+## 핵심 원칙
+
+Forward Converter(FC)는 XHTML 원본의 공백, 단락 구조를 **있는 그대로** MDX로 변환해야 한다.
+FC 출력의 형태는 XHTML 원문이 결정한다. XHTML 원문과 무관하게 "이렇게 생겨야 한다"는 고정된 출력 형태는 없다.
+
+### 하지 말아야 할 것
+
+- XHTML에 없는 공백을 추가하지 않는다.
+- XHTML에 있는 공백을 임의로 제거하지 않는다.
+- 빈 `
` 요소의 콘텐츠를 필터링하지 않는다 (XHTML에 존재하는 구조이다).
+- FC 출력 형태를 미리 정해놓고 그에 맞추지 않는다.
+
+### 해야 할 것
+
+- XHTML 텍스트 노드의 공백을 그대로 MDX로 옮긴다.
+- `
` 요소의 콘텐츠(빈 단락 포함)를 보존한다.
+- FC가 삽입하는 구조적 마커(` ` 등)와 XHTML 원본 공백을 구분한다.
+
+## 구체적 사례: `convert_li`의 `join`
+
+### 문제 상황
+
+`convert_li()`에서 `
` 내 여러 `
` 요소를 MDX 한 줄로 합칠 때,
+`
` 경계를 ` `로 표현하고 `' '.join(li_itself)`로 연결했다.
+
+이 `' '.join()`은 **모든 항목 사이에 공백 하나를 삽입**하는데,
+이 공백은 XHTML 원문에 존재하지 않는다.
+
+### XHTML → FC 출력 추적 예시
+
+#### 예시 1: ` ` 뒤 빈 `
` | `'Text B'` |
+
+**`' '.join()` (잘못됨):** `'Text A Text B'` — 경계 공백은 XHTML에 없음
+
+**`''.join()` (올바름):** `'Text A Text B'` — ` `가 줄바꿈 역할, 추가 공백 불필요
+
+## 수정 방법
+
+```python
+# 변경 전 (XHTML에 없는 공백 삽입)
+itself = ' '.join(li_itself)
+
+# 변경 후 (XHTML 원본 공백만 보존)
+itself = ''.join(li_itself)
+```
+
+한 줄 변경이다. 각 `
`의 SingleLineParser 출력에 이미 XHTML 원문의 공백이
+보존되어 있으므로, join 시 추가 공백을 넣지 않으면 된다.
+
+## 일반 원칙: FC 버그 수정 시 판단 기준
+
+FC 출력이 "올바른지" 판단할 때:
+
+1. **XHTML 원문을 확인**한다 — FC 출력을 보기 전에, 입력인 XHTML이 어떤 구조인지 파악
+2. **XHTML의 공백/구조를 그대로 MDX에 반영하는지** 확인한다
+3. FC가 삽입하는 구조적 요소(` ` 구분자 등)는 XHTML 원본 공백과 **분리**해서 처리한다
+4. "출력이 이렇게 생겨야 한다"는 고정관념 없이, XHTML 원문에서 출력을 **도출**한다
diff --git a/confluence-mdx/tests/testcases/1454342158/expected.html b/confluence-mdx/tests/testcases/1454342158/expected.html
index e844db534..f003caf3d 100644
--- a/confluence-mdx/tests/testcases/1454342158/expected.html
+++ b/confluence-mdx/tests/testcases/1454342158/expected.html
@@ -71,7 +71,7 @@
LDAP 연동
Server URL : ldap://ldap.example.com:389 과 같은 형식으로 LDAP server의 주소를 입력합니다. LDAPS의 경우 scheme을 ldaps:// 로 입력합니다.
-
BindDN : LDAP 서버에 접속(바인드)할 때 사용할 서비스 계정의 고유 이름(Distinguished Name, DN)을 입력합니다. 이 계정은 최소한 사용자 정보를 검색(Read)할 수 있는 권한이 필요합니다. 예시: cn=admin,ou=Services,dc=example,dc=com
+
BindDN : LDAP 서버에 접속(바인드)할 때 사용할 서비스 계정의 고유 이름(Distinguished Name, DN)을 입력합니다. 이 계정은 최소한 사용자 정보를 검색(Read)할 수 있는 권한이 필요합니다. 예시: cn=admin,ou=Services,dc=example,dc=com
Bind Password : BindDN의 암호를 입력합니다.
@@ -552,11 +552,11 @@
QueryPie에서 Okta 연동 및 동기화 설정
Additional Settings
-
Make New Users Inactive by Default: 동기화 시 새로운 사용자를 비활성화 상태로 추가할지 여부를 선택합니다. 동기화할 사용자 수가 많거나, 사용자의 인증을 통한 QueryPie 접근을 개별적으로 관리하고자 하는 경우 해당 옵션을 활성화하시기 바랍니다.
+
Make New Users Inactive by Default: 동기화 시 새로운 사용자를 비활성화 상태로 추가할지 여부를 선택합니다. 동기화할 사용자 수가 많거나, 사용자의 인증을 통한 QueryPie 접근을 개별적으로 관리하고자 하는 경우 해당 옵션을 활성화하시기 바랍니다.
-
Use an Attribute for Privilege Revoke : 동기화 시 특정 Attribute에 따라 Privilege를 회수할지 여부를 선택합니다. 특정 Attribute의 변경에 의해 자동으로 DAC Privilege를 회수하고자 하는 경우 이 옵션을 활성화하세요. Attribute 입력 필드에 활성화 변경을 감지하려는 Attribute 이름을 입력합니다.
+
Use an Attribute for Privilege Revoke : 동기화 시 특정 Attribute에 따라 Privilege를 회수할지 여부를 선택합니다. 특정 Attribute의 변경에 의해 자동으로 DAC Privilege를 회수하고자 하는 경우 이 옵션을 활성화하세요. Attribute 입력 필드에 활성화 변경을 감지하려는 Attribute 이름을 입력합니다.
-
Enable Attribute Synchronization : IdP의 사용자 속성과 QueryPie 사용자 속성을 매핑하여 동기화할지 여부를 선택합니다. IdP에서 관리 중인 사용자 속성을 QueryPie 내 Attribute와 자동으로 연동하고자 하는 경우, 해당 옵션을 활성화하시기 바랍니다. 옵션 활성화 시, 하단에 Attribute Mapping UI가 표시되며 매핑 작업을 통해 연동할 IdP Attribute와 QueryPie Attribute를 지정할 수 있습니다. 단, 해당 기능은 Profile Editor(Admin> General > User Management > Profile Editor)에서 Source Priority가 Inherit from profile source로 설정된 Attribute에 한해 적용됩니다.
+
Enable Attribute Synchronization : IdP의 사용자 속성과 QueryPie 사용자 속성을 매핑하여 동기화할지 여부를 선택합니다. IdP에서 관리 중인 사용자 속성을 QueryPie 내 Attribute와 자동으로 연동하고자 하는 경우, 해당 옵션을 활성화하시기 바랍니다. 옵션 활성화 시, 하단에 Attribute Mapping UI가 표시되며 매핑 작업을 통해 연동할 IdP Attribute와 QueryPie Attribute를 지정할 수 있습니다. 단, 해당 기능은 Profile Editor(Admin> General > User Management > Profile Editor)에서 Source Priority가 Inherit from profile source로 설정된 Attribute에 한해 적용됩니다.
Allowed User Deletion Rate Threshold :
@@ -663,11 +663,11 @@
One Login 연동
Additional Settings
-
Make New Users Inactive by Default: 동기화 시 새로운 사용자를 비활성화 상태로 추가할지 여부를 선택합니다. 동기화할 사용자 수가 많거나, 사용자의 인증을 통한 QueryPie 접근을 개별적으로 관리하고자 하는 경우 해당 옵션을 활성화하시기 바랍니다.
+
Make New Users Inactive by Default: 동기화 시 새로운 사용자를 비활성화 상태로 추가할지 여부를 선택합니다. 동기화할 사용자 수가 많거나, 사용자의 인증을 통한 QueryPie 접근을 개별적으로 관리하고자 하는 경우 해당 옵션을 활성화하시기 바랍니다.
-
Use an Attribute for Privilege Revoke : 동기화 시 특정 Attribute에 따라 Privilege를 회수할지 여부를 선택합니다. 특정 Attribute의 변경에 의해 자동으로 DAC Privilege를 회수하고자 하는 경우 이 옵션을 활성화하세요. Attribute 입력 필드에 활성화 변경을 감지하려는 Attribute 이름을 입력합니다.
+
Use an Attribute for Privilege Revoke : 동기화 시 특정 Attribute에 따라 Privilege를 회수할지 여부를 선택합니다. 특정 Attribute의 변경에 의해 자동으로 DAC Privilege를 회수하고자 하는 경우 이 옵션을 활성화하세요. Attribute 입력 필드에 활성화 변경을 감지하려는 Attribute 이름을 입력합니다.
-
Enable Attribute Synchronization : IdP의 사용자 속성과 QueryPie 사용자 속성을 매핑하여 동기화할지 여부를 선택합니다. IdP에서 관리 중인 사용자 속성을 QueryPie 내 Attribute와 자동으로 연동하고자 하는 경우, 해당 옵션을 활성화하시기 바랍니다. 옵션 활성화 시, 하단에 Attribute Mapping UI가 표시되며 매핑 작업을 통해 연동할 IdP Attribute와 QueryPie Attribute를 지정할 수 있습니다. 단, 해당 기능은 Profile Editor(Admin> General > User Management > Profile Editor)에서 Source Priority가 Inherit from profile source로 설정된 Attribute에 한해 적용됩니다.
+
Enable Attribute Synchronization : IdP의 사용자 속성과 QueryPie 사용자 속성을 매핑하여 동기화할지 여부를 선택합니다. IdP에서 관리 중인 사용자 속성을 QueryPie 내 Attribute와 자동으로 연동하고자 하는 경우, 해당 옵션을 활성화하시기 바랍니다. 옵션 활성화 시, 하단에 Attribute Mapping UI가 표시되며 매핑 작업을 통해 연동할 IdP Attribute와 QueryPie Attribute를 지정할 수 있습니다. 단, 해당 기능은 Profile Editor(Admin> General > User Management > Profile Editor)에서 Source Priority가 Inherit from profile source로 설정된 Attribute에 한해 적용됩니다.
Allowed User Deletion Rate Threshold :
@@ -730,11 +730,11 @@
Custom Identity Provider
Additional Settings
-
Make New Users Inactive by Default: 동기화 시 새로운 사용자를 비활성화 상태로 추가할지 여부를 선택합니다. 동기화할 사용자 수가 많거나, 사용자의 인증을 통한 QueryPie 접근을 개별적으로 관리하고자 하는 경우 해당 옵션을 활성화하시기 바랍니다.
+
Make New Users Inactive by Default: 동기화 시 새로운 사용자를 비활성화 상태로 추가할지 여부를 선택합니다. 동기화할 사용자 수가 많거나, 사용자의 인증을 통한 QueryPie 접근을 개별적으로 관리하고자 하는 경우 해당 옵션을 활성화하시기 바랍니다.
-
Use an Attribute for Privilege Revoke : 동기화 시 특정 Attribute에 따라 Privilege를 회수할지 여부를 선택합니다. 특정 Attribute의 변경에 의해 자동으로 DAC Privilege를 회수하고자 하는 경우 이 옵션을 활성화하세요. Attribute 입력 필드에 활성화 변경을 감지하려는 Attribute 이름을 입력합니다.
+
Use an Attribute for Privilege Revoke : 동기화 시 특정 Attribute에 따라 Privilege를 회수할지 여부를 선택합니다. 특정 Attribute의 변경에 의해 자동으로 DAC Privilege를 회수하고자 하는 경우 이 옵션을 활성화하세요. Attribute 입력 필드에 활성화 변경을 감지하려는 Attribute 이름을 입력합니다.
-
Enable Attribute Synchronization : IdP의 사용자 속성과 QueryPie 사용자 속성을 매핑하여 동기화할지 여부를 선택합니다. IdP에서 관리 중인 사용자 속성을 QueryPie 내 Attribute와 자동으로 연동하고자 하는 경우, 해당 옵션을 활성화하시기 바랍니다. 옵션 활성화 시, 하단에 Attribute Mapping UI가 표시되며 매핑 작업을 통해 연동할 IdP Attribute와 QueryPie Attribute를 지정할 수 있습니다. 단, 해당 기능은 Profile Editor(Admin> General > User Management > Profile Editor)에서 Source Priority가 Inherit from profile source로 설정된 Attribute에 한해 적용됩니다.
+
Enable Attribute Synchronization : IdP의 사용자 속성과 QueryPie 사용자 속성을 매핑하여 동기화할지 여부를 선택합니다. IdP에서 관리 중인 사용자 속성을 QueryPie 내 Attribute와 자동으로 연동하고자 하는 경우, 해당 옵션을 활성화하시기 바랍니다. 옵션 활성화 시, 하단에 Attribute Mapping UI가 표시되며 매핑 작업을 통해 연동할 IdP Attribute와 QueryPie Attribute를 지정할 수 있습니다. 단, 해당 기능은 Profile Editor(Admin> General > User Management > Profile Editor)에서 Source Priority가 Inherit from profile source로 설정된 Attribute에 한해 적용됩니다.
Allowed User Deletion Rate Threshold :
diff --git a/confluence-mdx/tests/testcases/1454342158/expected.mdx b/confluence-mdx/tests/testcases/1454342158/expected.mdx
index 4bb2a7ac6..74a88a0aa 100644
--- a/confluence-mdx/tests/testcases/1454342158/expected.mdx
+++ b/confluence-mdx/tests/testcases/1454342158/expected.mdx
@@ -62,7 +62,7 @@ IdP를 변경하거나 삭제를 해야하는 경우 Customer Portal 을 통해
* **Name** : 식별에 용이하도록 적합한 IdP의 이름을 입력합니다.
* **Type**: LDAP를 선택합니다.
* **Server URL** : `ldap://ldap.example.com:389` 과 같은 형식으로 LDAP server의 주소를 입력합니다. LDAPS의 경우 scheme을 ldaps:// 로 입력합니다.
-* **BindDN** : LDAP 서버에 접속(바인드)할 때 사용할 서비스 계정의 고유 이름(Distinguished Name, DN)을 입력합니다. 이 계정은 최소한 사용자 정보를 검색(Read)할 수 있는 권한이 필요합니다. 예시: cn=admin,ou=Services,dc=example,dc=com
+* **BindDN** : LDAP 서버에 접속(바인드)할 때 사용할 서비스 계정의 고유 이름(Distinguished Name, DN)을 입력합니다. 이 계정은 최소한 사용자 정보를 검색(Read)할 수 있는 권한이 필요합니다. 예시: cn=admin,ou=Services,dc=example,dc=com
* **Bind Password** : BindDN의 암호를 입력합니다.
@@ -424,9 +424,9 @@ Okta 상세설정 (2)
* **Application ID**: Okta 내에서 2개 이상의 QueryPie App 을 사용할 경우 입력합니다.
* 주기적인 동기화 기능을 사용하고자 할 경우**Replication Frequency** 항목에서 Scheduling 을 설정합니다.
* **Additional Settings**
- * **Make New Users Inactive by Default**: 동기화 시 새로운 사용자를 비활성화 상태로 추가할지 여부를 선택합니다. 동기화할 사용자 수가 많거나, 사용자의 인증을 통한 QueryPie 접근을 개별적으로 관리하고자 하는 경우 해당 옵션을 활성화하시기 바랍니다.
- * **Use an Attribute for Privilege Revoke** : 동기화 시 특정 Attribute에 따라 Privilege를 회수할지 여부를 선택합니다. 특정 Attribute의 변경에 의해 자동으로 DAC Privilege를 회수하고자 하는 경우 이 옵션을 활성화하세요. Attribute 입력 필드에 활성화 변경을 감지하려는 Attribute 이름을 입력합니다.
- * **Enable Attribute Synchronization** : IdP의 사용자 속성과 QueryPie 사용자 속성을 매핑하여 동기화할지 여부를 선택합니다. IdP에서 관리 중인 사용자 속성을 QueryPie 내 Attribute와 자동으로 연동하고자 하는 경우, 해당 옵션을 활성화하시기 바랍니다. 옵션 활성화 시, 하단에 Attribute Mapping UI가 표시되며 매핑 작업을 통해 연동할 IdP Attribute와 QueryPie Attribute를 지정할 수 있습니다. 단, 해당 기능은 Profile Editor(Admin> General > User Management > Profile Editor)에서 Source Priority가 Inherit from profile source로 설정된 Attribute에 한해 적용됩니다.
+ * **Make New Users Inactive by Default**: 동기화 시 새로운 사용자를 비활성화 상태로 추가할지 여부를 선택합니다. 동기화할 사용자 수가 많거나, 사용자의 인증을 통한 QueryPie 접근을 개별적으로 관리하고자 하는 경우 해당 옵션을 활성화하시기 바랍니다.
+ * **Use an Attribute for Privilege Revoke** : 동기화 시 특정 Attribute에 따라 Privilege를 회수할지 여부를 선택합니다. 특정 Attribute의 변경에 의해 자동으로 DAC Privilege를 회수하고자 하는 경우 이 옵션을 활성화하세요. Attribute 입력 필드에 활성화 변경을 감지하려는 Attribute 이름을 입력합니다.
+ * **Enable Attribute Synchronization** : IdP의 사용자 속성과 QueryPie 사용자 속성을 매핑하여 동기화할지 여부를 선택합니다. IdP에서 관리 중인 사용자 속성을 QueryPie 내 Attribute와 자동으로 연동하고자 하는 경우, 해당 옵션을 활성화하시기 바랍니다. 옵션 활성화 시, 하단에 Attribute Mapping UI가 표시되며 매핑 작업을 통해 연동할 IdP Attribute와 QueryPie Attribute를 지정할 수 있습니다. 단, 해당 기능은 Profile Editor(Admin> General > User Management > Profile Editor)에서 Source Priority가 Inherit from profile source로 설정된 Attribute에 한해 적용됩니다.
* **Allowed User Deletion Rate Threshold :**
* 동기화시 기존 유저가 이 값의 비율 이상으로 삭제되었을 경우에는 동기화를 실패하도록 하는 기능입니다.
* 0.0 ~ 1.0 사이의 값을 입력합니다. (기본값은 0.1)
@@ -503,9 +503,9 @@ One Login 상세설정 (2)
* **Additional Settings**
- * **Make New Users Inactive by Default**: 동기화 시 새로운 사용자를 비활성화 상태로 추가할지 여부를 선택합니다. 동기화할 사용자 수가 많거나, 사용자의 인증을 통한 QueryPie 접근을 개별적으로 관리하고자 하는 경우 해당 옵션을 활성화하시기 바랍니다.
- * **Use an Attribute for Privilege Revoke** : 동기화 시 특정 Attribute에 따라 Privilege를 회수할지 여부를 선택합니다. 특정 Attribute의 변경에 의해 자동으로 DAC Privilege를 회수하고자 하는 경우 이 옵션을 활성화하세요. Attribute 입력 필드에 활성화 변경을 감지하려는 Attribute 이름을 입력합니다.
- * **Enable Attribute Synchronization** : IdP의 사용자 속성과 QueryPie 사용자 속성을 매핑하여 동기화할지 여부를 선택합니다. IdP에서 관리 중인 사용자 속성을 QueryPie 내 Attribute와 자동으로 연동하고자 하는 경우, 해당 옵션을 활성화하시기 바랍니다. 옵션 활성화 시, 하단에 Attribute Mapping UI가 표시되며 매핑 작업을 통해 연동할 IdP Attribute와 QueryPie Attribute를 지정할 수 있습니다. 단, 해당 기능은 Profile Editor(Admin> General > User Management > Profile Editor)에서 Source Priority가 Inherit from profile source로 설정된 Attribute에 한해 적용됩니다.
+ * **Make New Users Inactive by Default**: 동기화 시 새로운 사용자를 비활성화 상태로 추가할지 여부를 선택합니다. 동기화할 사용자 수가 많거나, 사용자의 인증을 통한 QueryPie 접근을 개별적으로 관리하고자 하는 경우 해당 옵션을 활성화하시기 바랍니다.
+ * **Use an Attribute for Privilege Revoke** : 동기화 시 특정 Attribute에 따라 Privilege를 회수할지 여부를 선택합니다. 특정 Attribute의 변경에 의해 자동으로 DAC Privilege를 회수하고자 하는 경우 이 옵션을 활성화하세요. Attribute 입력 필드에 활성화 변경을 감지하려는 Attribute 이름을 입력합니다.
+ * **Enable Attribute Synchronization** : IdP의 사용자 속성과 QueryPie 사용자 속성을 매핑하여 동기화할지 여부를 선택합니다. IdP에서 관리 중인 사용자 속성을 QueryPie 내 Attribute와 자동으로 연동하고자 하는 경우, 해당 옵션을 활성화하시기 바랍니다. 옵션 활성화 시, 하단에 Attribute Mapping UI가 표시되며 매핑 작업을 통해 연동할 IdP Attribute와 QueryPie Attribute를 지정할 수 있습니다. 단, 해당 기능은 Profile Editor(Admin> General > User Management > Profile Editor)에서 Source Priority가 Inherit from profile source로 설정된 Attribute에 한해 적용됩니다.
* **Allowed User Deletion Rate Threshold :**
* 동기화시 기존 유저가 이 값의 비율 이상으로 삭제되었을 경우에는 동기화를 실패하도록 하는 기능입니다.
* 0.0 ~ 1.0 사이의 값을 입력합니다. (기본값은 0.1)
@@ -540,9 +540,9 @@ Custom Identity Provider는 인증 API서버를 사용하는 특수한 경우에
* **Additional Settings**
- * **Make New Users Inactive by Default**: 동기화 시 새로운 사용자를 비활성화 상태로 추가할지 여부를 선택합니다. 동기화할 사용자 수가 많거나, 사용자의 인증을 통한 QueryPie 접근을 개별적으로 관리하고자 하는 경우 해당 옵션을 활성화하시기 바랍니다.
- * **Use an Attribute for Privilege Revoke** : 동기화 시 특정 Attribute에 따라 Privilege를 회수할지 여부를 선택합니다. 특정 Attribute의 변경에 의해 자동으로 DAC Privilege를 회수하고자 하는 경우 이 옵션을 활성화하세요. Attribute 입력 필드에 활성화 변경을 감지하려는 Attribute 이름을 입력합니다.
- * **Enable Attribute Synchronization** : IdP의 사용자 속성과 QueryPie 사용자 속성을 매핑하여 동기화할지 여부를 선택합니다. IdP에서 관리 중인 사용자 속성을 QueryPie 내 Attribute와 자동으로 연동하고자 하는 경우, 해당 옵션을 활성화하시기 바랍니다. 옵션 활성화 시, 하단에 Attribute Mapping UI가 표시되며 매핑 작업을 통해 연동할 IdP Attribute와 QueryPie Attribute를 지정할 수 있습니다. 단, 해당 기능은 Profile Editor(Admin> General > User Management > Profile Editor)에서 Source Priority가 Inherit from profile source로 설정된 Attribute에 한해 적용됩니다.
+ * **Make New Users Inactive by Default**: 동기화 시 새로운 사용자를 비활성화 상태로 추가할지 여부를 선택합니다. 동기화할 사용자 수가 많거나, 사용자의 인증을 통한 QueryPie 접근을 개별적으로 관리하고자 하는 경우 해당 옵션을 활성화하시기 바랍니다.
+ * **Use an Attribute for Privilege Revoke** : 동기화 시 특정 Attribute에 따라 Privilege를 회수할지 여부를 선택합니다. 특정 Attribute의 변경에 의해 자동으로 DAC Privilege를 회수하고자 하는 경우 이 옵션을 활성화하세요. Attribute 입력 필드에 활성화 변경을 감지하려는 Attribute 이름을 입력합니다.
+ * **Enable Attribute Synchronization** : IdP의 사용자 속성과 QueryPie 사용자 속성을 매핑하여 동기화할지 여부를 선택합니다. IdP에서 관리 중인 사용자 속성을 QueryPie 내 Attribute와 자동으로 연동하고자 하는 경우, 해당 옵션을 활성화하시기 바랍니다. 옵션 활성화 시, 하단에 Attribute Mapping UI가 표시되며 매핑 작업을 통해 연동할 IdP Attribute와 QueryPie Attribute를 지정할 수 있습니다. 단, 해당 기능은 Profile Editor(Admin> General > User Management > Profile Editor)에서 Source Priority가 Inherit from profile source로 설정된 Attribute에 한해 적용됩니다.
* **Allowed User Deletion Rate Threshold :**
* 동기화시 기존 유저가 이 값의 비율 이상으로 삭제되었을 경우에는 동기화를 실패하도록 하는 기능입니다.
* 0.0 ~ 1.0 사이의 값을 입력합니다. (기본값은 0.1)
diff --git a/confluence-mdx/tests/testcases/1454342158/expected.roundtrip.json b/confluence-mdx/tests/testcases/1454342158/expected.roundtrip.json
index ca699acae..1908a65a9 100644
--- a/confluence-mdx/tests/testcases/1454342158/expected.roundtrip.json
+++ b/confluence-mdx/tests/testcases/1454342158/expected.roundtrip.json
@@ -1,7 +1,7 @@
{
"schema_version": "3",
"page_id": "1454342158",
- "mdx_sha256": "265b7fb47f8bea29e28b7971ff9af7dfd6202118cff869aca4782b1db4013d97",
+ "mdx_sha256": "bd55ce7ea4560e06ac44f8256b27890008baae136aa4e20bc1c5bc3c63de82a9",
"source_xhtml_sha256": "94e38b8adec78c652bec25688477c8ba2e1e15b5a7c16a7c7112ec7b9af3b8d7",
"blocks": [
{
@@ -248,7 +248,7 @@
"block_index": 14,
"xhtml_xpath": "ul[3]",
"xhtml_fragment": "
Name : 식별에 용이하도록 적합한 IdP의 이름을 입력합니다.
Type: LDAP를 선택합니다.
Server URL : ldap://ldap.example.com:389 과 같은 형식으로 LDAP server의 주소를 입력합니다. LDAPS의 경우 scheme을 ldaps:// 로 입력합니다.
BindDN : LDAP 서버에 접속(바인드)할 때 사용할 서비스 계정의 고유 이름(Distinguished Name, DN)을 입력합니다. 이 계정은 최소한 사용자 정보를 검색(Read)할 수 있는 권한이 필요합니다.
Use QueryPie registered account: 관리자가 커넥션 정보 페이지 내에 저장한 DB username / password 기준으로 Proxy 접속 정보를 생성하는 방식입니다. 사용자는 Agent 또는 별도로 생성된 Proxy Credential 정보를 이용해 Proxy 로 접속할 수 있습니다.
-
Use existing database account with Agent : 사용자가 기존에 사용하던 DB username / password 를 사용할 수 있는 방식으로 Proxy 접속 정보가 생성됩니다. 사용자는 Agent 에서 실행 후 localhost 와 port 정보를 이용해 Proxy 로 접속할 수 있습니다. ※ 사용자의 DB username / password 인증을 사용할 경우, Agent 를 통해서만 접속 가능합니다.
+
Use existing database account with Agent : 사용자가 기존에 사용하던 DB username / password 를 사용할 수 있는 방식으로 Proxy 접속 정보가 생성됩니다. 사용자는 Agent 에서 실행 후 localhost 와 port 정보를 이용해 Proxy 로 접속할 수 있습니다. ※ 사용자의 DB username / password 인증을 사용할 경우, Agent 를 통해서만 접속 가능합니다.
diff --git a/confluence-mdx/tests/testcases/544377869/expected.mdx b/confluence-mdx/tests/testcases/544377869/expected.mdx
index c4da615fe..27056826e 100644
--- a/confluence-mdx/tests/testcases/544377869/expected.mdx
+++ b/confluence-mdx/tests/testcases/544377869/expected.mdx
@@ -33,7 +33,7 @@ Administrator > Databases > Connection Management > DB Connections >
4. `Proxy Usage` 옵션을 체크하여 활성화합니다.
5. 두 가지 Proxy 인증 방식 중 하나를 선택합니다.
1. **Use QueryPie registered account**: 관리자가 커넥션 정보 페이지 내에 저장한 DB username / password 기준으로 Proxy 접속 정보를 생성하는 방식입니다. 사용자는 Agent 또는 별도로 생성된 Proxy Credential 정보를 이용해 Proxy 로 접속할 수 있습니다.
- 2. **Use existing database account with Agent** : 사용자가 기존에 사용하던 DB username / password 를 사용할 수 있는 방식으로 Proxy 접속 정보가 생성됩니다. 사용자는 Agent 에서 실행 후 localhost 와 port 정보를 이용해 Proxy 로 접속할 수 있습니다. ※ 사용자의 DB username / password 인증을 사용할 경우, Agent 를 통해서만 접속 가능합니다.
+ 2. **Use existing database account with Agent** : 사용자가 기존에 사용하던 DB username / password 를 사용할 수 있는 방식으로 Proxy 접속 정보가 생성됩니다. 사용자는 Agent 에서 실행 후 localhost 와 port 정보를 이용해 Proxy 로 접속할 수 있습니다. ※ 사용자의 DB username / password 인증을 사용할 경우, Agent 를 통해서만 접속 가능합니다.
6. **Network ID** : Reverse SSH 기능을 사용하는 경우에 필요한 설정 값입니다.
Proxy Usage 옵션을 활성화하면 Proxy 로 접속할 수 있는 Port 가 해당 커넥션에 할당됩니다.
diff --git a/confluence-mdx/tests/testcases/544377869/expected.roundtrip.json b/confluence-mdx/tests/testcases/544377869/expected.roundtrip.json
index d9adb9e3f..3478dca1f 100644
--- a/confluence-mdx/tests/testcases/544377869/expected.roundtrip.json
+++ b/confluence-mdx/tests/testcases/544377869/expected.roundtrip.json
@@ -1,17 +1,17 @@
{
"schema_version": "3",
"page_id": "544377869",
- "mdx_sha256": "62f5ca1faca232e7cbcd2d265fe47252843fb16a9655be8a1a54d9571eda1d2c",
+ "mdx_sha256": "079f0a79d909811006f21826dd212a6f8455be9cc318e436d9491111f0dc003e",
"source_xhtml_sha256": "a74628f8a53d804ffd124b133efc5d9fbf3b623262f07cf2e824b9d7e0f69946",
"blocks": [
{
"block_index": 0,
"xhtml_xpath": "h2[1]",
"xhtml_fragment": "
데이터베이스 커넥션 접속시 Proxy 연결을 지원합니다. 기본적으로 QueryPie 에서 제공하는 웹 SQL 에디터를 통해 커넥션에 접속할 수 있고, QueryPie 에서 생성한 Proxy Credential 정보 또는 Agent 를 통한 기존의 DB username/password로 쓰시던 툴에서 커넥션에 접속할 수 있습니다. 웹 SQL 에디터와 함께 Proxy 연결을 지원하여 다양한 사용자 환경에서도 문제없이 커넥션 접근을 제어하고, 정책을 적용할 수 있으며, 로그를 남길 수 있습니다. 현재 Proxy 연결은 MySQL, MariaDB, Oracle, PostgreSQL, Redshift, Trino, SQLServer, MongoDB 를 지원합니다.
Use QueryPie registered account : 관리자가 커넥션 정보 페이지 내에 저장한 DB username / password 기준으로 Proxy 접속 정보를 생성하는 방식입니다. 사용자는 Agent 또는 별도로 생성된 Proxy Credential 정보를 이용해 Proxy 로 접속할 수 있습니다.
Use existing database account with Agent : 사용자가 기존에 사용하던 DB username / password 를 사용할 수 있는 방식으로 Proxy 접속 정보가 생성됩니다. 사용자는 Agent 에서 실행 후 localhost 와 port 정보를 이용해 Proxy 로 접속할 수 있습니다.
※ 사용자의 DB username / password 인증을 사용할 경우, Agent 를 통해서만 접속 가능합니다.
Network ID : Reverse SSH 기능을 사용하는 경우에 필요한 설정 값입니다.
10.3.0 부터 Databases > Connection Management > Proxy Management 는 Databases > Monitoring > Proxy Management 로 이동되었습니다. 10.3.0 이후 버전 사용자는 Proxy Management 를 참고하시기 바랍니다.
",
- "mdx_content_hash": "b2da7f53a98160f9a467e89f4f04afbd6efa6caff1e00b4a072e5fd65d238800",
+ "mdx_content_hash": "2637cf30220edf648a896317a1497684b1affb78c74d4bc5ce2e748f3b21f317",
"mdx_line_range": [
- 48,
+ 45,
48
],
"lost_info": {},
"reconstruction": {
- "kind": "html_block",
- "old_plain_text": "10.3.0 부터 Databases > Connection Management > Proxy Management 는 Databases > Monitoring > Proxy Management 로 이동되었습니다. 10.3.0 이후 버전 사용자는 를 참고하시기 바랍니다.",
+ "kind": "container",
+ "old_plain_text": "10.3.0 부터 Databases > Connection Management > Proxy Management 는 Databases > Monitoring > Proxy Management 로 이동되었습니다. 10.3.0 이후 버전 사용자는 Proxy Management 를 참고하시기 바랍니다.",
+ "children": [
+ {
+ "xpath": "macro-info[1]/p[1]",
+ "fragment": "
10.3.0 부터 Databases > Connection Management > Proxy Management 는 Databases > Monitoring > Proxy Management 로 이동되었습니다. 10.3.0 이후 버전 사용자는 Proxy Management 를 참고하시기 바랍니다.
",
+ "plain_text": "10.3.0 부터 Databases > Connection Management > Proxy Management 는 Databases > Monitoring > Proxy Management 로 이동되었습니다. 10.3.0 이후 버전 사용자는 Proxy Management 를 참고하시기 바랍니다.",
+ "type": "paragraph"
+ }
+ ],
"child_xpaths": [
"macro-info[1]/p[1]"
]
@@ -191,7 +199,7 @@
"lost_info": {},
"reconstruction": {
"kind": "html_block",
- "old_plain_text": "Administrator > Databases > Connection Management > DB Connections > Proxy Management"
+ "old_plain_text": ""
}
},
{
diff --git a/confluence-mdx/tests/testcases/692355151/expected.html b/confluence-mdx/tests/testcases/692355151/expected.html
index 8163aaaf9..2a59b37ce 100644
--- a/confluence-mdx/tests/testcases/692355151/expected.html
+++ b/confluence-mdx/tests/testcases/692355151/expected.html
@@ -66,14 +66,14 @@
SQL Request 작성 및 실행계획(Explain) 수행하기
실행계획(Explain) 결과 확인
-
Table 형태의 결과 확인 아래 그림과 같은 결과가 표시됩니다. 각 필드의 의미는 MySQL reference 문서를 참고 바랍니다.
+
Table 형태의 결과 확인 아래 그림과 같은 결과가 표시됩니다. 각 필드의 의미는 MySQL reference 문서를 참고 바랍니다.
-
JSON 형태의 결과 확인 JSON 을 선택하고 Explain 버튼을 누르면 아래 그림과 같은 결과가 표시됩니다. {JSON} 을 클릭하면 전체 JSON 내용을 확인 할 수 있습니다.
내보내기(Export)를 할 때 관리자 설정에 따라 암호 입력을 요구하는 팝업이 출력될 수 있습니다.
+
JSON 형태의 결과 확인 JSON 을 선택하고 Explain 버튼을 누르면 아래 그림과 같은 결과가 표시됩니다. {JSON} 을 클릭하면 전체 JSON 내용을 확인 할 수 있습니다.
내보내기(Export)를 할 때 관리자 설정에 따라 암호 입력을 요구하는 팝업이 출력될 수 있습니다.
diff --git a/confluence-mdx/tests/testcases/692355151/expected.mdx b/confluence-mdx/tests/testcases/692355151/expected.mdx
index 75393c7e4..361a96831 100644
--- a/confluence-mdx/tests/testcases/692355151/expected.mdx
+++ b/confluence-mdx/tests/testcases/692355151/expected.mdx
@@ -59,11 +59,11 @@ Content Type은 “Text”만 지원합니다.
3. 실행계획(Explain) 결과 확인
- 1. Table 형태의 결과 확인 아래 그림과 같은 결과가 표시됩니다. 각 필드의 의미는 MySQL reference 문서를 참고 바랍니다.
+ 1. Table 형태의 결과 확인 아래 그림과 같은 결과가 표시됩니다. 각 필드의 의미는 MySQL reference 문서를 참고 바랍니다.
- 2. JSON 형태의 결과 확인 JSON 을 선택하고 Explain 버튼을 누르면 아래 그림과 같은 결과가 표시됩니다. `{JSON}` 을 클릭하면 전체 JSON 내용을 확인 할 수 있습니다.
내보내기(Export)를 할 때 관리자 설정에 따라 암호 입력을 요구하는 팝업이 출력될 수 있습니다.
+ 2. JSON 형태의 결과 확인 JSON 을 선택하고 Explain 버튼을 누르면 아래 그림과 같은 결과가 표시됩니다. `{JSON}` 을 클릭하면 전체 JSON 내용을 확인 할 수 있습니다.
내보내기(Export)를 할 때 관리자 설정에 따라 암호 입력을 요구하는 팝업이 출력될 수 있습니다.
diff --git a/confluence-mdx/tests/testcases/692355151/expected.roundtrip.json b/confluence-mdx/tests/testcases/692355151/expected.roundtrip.json
index af0eb4685..5c639889a 100644
--- a/confluence-mdx/tests/testcases/692355151/expected.roundtrip.json
+++ b/confluence-mdx/tests/testcases/692355151/expected.roundtrip.json
@@ -1,7 +1,7 @@
{
"schema_version": "3",
"page_id": "692355151",
- "mdx_sha256": "9e6424fb665248f13c73d22821ece9b8dd9eb828fa8fbe4b9a5475a45335bfd1",
+ "mdx_sha256": "4f45cccae7beb1a850b44ea8b28f6d97ea50d6e757aaf6afdb4f4dbc26255f56",
"source_xhtml_sha256": "b9e0646039c7414bbc75057fcec55a2d80783ca2b6767f0fb6147dde5920d6dd",
"blocks": [
{
@@ -245,7 +245,7 @@
"block_index": 12,
"xhtml_xpath": "ol[3]",
"xhtml_fragment": "
실행계획(Explain) 결과 확인
Table 형태의 결과 확인 아래 그림과 같은 결과가 표시됩니다. 각 필드의 의미는 MySQL reference 문서를 참고 바랍니다.
JSON 형태의 결과 확인 JSON 을 선택하고 Explain 버튼을 누르면 아래 그림과 같은 결과가 표시됩니다. {JSON} 을 클릭하면 전체 JSON 내용을 확인 할 수 있습니다.
{JSON}을 클릭하면 전체 내용을 볼수 있습니다.
JSON 결과의 복사와 내보내기가 가능합니다.
내보내기(Export)를 할 때 관리자 설정에 따라 암호 입력을 요구하는 팝업이 출력될 수 있습니다.
좌측 상단 Submit Request 버튼 클릭후 DB Access Request 항목을 선택합니다.
+
좌측 상단 Submit Request 버튼 클릭후 DB Access Request 항목을 선택합니다.
@@ -18,7 +18,7 @@
Custom Data Source 접근 요청
다른 벤더들과 다르게 Privilege를 선택할 수 없기 때문에 “-”로 표기됩니다.
-
Expiration Date과 Reason for Request 항목도 상황에 맞게 설정 및 작성합니다.
+
Expiration Date과 Reason for Request 항목도 상황에 맞게 설정 및 작성합니다.
@@ -49,7 +49,7 @@
Agent를 통한 접속
QueryPie Agent를 실행합니다.
-
Database 항목에서 Custom Data Source를 확인할 수 있습니다.
+
Database 항목에서 Custom Data Source를 확인할 수 있습니다.
@@ -62,7 +62,7 @@
Agent를 통한 접속
Agent에서 Custom Data Source 커넥션 행을 클릭하면 Port 정보를 담은 행이 보입니다.
-
위 행을 우클릭을 한뒤 Connection Guide를 클릭하면 접속 정보를 확인할 수 있습니다.
+
위 행을 우클릭을 한뒤 Connection Guide를 클릭하면 접속 정보를 확인할 수 있습니다.
@@ -106,7 +106,7 @@
웹으로 접속 시도하는 경우
사용자 화면 상단 Databases를 클릭합니다.
-
좌측 커넥션 목록에서 QueryPie Connections를 클릭하면 접근 권한이 있는 Custom Data Source가 표시됩니다.
+
좌측 커넥션 목록에서 QueryPie Connections를 클릭하면 접근 권한이 있는 Custom Data Source가 표시됩니다.
@@ -119,7 +119,7 @@
웹으로 접속 시도하는 경우
Custom Data Source 선택 시 Connect 버튼이 비활성화됩니다.
-
아래와 같은 툴팁이 표시되며 웹으로는 접속이 불가합니다. "Access is only possible through a proxy and cannot be accessed through the web. Please open the QueryPie Agent to connect to the Custom Data Source."
+
아래와 같은 툴팁이 표시되며 웹으로는 접속이 불가합니다. "Access is only possible through a proxy and cannot be accessed through the web. Please open the QueryPie Agent to connect to the Custom Data Source."
diff --git a/confluence-mdx/tests/testcases/880181257/expected.mdx b/confluence-mdx/tests/testcases/880181257/expected.mdx
index f0a93e268..1e20296bb 100644
--- a/confluence-mdx/tests/testcases/880181257/expected.mdx
+++ b/confluence-mdx/tests/testcases/880181257/expected.mdx
@@ -10,14 +10,14 @@ import { Callout } from 'nextra/components'
#### Custom Data Source 접근 요청
1. 사용자 화면 상단 Workflow 메뉴로 이동합니다.
-2. 좌측 상단 `Submit Request` 버튼 클릭후 DB Access Request 항목을 선택합니다.
+2. 좌측 상단 `Submit Request` 버튼 클릭후 DB Access Request 항목을 선택합니다.
3. Approval Rule을 상황에 맞게 설정하고 Title도 작성합니다.
4. DB Connection 목록에서 Type이 'Custom Data Source'인 항목을 선택합니다.
5. 다른 벤더들과 다르게 Privilege를 선택할 수 없기 때문에 “-”로 표기됩니다.
-6. Expiration Date과 Reason for Request 항목도 상황에 맞게 설정 및 작성합니다.
+6. Expiration Date과 Reason for Request 항목도 상황에 맞게 설정 및 작성합니다.
@@ -35,13 +35,13 @@ import { Callout } from 'nextra/components'
1. **QueryPie Agent 실행**
* QueryPie Agent를 실행합니다.
- * Database 항목에서 Custom Data Source를 확인할 수 있습니다.
+ * Database 항목에서 Custom Data Source를 확인할 수 있습니다.
2. **Connection Guide 확인**
* Agent에서 Custom Data Source 커넥션 행을 클릭하면 Port 정보를 담은 행이 보입니다.
- * 위 행을 우클릭을 한뒤 Connection Guide를 클릭하면 접속 정보를 확인할 수 있습니다.
+ * 위 행을 우클릭을 한뒤 Connection Guide를 클릭하면 접속 정보를 확인할 수 있습니다.
@@ -64,13 +64,13 @@ import { Callout } from 'nextra/components'
1. **웹 커넥션 목록 확인**
* 사용자 화면 상단 Databases를 클릭합니다.
- * 좌측 커넥션 목록에서 QueryPie Connections를 클릭하면 접근 권한이 있는 Custom Data Source가 표시됩니다.
+ * 좌측 커넥션 목록에서 QueryPie Connections를 클릭하면 접근 권한이 있는 Custom Data Source가 표시됩니다.
2. **접속 불가 안내**
* Custom Data Source 선택 시 Connect 버튼이 비활성화됩니다.
- * 아래와 같은 툴팁이 표시되며 웹으로는 접속이 불가합니다. "Access is only possible through a proxy and cannot be accessed through the web. Please open the QueryPie Agent to connect to the Custom Data Source."
+ * 아래와 같은 툴팁이 표시되며 웹으로는 접속이 불가합니다. "Access is only possible through a proxy and cannot be accessed through the web. Please open the QueryPie Agent to connect to the Custom Data Source."
diff --git a/confluence-mdx/tests/testcases/880181257/expected.roundtrip.json b/confluence-mdx/tests/testcases/880181257/expected.roundtrip.json
index 2c4ff9917..6c54431bf 100644
--- a/confluence-mdx/tests/testcases/880181257/expected.roundtrip.json
+++ b/confluence-mdx/tests/testcases/880181257/expected.roundtrip.json
@@ -1,22 +1,22 @@
{
"schema_version": "3",
"page_id": "880181257",
- "mdx_sha256": "405d6c970e8c71f6de383207fa8d39dbb24eee622d251f0e07a3065fbc5131d1",
+ "mdx_sha256": "9ec1927b236583febbac101b73f9dffc2916966b27be3822a15296be5e31db87",
"source_xhtml_sha256": "dd6df6dbfae4e50c7b53823a9bbfbc3d1bc4119240c4155d9c4b3a276a28e3b9",
"blocks": [
{
"block_index": 0,
"xhtml_xpath": "macro-toc[1]",
"xhtml_fragment": "26falsenonelisttrue",
- "mdx_content_hash": "04a48ffb03fc28e39a3bd3e970233c73282a315f96d74465ef81a43644e9bd03",
+ "mdx_content_hash": "",
"mdx_line_range": [
- 8,
- 8
+ 0,
+ 0
],
"lost_info": {},
"reconstruction": {
"kind": "html_block",
- "old_plain_text": ""
+ "old_plain_text": "26falsenonelisttrue"
}
},
{
@@ -38,7 +38,7 @@
"block_index": 2,
"xhtml_xpath": "ol[1]",
"xhtml_fragment": "
사용자 화면 상단 Workflow 메뉴로 이동합니다.
좌측 상단 Submit Request 버튼 클릭후 DB Access Request 항목을 선택합니다.
Approval Rule을 상황에 맞게 설정하고 Title도 작성합니다.
DB Connection 목록에서 Type이 'Custom Data Source'인 항목을 선택합니다.
다른 벤더들과 다르게 Privilege를 선택할 수 없기 때문에 “-”로 표기됩니다.
Expiration Date과 Reason for Request 항목도 상황에 맞게 설정 및 작성합니다.
작성을 완료했다면 하단 Submit버튼을 클릭하여 신청을 완료합니다.
관리자의 승인을 받았다면 좌측 Workflow > Sent Request > Done 메뉴에서 확인할 수 있습니다.
Custom Data Source와 다른 벤더를 함께 선택하는 경우 권한 타입이 다르기 때문에 일괄적으로 선택할 수 없습니다.
이 경우 다음 메시지가 표시됩니다: "Privileges cannot be applied across different types at once (e.g., General, Redis, Custom Data Source). Please assign privileges separately for each connection."
같은 권한 타입의 커넥션끼리는 일괄 적용이 가능합니다.
",
- "mdx_content_hash": "1ba8ee5f4cf5845eb083224457553015eeaa0363d016960afb5beeda6114d42b",
+ "mdx_content_hash": "6179227487b3fdf77f86d1882ccd40e391e63eb7538147e279f50ef44de92ce2",
"mdx_line_range": [
27,
- 28
+ 32
],
"lost_info": {},
"reconstruction": {
- "kind": "html_block",
+ "kind": "container",
"old_plain_text": "Custom Data Source Type 외 다중 요청 시 주의사항 Custom Data Source와 다른 벤더를 함께 선택하는 경우 권한 타입이 다르기 때문에 일괄적으로 선택할 수 없습니다. 이 경우 다음 메시지가 표시됩니다: \"Privileges cannot be applied across different types at once (e.g., General, Redis, Custom Data Source). Please assign privileges separately for each connection.\"같은 권한 타입의 커넥션끼리는 일괄 적용이 가능합니다.",
+ "children": [
+ {
+ "xpath": "macro-note[1]/p[1]",
+ "fragment": "
Custom Data Source Type 외 다중 요청 시 주의사항
",
+ "plain_text": "Custom Data Source Type 외 다중 요청 시 주의사항",
+ "type": "paragraph"
+ },
+ {
+ "xpath": "macro-note[1]/ul[1]",
+ "fragment": "
Custom Data Source와 다른 벤더를 함께 선택하는 경우 권한 타입이 다르기 때문에 일괄적으로 선택할 수 없습니다.
이 경우 다음 메시지가 표시됩니다: \"Privileges cannot be applied across different types at once (e.g., General, Redis, Custom Data Source). Please assign privileges separately for each connection.\"
같은 권한 타입의 커넥션끼리는 일괄 적용이 가능합니다.
",
+ "plain_text": "Custom Data Source와 다른 벤더를 함께 선택하는 경우 권한 타입이 다르기 때문에 일괄적으로 선택할 수 없습니다. 이 경우 다음 메시지가 표시됩니다: \"Privileges cannot be applied across different types at once (e.g., General, Redis, Custom Data Source). Please assign privileges separately for each connection.\"같은 권한 타입의 커넥션끼리는 일괄 적용이 가능합니다.",
+ "type": "list"
+ }
+ ],
"child_xpaths": [
"macro-note[1]/p[1]",
"macro-note[1]/ul[1]"
@@ -74,10 +88,10 @@
"block_index": 4,
"xhtml_xpath": "h3[2]",
"xhtml_fragment": "
Create an app 모달에서, App 생성 방식을 선택합니다. From a manifest 를 클릭합니다.
+
Create an app 모달에서, App 생성 방식을 선택합니다. From a manifest 를 클릭합니다.
-
Pick a workspace 모달에서 QueryPie와 연동할 Slack Workspace를 선택한 뒤 다음 단계로 진행합니다.
+
Pick a workspace 모달에서 QueryPie와 연동할 Slack Workspace를 선택한 뒤 다음 단계로 진행합니다.
-
Create app from manifest 모달에서 JSON 형식의 App Manifest를 입력합니다. 미리 채워져 있는 내용들을 삭제하고 아래의 App Manifest를 붙여넣은 뒤 다음 단계로 진행합니다. :light_bulb_on: {{..}} 안의 값은 원하는 값으로 변경해 주세요.
+
Create app from manifest 모달에서 JSON 형식의 App Manifest를 입력합니다. 미리 채워져 있는 내용들을 삭제하고 아래의 App Manifest를 붙여넣은 뒤 다음 단계로 진행합니다. :light_bulb_on: {{..}} 안의 값은 원하는 값으로 변경해 주세요.
@@ -78,7 +78,7 @@
Slack API 에서 DM App 생성 (via Manifest Files)
-
설정 내용을 검토하고 Create 버튼을 클릭하여 App 생성을 완료합니다.
+
설정 내용을 검토하고 Create 버튼을 클릭하여 App 생성을 완료합니다.
@@ -89,7 +89,7 @@
Slack Workspace에 Slack App 설치
Settings > Install App에서 Install to Workspace 버튼을 클릭하여 생성된 앱을 Slack Workspace에 설치합니다.
-
권한 요청 페이지에서, 허용을 클릭합니다.
+
권한 요청 페이지에서, 허용을 클릭합니다.
@@ -122,14 +122,14 @@
App-Level Token 생성
다음 단계를 수행하여 App-Level Token을 수동으로 생성합니다.
-
앱 설정 페이지의 Settings > Basic Information 메뉴의 App-Level Tokens 섹션으로 이동하고, Generate Token and Scope 버튼을 클릭합니다.
+
앱 설정 페이지의 Settings > Basic Information 메뉴의 App-Level Tokens 섹션으로 이동하고, Generate Token and Scope 버튼을 클릭합니다.
-
Generate an app-level token 모달에서, Add Scope 버튼을 클릭한 뒤 connections:write 를 추가합니다.
+
Generate an app-level token 모달에서, Add Scope 버튼을 클릭한 뒤 connections:write 를 추가합니다.
@@ -143,7 +143,7 @@
App-Level Token 생성
QueryPie에서 Slack DM 설정하기
-
Admin > General > System > Integrations > Slack 메뉴로 진입한 뒤, Configure 버튼을 클릭하여 설정 모달을 엽니다.
+
Admin > General > System > Integrations > Slack 메뉴로 진입한 뒤, Configure 버튼을 클릭하여 설정 모달을 엽니다.
@@ -158,7 +158,7 @@
QueryPie에서 Slack DM 설정하기
Send Workflow Notification via Slack DM : 워크플로우 요청에 대한 Slack DM 전송 활성화
-
Allow Users to approve or reject on Slack DM : Slack DM 내에서 승인 또는 거절 기능 활성화
+
Allow Users to approve or reject on Slack DM : Slack DM 내에서 승인 또는 거절 기능 활성화
액션 허용타입 예시 (좌) / 액션 비허용 타입 예시 (우)
@@ -176,7 +176,7 @@
QueryPie에서 Slack DM 설정하기
Slack DM 설정 관리하기
-
Slack Configuration을 등록한 뒤, 현재 설정 상태를 화면에서 확인할 수 있습니다.
+
Slack Configuration을 등록한 뒤, 현재 설정 상태를 화면에서 확인할 수 있습니다.
@@ -198,14 +198,14 @@
Workflow 요청 시 Slack DM 테스트
DB Access Request를 예시로, Slack DM 기능이 정상적으로 작동하는지 테스트를 수행합니다.
-
QueryPie User > Workflow 페이지에서 Submit Request 버튼을 클릭한 뒤, DB Access Request를 선택하여 요청 작성 화면으로 진입합니다. 요청 작성 화면에서 필요한 정보를 입력하고, 요청을 상신합니다.
+
QueryPie User > Workflow 페이지에서 Submit Request 버튼을 클릭한 뒤, DB Access Request를 선택하여 요청 작성 화면으로 진입합니다. 요청 작성 화면에서 필요한 정보를 입력하고, 요청을 상신합니다.
-
승인자는 앞에서 추가한 Slack App과의 DM으로 승인해야 할 요청 알림을 수신할 수 있습니다. Allow Users to approve or reject on Slack DM 설정이 켜져 있으므로, DM에서 직접 사유를 입력하고 요청을 승인 또는 거절할 수 있습니다.
+
승인자는 앞에서 추가한 Slack App과의 DM으로 승인해야 할 요청 알림을 수신할 수 있습니다. Allow Users to approve or reject on Slack DM 설정이 켜져 있으므로, DM에서 직접 사유를 입력하고 요청을 승인 또는 거절할 수 있습니다.
diff --git a/confluence-mdx/tests/testcases/883654669/expected.mdx b/confluence-mdx/tests/testcases/883654669/expected.mdx
index 929b0c722..68261b48b 100644
--- a/confluence-mdx/tests/testcases/883654669/expected.mdx
+++ b/confluence-mdx/tests/testcases/883654669/expected.mdx
@@ -26,19 +26,19 @@ Slack App을 QueryPie에 연동하고, QueryPie로부터 Direct Message 알림
App Manifest를 이용하여 QueryPie DM 연동 전용 Slack App을 생성합니다.
-1. [https://api.slack.com/apps](https://api.slack.com/apps) 으로 이동하여 `Create an App` 을 클릭합니다.
+1. [https://api.slack.com/apps](https://api.slack.com/apps) 으로 이동하여 `Create an App` 을 클릭합니다.
-2. Create an app 모달에서, App 생성 방식을 선택합니다. `From a manifest` 를 클릭합니다.
+2. Create an app 모달에서, App 생성 방식을 선택합니다. `From a manifest` 를 클릭합니다.
-3. Pick a workspace 모달에서 QueryPie와 연동할 Slack Workspace를 선택한 뒤 다음 단계로 진행합니다.
+3. Pick a workspace 모달에서 QueryPie와 연동할 Slack Workspace를 선택한 뒤 다음 단계로 진행합니다.
-4. Create app from manifest 모달에서 JSON 형식의 App Manifest를 입력합니다. 미리 채워져 있는 내용들을 삭제하고 아래의 App Manifest를 붙여넣은 뒤 다음 단계로 진행합니다. :light_bulb_on: `{{..}}` 안의 값은 원하는 값으로 변경해 주세요.
+4. Create app from manifest 모달에서 JSON 형식의 App Manifest를 입력합니다. 미리 채워져 있는 내용들을 삭제하고 아래의 App Manifest를 붙여넣은 뒤 다음 단계로 진행합니다. :light_bulb_on: `{{..}}` 안의 값은 원하는 값으로 변경해 주세요.
```
{
"display_information": {
@@ -69,7 +69,7 @@ App Manifest를 이용하여 QueryPie DM 연동 전용 Slack App을 생성합니
}
}
```
-5. 설정 내용을 검토하고 `Create` 버튼을 클릭하여 App 생성을 완료합니다.
+5. 설정 내용을 검토하고 `Create` 버튼을 클릭하여 App 생성을 완료합니다.
@@ -77,7 +77,7 @@ App Manifest를 이용하여 QueryPie DM 연동 전용 Slack App을 생성합니
### Slack Workspace에 Slack App 설치
1. Settings > Install App에서 `Install to Workspace` 버튼을 클릭하여 생성된 앱을 Slack Workspace에 설치합니다.
-2. 권한 요청 페이지에서, `허용`을 클릭합니다.
+2. 권한 요청 페이지에서, `허용`을 클릭합니다.
@@ -105,11 +105,11 @@ App manifest로 Slack app을 생성할 때 Socket Mode와 관련 권한들을
다음 단계를 수행하여 App-Level Token을 수동으로 생성합니다.
-1. 앱 설정 페이지의 Settings > Basic Information 메뉴의 App-Level Tokens 섹션으로 이동하고, `Generate Token and Scope` 버튼을 클릭합니다.
+1. 앱 설정 페이지의 Settings > Basic Information 메뉴의 App-Level Tokens 섹션으로 이동하고, `Generate Token and Scope` 버튼을 클릭합니다.
-2. Generate an app-level token 모달에서, Add Scope 버튼을 클릭한 뒤 `connections:write` 를 추가합니다.
+2. Generate an app-level token 모달에서, Add Scope 버튼을 클릭한 뒤 `connections:write` 를 추가합니다.
@@ -117,7 +117,7 @@ App manifest로 Slack app을 생성할 때 Socket Mode와 관련 권한들을
### QueryPie에서 Slack DM 설정하기
-1. Admin > General > System > Integrations > Slack 메뉴로 진입한 뒤, `Configure` 버튼을 클릭하여 설정 모달을 엽니다.
+1. Admin > General > System > Integrations > Slack 메뉴로 진입한 뒤, `Configure` 버튼을 클릭하여 설정 모달을 엽니다.
@@ -127,7 +127,7 @@ App manifest로 Slack app을 생성할 때 Socket Mode와 관련 권한들을
2. 설정 모달에 아까 기록해둔 App Token과 Bot User OAuth Token을 입력합니다.
3. 추가 설정 값은 다음과 같습니다. DM으로 Workflow 알림을 받고 메시지 안에서 승인/거절을 수행하려면 모든 설정 토글을 활성화 합니다.
* **Send Workflow Notification via Slack DM** : 워크플로우 요청에 대한 Slack DM 전송 활성화
- * **Allow Users to approve or reject on Slack DM** : Slack DM 내에서 승인 또는 거절 기능 활성화
+ * **Allow Users to approve or reject on Slack DM** : Slack DM 내에서 승인 또는 거절 기능 활성화
@@ -138,7 +138,7 @@ App manifest로 Slack app을 생성할 때 Socket Mode와 관련 권한들을
### Slack DM 설정 관리하기
-1. Slack Configuration을 등록한 뒤, 현재 설정 상태를 화면에서 확인할 수 있습니다.
+1. Slack Configuration을 등록한 뒤, 현재 설정 상태를 화면에서 확인할 수 있습니다.
@@ -158,11 +158,11 @@ App manifest로 Slack app을 생성할 때 Socket Mode와 관련 권한들을
DB Access Request를 예시로, Slack DM 기능이 정상적으로 작동하는지 테스트를 수행합니다.
-1. QueryPie User > Workflow 페이지에서 Submit Request 버튼을 클릭한 뒤, DB Access Request를 선택하여 요청 작성 화면으로 진입합니다. 요청 작성 화면에서 필요한 정보를 입력하고, 요청을 상신합니다.
+1. QueryPie User > Workflow 페이지에서 Submit Request 버튼을 클릭한 뒤, DB Access Request를 선택하여 요청 작성 화면으로 진입합니다. 요청 작성 화면에서 필요한 정보를 입력하고, 요청을 상신합니다.
-2. 승인자는 앞에서 추가한 Slack App과의 DM으로 승인해야 할 요청 알림을 수신할 수 있습니다. **Allow Users to approve or reject on Slack DM** 설정이 켜져 있으므로, DM에서 직접 사유를 입력하고 요청을 승인 또는 거절할 수 있습니다.
+2. 승인자는 앞에서 추가한 Slack App과의 DM으로 승인해야 할 요청 알림을 수신할 수 있습니다. **Allow Users to approve or reject on Slack DM** 설정이 켜져 있으므로, DM에서 직접 사유를 입력하고 요청을 승인 또는 거절할 수 있습니다.
QueryPie User > Workflow 페이지에서 Submit Request 버튼을 클릭한 뒤, DB Access Request를 선택하여 요청 작성 화면으로 진입합니다. 요청 작성 화면에서 필요한 정보를 입력하고, 요청을 상신합니다.
승인자는 앞에서 추가한 Slack App과의 DM으로 승인해야 할 요청 알림을 수신할 수 있습니다. Allow Users to approve or reject on Slack DM 설정이 켜져 있으므로, DM에서 직접 사유를 입력하고 요청을 승인 또는 거절할 수 있습니다.
DM에서 Details 버튼을 클릭 시, QueryPie Admin에서 결재 요청에 대한 상세 내용을 확인하고 승인 또는 거절할 수 있습니다.