-
설정
-
ORDS 연결값과 백오피스 DB 준비 상태를 확인합니다.
+
연결 설정
+
백오피스가 ORDS를 호출할 주소를 관리합니다. DB 지원 DDL은 별도 안전 화면에서 실행합니다.
- 설정 화면의 범위 보기
- 백오피스에서 사용하는 외부 연동 값을 관리합니다. DB 준비 상태에서는 메타데이터, VPD runtime, ORDS runtime, grant를 연결 사용자 기준으로 점검합니다.
+ 이 화면에서 바꾸는 범위 보기
+ 여기서는 ORDS Base URL만 저장합니다. VPD runtime, grant, 지원 테이블 생성처럼 DB에 영향을 주는 작업은 DB 준비 상태에서 별도로 확인·실행합니다.
@@ -19,151 +19,32 @@
지원 테이블을 생성하세요.
-
-
-
-
DB 준비 상태
-
현재 연결 사용자 기준으로 백오피스 메타데이터, VPD runtime, ORDS runtime, grant 상태를 점검합니다.
-
-
-
-
- 현재 연결 사용자
- ADMIN
-
-
- 권장 ORDS parsing schema
- CB_ORDS
-
-
- OK
- 0
-
-
- WARN
- 0
-
-
- MISSING
- 0
-
-
- ERROR
- 0
-
-
-
- 앱에서 실행 가능한 항목은 아래 `지원 테이블 생성/확인` 버튼으로 보강하고, `sqlcl 필요` 항목은 preview 순서대로 DB 권한을 가진 세션에서 실행하세요.
-
-
-
-
-
- | Layer |
- Item |
- Type |
- Status |
- Detail |
- Next Action |
-
-
-
-
- | Backoffice Metadata |
- CB_APP_USER |
- TABLE |
-
- OK
- |
- 존재합니다. |
-
- 앱 실행 가능
- 조치 없음
- |
-
-
-
-
-
-
-
- SQL Preview
-
- 앱 버튼이 실행할 SQL과 sqlcl로 실행할 runtime 준비 순서를 구분해서 확인합니다.
-
-
-
- 앱에서 실행하는 지원 DDL
- CREATE TABLE ...
-
-
- sqlcl로 실행할 VPD/ORDS runtime 순서
- @sql/adb/...
-
-
-
-
-
- DB 스키마 초기화
-
- 현재 연결된 DB 사용자에 백오피스 지원 테이블, 시퀀스, 컬럼을 생성하거나 보강합니다. VPD context, ORDS enablement, grant는 sqlcl preview 순서를 사용하세요.
-
-
-
-
-
-
- | Object |
- Action |
- Status |
- Message |
- SQL |
-
-
-
-
- object |
- TABLE |
-
- CREATED
- |
- 생성했습니다. |
-
-
- 보기
- CREATE TABLE ...
-
- -
- |
-
-
-
+
+
+
DB 준비 · 별도 화면
+
지원 테이블과 VPD runtime 상태를 확인해야 하나요?
+
현재 연결 사용자, 메타데이터, VPD runtime, ORDS runtime, grant 상태를 점검합니다. 지원 DDL 실행은 확인 문구 입력이 필요합니다.
+ DB 준비 상태 열기
diff --git a/src/test/java/com/cloudhandson/vpdbackoffice/web/GuidedFlowTemplateTest.java b/src/test/java/com/cloudhandson/vpdbackoffice/web/GuidedFlowTemplateTest.java
index 32c4b36..c34854d 100644
--- a/src/test/java/com/cloudhandson/vpdbackoffice/web/GuidedFlowTemplateTest.java
+++ b/src/test/java/com/cloudhandson/vpdbackoffice/web/GuidedFlowTemplateTest.java
@@ -113,6 +113,23 @@ class GuidedFlowTemplateTest {
.contains("기술 태그 비교 예시");
}
+ @Test
+ void connectionSettingsAreSeparatedFromDatabasePreparation() throws IOException {
+ String settings = template("settings.html");
+ String database = template("settings-database.html");
+
+ assertThat(settings)
+ .contains("연결 설정")
+ .contains("/settings/database")
+ .doesNotContain("action=\"/settings/database/initialize\"");
+ assertThat(database)
+ .contains("DB 준비 상태")
+ .contains("/settings/database/initialize")
+ .contains("확인 문구 입력")
+ .contains("DB 준비 실행")
+ .doesNotContain("action=\"/settings/schema/initialize\"");
+ }
+
@Test
void effectiveMatrixStartsWithOneUserAndKeepsGroupAndRoleAsSecondaryViews() throws IOException {
String html = template("effective-matrix.html");
diff --git a/src/test/java/com/cloudhandson/vpdbackoffice/web/SettingsTemplateRenderTest.java b/src/test/java/com/cloudhandson/vpdbackoffice/web/SettingsTemplateRenderTest.java
new file mode 100644
index 0000000..068e8bb
--- /dev/null
+++ b/src/test/java/com/cloudhandson/vpdbackoffice/web/SettingsTemplateRenderTest.java
@@ -0,0 +1,43 @@
+package com.cloudhandson.vpdbackoffice.web;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.nio.file.Path;
+import java.util.Locale;
+import org.junit.jupiter.api.Test;
+import org.thymeleaf.context.Context;
+import org.thymeleaf.spring6.SpringTemplateEngine;
+import org.thymeleaf.templateresolver.FileTemplateResolver;
+
+class SettingsTemplateRenderTest {
+
+ @Test
+ void rendersConnectionAndDatabasePreparationPagesSeparately() {
+ var resolver = new FileTemplateResolver();
+ resolver.setPrefix(Path.of("src/main/resources/templates").toAbsolutePath() + "/");
+ resolver.setSuffix(".html");
+ resolver.setTemplateMode("HTML");
+ resolver.setCacheable(false);
+ var engine = new SpringTemplateEngine();
+ engine.setTemplateResolver(resolver);
+
+ var context = new Context(Locale.KOREAN);
+ context.setVariable("_csrf", new CsrfFixture("_csrf", "test-token"));
+ context.setVariable("ordsBaseUrl", "https://ords.example.test/ords");
+
+ String connection = engine.process("settings", context);
+ String database = engine.process("settings-database", context);
+
+ assertThat(connection)
+ .contains("ORDS Base URL")
+ .contains("/settings/database")
+ .doesNotContain("/settings/database/initialize");
+ assertThat(database)
+ .contains("DB 준비 상태")
+ .contains("/settings/database/initialize")
+ .contains("DB 준비 실행");
+ }
+
+ private record CsrfFixture(String parameterName, String token) {
+ }
+}