검수완료 geosjon 생성 스케줄러 수정

This commit is contained in:
2026-02-24 19:52:51 +09:00
parent 135c6b5892
commit 6bec4d017f
282 changed files with 1913 additions and 4824 deletions

View File

@@ -0,0 +1,39 @@
package com.kamcoback.cd.review.postgres.entity;
import static com.querydsl.core.types.PathMetadataFactory.*;
import com.querydsl.core.types.dsl.*;
import com.querydsl.core.types.PathMetadata;
import javax.annotation.processing.Generated;
import com.querydsl.core.types.Path;
/**
* QCommonDateEntity is a Querydsl query type for CommonDateEntity
*/
@Generated("com.querydsl.codegen.DefaultSupertypeSerializer")
public class QCommonDateEntity extends EntityPathBase<CommonDateEntity> {
private static final long serialVersionUID = 887355116L;
public static final QCommonDateEntity commonDateEntity = new QCommonDateEntity("commonDateEntity");
public final DateTimePath<java.time.ZonedDateTime> createdDate = createDateTime("createdDate", java.time.ZonedDateTime.class);
public final DateTimePath<java.time.ZonedDateTime> modifiedDate = createDateTime("modifiedDate", java.time.ZonedDateTime.class);
public QCommonDateEntity(String variable) {
super(CommonDateEntity.class, forVariable(variable));
}
public QCommonDateEntity(Path<? extends CommonDateEntity> path) {
super(path.getType(), path.getMetadata());
}
public QCommonDateEntity(PathMetadata metadata) {
super(CommonDateEntity.class, metadata);
}
}

View File

@@ -0,0 +1,67 @@
package com.kamcoback.cd.review.postgres.entity;
import static com.querydsl.core.types.PathMetadataFactory.*;
import com.querydsl.core.types.dsl.*;
import com.querydsl.core.types.PathMetadata;
import javax.annotation.processing.Generated;
import com.querydsl.core.types.Path;
/**
* QLabelingAssignmentEntity is a Querydsl query type for LabelingAssignmentEntity
*/
@Generated("com.querydsl.codegen.DefaultEntitySerializer")
public class QLabelingAssignmentEntity extends EntityPathBase<LabelingAssignmentEntity> {
private static final long serialVersionUID = 1552947982L;
public static final QLabelingAssignmentEntity labelingAssignmentEntity = new QLabelingAssignmentEntity("labelingAssignmentEntity");
public final QCommonDateEntity _super = new QCommonDateEntity(this);
public final NumberPath<Long> analUid = createNumber("analUid", Long.class);
public final StringPath assignGroupId = createString("assignGroupId");
public final ComparablePath<java.util.UUID> assignmentUid = createComparable("assignmentUid", java.util.UUID.class);
//inherited
public final DateTimePath<java.time.ZonedDateTime> createdDate = _super.createdDate;
public final NumberPath<Long> inferenceGeomUid = createNumber("inferenceGeomUid", Long.class);
public final StringPath inspectorUid = createString("inspectorUid");
public final DateTimePath<java.time.ZonedDateTime> inspectStatDttm = createDateTime("inspectStatDttm", java.time.ZonedDateTime.class);
public final StringPath inspectState = createString("inspectState");
public final NumberPath<Long> learnGeomUid = createNumber("learnGeomUid", Long.class);
//inherited
public final DateTimePath<java.time.ZonedDateTime> modifiedDate = _super.modifiedDate;
public final ComparablePath<Character> stagnationYn = createComparable("stagnationYn", Character.class);
public final StringPath workerUid = createString("workerUid");
public final DateTimePath<java.time.ZonedDateTime> workStatDttm = createDateTime("workStatDttm", java.time.ZonedDateTime.class);
public final StringPath workState = createString("workState");
public QLabelingAssignmentEntity(String variable) {
super(LabelingAssignmentEntity.class, forVariable(variable));
}
public QLabelingAssignmentEntity(Path<? extends LabelingAssignmentEntity> path) {
super(path.getType(), path.getMetadata());
}
public QLabelingAssignmentEntity(PathMetadata metadata) {
super(LabelingAssignmentEntity.class, metadata);
}
}

View File

@@ -0,0 +1,49 @@
package com.kamcoback.cd.review.postgres.entity;
import static com.querydsl.core.types.PathMetadataFactory.*;
import com.querydsl.core.types.dsl.*;
import com.querydsl.core.types.PathMetadata;
import javax.annotation.processing.Generated;
import com.querydsl.core.types.Path;
/**
* QLabelingInspectorEntity is a Querydsl query type for LabelingInspectorEntity
*/
@Generated("com.querydsl.codegen.DefaultEntitySerializer")
public class QLabelingInspectorEntity extends EntityPathBase<LabelingInspectorEntity> {
private static final long serialVersionUID = 1160555516L;
public static final QLabelingInspectorEntity labelingInspectorEntity = new QLabelingInspectorEntity("labelingInspectorEntity");
public final QCommonDateEntity _super = new QCommonDateEntity(this);
public final NumberPath<Long> analUid = createNumber("analUid", Long.class);
//inherited
public final DateTimePath<java.time.ZonedDateTime> createdDate = _super.createdDate;
public final StringPath inspectorUid = createString("inspectorUid");
//inherited
public final DateTimePath<java.time.ZonedDateTime> modifiedDate = _super.modifiedDate;
public final ComparablePath<java.util.UUID> operatorUid = createComparable("operatorUid", java.util.UUID.class);
public QLabelingInspectorEntity(String variable) {
super(LabelingInspectorEntity.class, forVariable(variable));
}
public QLabelingInspectorEntity(Path<? extends LabelingInspectorEntity> path) {
super(path.getType(), path.getMetadata());
}
public QLabelingInspectorEntity(PathMetadata metadata) {
super(LabelingInspectorEntity.class, metadata);
}
}

View File

@@ -0,0 +1,110 @@
package com.kamcoback.cd.review.postgres.entity;
import static com.querydsl.core.types.PathMetadataFactory.*;
import com.querydsl.core.types.dsl.*;
import com.querydsl.core.types.PathMetadata;
import javax.annotation.processing.Generated;
import com.querydsl.core.types.Path;
import com.querydsl.core.types.dsl.PathInits;
/**
* QMapSheetAnalInferenceEntity is a Querydsl query type for MapSheetAnalInferenceEntity
*/
@Generated("com.querydsl.codegen.DefaultEntitySerializer")
public class QMapSheetAnalInferenceEntity extends EntityPathBase<MapSheetAnalInferenceEntity> {
private static final long serialVersionUID = 2038127441L;
public static final QMapSheetAnalInferenceEntity mapSheetAnalInferenceEntity = new QMapSheetAnalInferenceEntity("mapSheetAnalInferenceEntity");
public final NumberPath<Double> accuracy = createNumber("accuracy", Double.class);
public final DateTimePath<java.time.ZonedDateTime> analEndDttm = createDateTime("analEndDttm", java.time.ZonedDateTime.class);
public final NumberPath<Long> analPredSec = createNumber("analPredSec", Long.class);
public final NumberPath<Long> analSec = createNumber("analSec", Long.class);
public final StringPath analState = createString("analState");
public final DateTimePath<java.time.ZonedDateTime> analStrtDttm = createDateTime("analStrtDttm", java.time.ZonedDateTime.class);
public final StringPath analTargetType = createString("analTargetType");
public final StringPath analTitle = createString("analTitle");
public final StringPath baseMapSheetNum = createString("baseMapSheetNum");
public final NumberPath<Integer> compareYyyy = createNumber("compareYyyy", Integer.class);
public final DateTimePath<java.time.ZonedDateTime> createdDttm = createDateTime("createdDttm", java.time.ZonedDateTime.class);
public final NumberPath<Long> createdUid = createNumber("createdUid", Long.class);
public final NumberPath<Long> detectingCnt = createNumber("detectingCnt", Long.class);
public final StringPath detectingDescription = createString("detectingDescription");
public final StringPath detectionDataOption = createString("detectionDataOption");
public final DateTimePath<java.time.ZonedDateTime> gukyuinApplyDttm = createDateTime("gukyuinApplyDttm", java.time.ZonedDateTime.class);
public final StringPath gukyuinUsed = createString("gukyuinUsed");
public final MapPath<String, Object, SimplePath<Object>> hyperParams = this.<String, Object, SimplePath<Object>>createMap("hyperParams", String.class, Object.class, SimplePath.class);
public final NumberPath<Long> id = createNumber("id", Long.class);
public final StringPath inspectionClosedYn = createString("inspectionClosedYn");
public final StringPath labelingClosedYn = createString("labelingClosedYn");
public final NumberPath<Long> learnId = createNumber("learnId", Long.class);
public final StringPath modelM1Ver = createString("modelM1Ver");
public final StringPath modelM2Ver = createString("modelM2Ver");
public final StringPath modelM3Ver = createString("modelM3Ver");
public final NumberPath<Long> modelUid = createNumber("modelUid", Long.class);
public final NumberPath<Long> modelVerUid = createNumber("modelVerUid", Long.class);
public final StringPath resultUrl = createString("resultUrl");
public final StringPath serverIds = createString("serverIds");
public final NumberPath<Integer> stage = createNumber("stage", Integer.class);
public final NumberPath<Integer> targetYyyy = createNumber("targetYyyy", Integer.class);
public final StringPath testRate = createString("testRate");
public final ListPath<Double, NumberPath<Double>> tranningRate = this.<Double, NumberPath<Double>>createList("tranningRate", Double.class, NumberPath.class, PathInits.DIRECT2);
public final DateTimePath<java.time.ZonedDateTime> updatedDttm = createDateTime("updatedDttm", java.time.ZonedDateTime.class);
public final NumberPath<Long> updatedUid = createNumber("updatedUid", Long.class);
public final ComparablePath<java.util.UUID> uuid = createComparable("uuid", java.util.UUID.class);
public final ListPath<Double, NumberPath<Double>> validationRate = this.<Double, NumberPath<Double>>createList("validationRate", Double.class, NumberPath.class, PathInits.DIRECT2);
public QMapSheetAnalInferenceEntity(String variable) {
super(MapSheetAnalInferenceEntity.class, forVariable(variable));
}
public QMapSheetAnalInferenceEntity(Path<? extends MapSheetAnalInferenceEntity> path) {
super(path.getType(), path.getMetadata());
}
public QMapSheetAnalInferenceEntity(PathMetadata metadata) {
super(MapSheetAnalInferenceEntity.class, metadata);
}
}

View File

@@ -0,0 +1,59 @@
package com.kamcoback.cd.review.postgres.entity;
import static com.querydsl.core.types.PathMetadataFactory.*;
import com.querydsl.core.types.dsl.*;
import com.querydsl.core.types.PathMetadata;
import javax.annotation.processing.Generated;
import com.querydsl.core.types.Path;
/**
* QMapSheetLearnDataGeomEntity is a Querydsl query type for MapSheetLearnDataGeomEntity
*/
@Generated("com.querydsl.codegen.DefaultEntitySerializer")
public class QMapSheetLearnDataGeomEntity extends EntityPathBase<MapSheetLearnDataGeomEntity> {
private static final long serialVersionUID = 886149914L;
public static final QMapSheetLearnDataGeomEntity mapSheetLearnDataGeomEntity = new QMapSheetLearnDataGeomEntity("mapSheetLearnDataGeomEntity");
public final QCommonDateEntity _super = new QCommonDateEntity(this);
public final NumberPath<Integer> afterYyyy = createNumber("afterYyyy", Integer.class);
public final NumberPath<Double> area = createNumber("area", Double.class);
public final NumberPath<Integer> beforeYyyy = createNumber("beforeYyyy", Integer.class);
public final StringPath classAfterCd = createString("classAfterCd");
public final StringPath classBeforeCd = createString("classBeforeCd");
//inherited
public final DateTimePath<java.time.ZonedDateTime> createdDate = _super.createdDate;
public final BooleanPath fileCreateYn = createBoolean("fileCreateYn");
public final ComparablePath<org.locationtech.jts.geom.Geometry> geom = createComparable("geom", org.locationtech.jts.geom.Geometry.class);
public final NumberPath<Long> geoUid = createNumber("geoUid", Long.class);
//inherited
public final DateTimePath<java.time.ZonedDateTime> modifiedDate = _super.modifiedDate;
public QMapSheetLearnDataGeomEntity(String variable) {
super(MapSheetLearnDataGeomEntity.class, forVariable(variable));
}
public QMapSheetLearnDataGeomEntity(Path<? extends MapSheetLearnDataGeomEntity> path) {
super(path.getType(), path.getMetadata());
}
public QMapSheetLearnDataGeomEntity(PathMetadata metadata) {
super(MapSheetLearnDataGeomEntity.class, metadata);
}
}

View File

@@ -0,0 +1,141 @@
package com.kamcoback.cd.review.postgres.entity;
import static com.querydsl.core.types.PathMetadataFactory.*;
import com.querydsl.core.types.dsl.*;
import com.querydsl.core.types.PathMetadata;
import javax.annotation.processing.Generated;
import com.querydsl.core.types.Path;
/**
* QMapSheetLearnEntity is a Querydsl query type for MapSheetLearnEntity
*/
@Generated("com.querydsl.codegen.DefaultEntitySerializer")
public class QMapSheetLearnEntity extends EntityPathBase<MapSheetLearnEntity> {
private static final long serialVersionUID = 1102645876L;
public static final QMapSheetLearnEntity mapSheetLearnEntity = new QMapSheetLearnEntity("mapSheetLearnEntity");
public final DateTimePath<java.time.ZonedDateTime> applyDttm = createDateTime("applyDttm", java.time.ZonedDateTime.class);
public final StringPath applyStatus = createString("applyStatus");
public final DateTimePath<java.time.ZonedDateTime> applyStatusDttm = createDateTime("applyStatusDttm", java.time.ZonedDateTime.class);
public final BooleanPath applyYn = createBoolean("applyYn");
public final StringPath chnDtctMstId = createString("chnDtctMstId");
public final NumberPath<Integer> compareYyyy = createNumber("compareYyyy", Integer.class);
public final DateTimePath<java.time.ZonedDateTime> createdDttm = createDateTime("createdDttm", java.time.ZonedDateTime.class);
public final NumberPath<Long> createdUid = createNumber("createdUid", Long.class);
public final NumberPath<Long> detectEndCnt = createNumber("detectEndCnt", Long.class);
public final NumberPath<Long> detectingCnt = createNumber("detectingCnt", Long.class);
public final StringPath detectOption = createString("detectOption");
public final DateTimePath<java.time.ZonedDateTime> elapsedTime = createDateTime("elapsedTime", java.time.ZonedDateTime.class);
public final NumberPath<Long> id = createNumber("id", Long.class);
public final DateTimePath<java.time.ZonedDateTime> inferEndDttm = createDateTime("inferEndDttm", java.time.ZonedDateTime.class);
public final DateTimePath<java.time.ZonedDateTime> inferStartDttm = createDateTime("inferStartDttm", java.time.ZonedDateTime.class);
public final NumberPath<Integer> m1CompletedJobs = createNumber("m1CompletedJobs", Integer.class);
public final NumberPath<Integer> m1FailedJobs = createNumber("m1FailedJobs", Integer.class);
public final NumberPath<Long> m1ModelBatchId = createNumber("m1ModelBatchId", Long.class);
public final DateTimePath<java.time.ZonedDateTime> m1ModelEndDttm = createDateTime("m1ModelEndDttm", java.time.ZonedDateTime.class);
public final DateTimePath<java.time.ZonedDateTime> m1ModelStartDttm = createDateTime("m1ModelStartDttm", java.time.ZonedDateTime.class);
public final ComparablePath<java.util.UUID> m1ModelUuid = createComparable("m1ModelUuid", java.util.UUID.class);
public final NumberPath<Integer> m1PendingJobs = createNumber("m1PendingJobs", Integer.class);
public final NumberPath<Integer> m1RunningJobs = createNumber("m1RunningJobs", Integer.class);
public final NumberPath<Integer> m2CompletedJobs = createNumber("m2CompletedJobs", Integer.class);
public final NumberPath<Integer> m2FailedJobs = createNumber("m2FailedJobs", Integer.class);
public final NumberPath<Long> m2ModelBatchId = createNumber("m2ModelBatchId", Long.class);
public final DateTimePath<java.time.ZonedDateTime> m2ModelEndDttm = createDateTime("m2ModelEndDttm", java.time.ZonedDateTime.class);
public final DateTimePath<java.time.ZonedDateTime> m2ModelStartDttm = createDateTime("m2ModelStartDttm", java.time.ZonedDateTime.class);
public final ComparablePath<java.util.UUID> m2ModelUuid = createComparable("m2ModelUuid", java.util.UUID.class);
public final NumberPath<Integer> m2PendingJobs = createNumber("m2PendingJobs", Integer.class);
public final NumberPath<Integer> m2RunningJobs = createNumber("m2RunningJobs", Integer.class);
public final NumberPath<Integer> m3CompletedJobs = createNumber("m3CompletedJobs", Integer.class);
public final NumberPath<Integer> m3FailedJobs = createNumber("m3FailedJobs", Integer.class);
public final NumberPath<Long> m3ModelBatchId = createNumber("m3ModelBatchId", Long.class);
public final DateTimePath<java.time.ZonedDateTime> m3ModelEndDttm = createDateTime("m3ModelEndDttm", java.time.ZonedDateTime.class);
public final DateTimePath<java.time.ZonedDateTime> m3ModelStartDttm = createDateTime("m3ModelStartDttm", java.time.ZonedDateTime.class);
public final ComparablePath<java.util.UUID> m3ModelUuid = createComparable("m3ModelUuid", java.util.UUID.class);
public final NumberPath<Integer> m3PendingJobs = createNumber("m3PendingJobs", Integer.class);
public final NumberPath<Integer> m3RunningJobs = createNumber("m3RunningJobs", Integer.class);
public final StringPath mapSheetCnt = createString("mapSheetCnt");
public final StringPath mapSheetScope = createString("mapSheetScope");
public final StringPath modelComparePath = createString("modelComparePath");
public final StringPath modelTargetPath = createString("modelTargetPath");
public final StringPath runningModelType = createString("runningModelType");
public final NumberPath<Integer> stage = createNumber("stage", Integer.class);
public final StringPath status = createString("status");
public final NumberPath<Integer> targetYyyy = createNumber("targetYyyy", Integer.class);
public final StringPath title = createString("title");
public final NumberPath<Long> totalJobs = createNumber("totalJobs", Long.class);
public final StringPath uid = createString("uid");
public final DateTimePath<java.time.ZonedDateTime> updatedDttm = createDateTime("updatedDttm", java.time.ZonedDateTime.class);
public final NumberPath<Long> updatedUid = createNumber("updatedUid", Long.class);
public final ComparablePath<java.util.UUID> uuid = createComparable("uuid", java.util.UUID.class);
public QMapSheetLearnEntity(String variable) {
super(MapSheetLearnEntity.class, forVariable(variable));
}
public QMapSheetLearnEntity(Path<? extends MapSheetLearnEntity> path) {
super(path.getType(), path.getMetadata());
}
public QMapSheetLearnEntity(PathMetadata metadata) {
super(MapSheetLearnEntity.class, metadata);
}
}

View File

@@ -0,0 +1,111 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta http-equiv="x-ua-compatible" content="IE=edge"/>
<title>Test results - contextLoads()</title>
<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
<link href="../css/style.css" rel="stylesheet" type="text/css"/>
<script src="../js/report.js" type="text/javascript"></script>
</head>
<body>
<div id="content">
<div class="breadcrumbs">
<a class="breadcrumb" href="../index.html">all</a> &gt;
<a class="breadcrumb" href="index.html">com.kamcoback.cd.review.TrainingDataReviewApplicationTests</a> &gt;
<span class="breadcrumb">contextLoads()</span>
</div>
<div class="tab-container">
<ul class="tabLinks">
<li>
<a class="successGroup" href="#">Gradle Test Run :test</a>
</li>
</ul>
<div class="tab">
<h2>Gradle Test Run :test</h2>
<h1>contextLoads()</h1>
<div class="tab-container">
<ul class="tabLinks">
<li>
<a class="" href="#">summary</a>
</li>
<li>
<a class="" href="#">error output</a>
</li>
</ul>
<div class="tab">
<h2>summary</h2>
<div>
<div class="summary">
<table>
<tr>
<td>
<div class="summaryGroup">
<table>
<tr>
<td>
<div class="infoBox">
<div class="counter">1</div>
<p>tests</p>
</div>
</td>
<td>
<div class="infoBox">
<div class="counter">0</div>
<p>failures</p>
</div>
</td>
<td>
<div class="infoBox">
<div class="counter">0</div>
<p>skipped</p>
</div>
</td>
<td>
<div class="infoBox duration">
<div class="counter">0.235s</div>
<p>duration</p>
</div>
</td>
</tr>
</table>
</div>
</td>
<td>
<div class="infoBox success successRate">
<div class="percent">100%</div>
<p>successful</p>
</div>
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="tab">
<h2>error output</h2>
<span class="code">
<pre id="root-0-test-stderr-contextLoads()">Mockito is currently self-attaching to enable the inline-mock-maker. This will no longer work in future releases of the JDK. Please add Mockito as an agent to your build as described in Mockito's documentation: https://javadoc.io/doc/org.mockito/mockito-core/latest/org.mockito/org/mockito/Mockito.html#0.3
WARNING: A Java agent has been loaded dynamically (/Users/bokmin/.gradle/caches/modules-2/files-2.1/net.bytebuddy/byte-buddy-agent/1.17.8/f09415827a71be7ed621c7bd02550678f28bc81c/byte-buddy-agent-1.17.8.jar)
WARNING: If a serviceability tool is in use, please run with -XX:+EnableDynamicAgentLoading to hide this warning
WARNING: If a serviceability tool is not in use, please run with -Djdk.instrument.traceUsage for more information
WARNING: Dynamic loading of agents will be disallowed by default in a future release
</pre>
<button class="clipboard-copy-btn" aria-label="Copy to clipboard" data-copy-element-id="root-0-test-stderr-contextLoads()">Copy</button>
</span>
</div>
</div>
</div>
</div>
<div id="footer">
<p>
<div>
<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
</label>
</div>Generated by
<a href="https://www.gradle.org">Gradle 9.3.1</a> at 2026. 2. 24. 오후 7:11:40</p>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,173 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta http-equiv="x-ua-compatible" content="IE=edge"/>
<title>Test results - com.kamcoback.cd.review.TrainingDataReviewApplicationTests</title>
<link href="../css/base-style.css" rel="stylesheet" type="text/css"/>
<link href="../css/style.css" rel="stylesheet" type="text/css"/>
<script src="../js/report.js" type="text/javascript"></script>
</head>
<body>
<div id="content">
<div class="breadcrumbs">
<a class="breadcrumb" href="../index.html">all</a> &gt;
<span class="breadcrumb">com.kamcoback.cd.review.TrainingDataReviewApplicationTests</span>
</div>
<div class="tab-container">
<ul class="tabLinks">
<li>
<a class="successGroup" href="#">Gradle Test Run :test</a>
</li>
</ul>
<div class="tab">
<h2>Gradle Test Run :test</h2>
<h1>TrainingDataReviewApplicationTests</h1>
<div class="tab-container">
<ul class="tabLinks">
<li>
<a class="" href="#">summary</a>
</li>
<li>
<a class="" href="#">standard output</a>
</li>
</ul>
<div class="tab">
<h2>summary</h2>
<div>
<div class="summary">
<table>
<tr>
<td>
<div class="summaryGroup">
<table>
<tr>
<td>
<div class="infoBox">
<div class="counter">1</div>
<p>tests</p>
</div>
</td>
<td>
<div class="infoBox">
<div class="counter">0</div>
<p>failures</p>
</div>
</td>
<td>
<div class="infoBox">
<div class="counter">0</div>
<p>skipped</p>
</div>
</td>
<td>
<div class="infoBox duration">
<div class="counter">2.344s</div>
<p>duration</p>
</div>
</td>
</tr>
</table>
</div>
</td>
<td>
<div class="infoBox success successRate">
<div class="percent">100%</div>
<p>successful</p>
</div>
</td>
</tr>
</table>
</div>
<table class="test-results">
<thead>
<tr>
<th>Child</th>
<th hidden="">Name</th>
<th>Tests</th>
<th>Failures</th>
<th>Skipped</th>
<th>Duration</th>
<th>Success rate</th>
</tr>
</thead>
<tr>
<td class="success">
<a href="contextLoads().html">contextLoads()</a>
</td>
<td class="path" hidden="">contextLoads()</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td>0.235s</td>
<td class="success">100%</td>
</tr>
</table>
</div>
</div>
<div class="tab">
<h2>standard output</h2>
<span class="code">
<pre id="root-0-test-stdout-com.kamcoback.cd.review.TrainingDataReviewApplicationTests">19:11:37.735 [Test worker] INFO org.springframework.test.context.support.AnnotationConfigContextLoaderUtils -- Could not detect default configuration classes for test class [com.kamcoback.cd.review.TrainingDataReviewApplicationTests]: TrainingDataReviewApplicationTests does not declare any static, non-private, non-final, nested classes annotated with @Configuration.
19:11:37.777 [Test worker] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper -- Found @SpringBootConfiguration com.kamcoback.cd.review.TrainingDataReviewApplication for test class com.kamcoback.cd.review.TrainingDataReviewApplicationTests
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v4.0.3)
2026-02-24T19:11:37.923+09:00 INFO 37834 --- [kamco-change-detection-api] [ Test worker] k.c.r.TrainingDataReviewApplicationTests : Starting TrainingDataReviewApplicationTests using Java 21.0.9 with PID 37834 (started by bokmin in /Users/bokmin/workspace/scheduler/training_data_review/TrainingDataReview)
2026-02-24T19:11:37.923+09:00 INFO 37834 --- [kamco-change-detection-api] [ Test worker] k.c.r.TrainingDataReviewApplicationTests : The following 1 profile is active: &quot;local&quot;
2026-02-24T19:11:37.935+09:00 DEBUG 37834 --- [kamco-change-detection-api] [ Test worker] o.s.w.c.s.GenericWebApplicationContext : Refreshing org.springframework.web.context.support.GenericWebApplicationContext@70730db
2026-02-24T19:11:38.119+09:00 INFO 37834 --- [kamco-change-detection-api] [ Test worker] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
2026-02-24T19:11:38.143+09:00 INFO 37834 --- [kamco-change-detection-api] [ Test worker] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 17 ms. Found 1 JPA repository interface.
2026-02-24T19:11:38.284+09:00 INFO 37834 --- [kamco-change-detection-api] [ Test worker] org.hibernate.orm.jpa : HHH008540: Processing PersistenceUnitInfo [name: default]
2026-02-24T19:11:38.300+09:00 INFO 37834 --- [kamco-change-detection-api] [ Test worker] org.hibernate.orm.core : HHH000001: Hibernate ORM core version 7.2.4.Final
2026-02-24T19:11:38.435+09:00 INFO 37834 --- [kamco-change-detection-api] [ Test worker] o.s.o.j.p.SpringPersistenceUnitInfo : No LoadTimeWeaver setup: ignoring JPA class transformer
2026-02-24T19:11:38.447+09:00 INFO 37834 --- [kamco-change-detection-api] [ Test worker] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
2026-02-24T19:11:38.517+09:00 INFO 37834 --- [kamco-change-detection-api] [ Test worker] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@75c0cd39
2026-02-24T19:11:38.518+09:00 INFO 37834 --- [kamco-change-detection-api] [ Test worker] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
2026-02-24T19:11:38.579+09:00 INFO 37834 --- [kamco-change-detection-api] [ Test worker] org.hibernate.orm.connections.pooling : HHH10001005: Database info:
Database JDBC URL [jdbc:postgresql://192.168.2.127:15432/kamco_cds]
Database driver: PostgreSQL JDBC Driver
Database dialect: PostgreSQLDialect
Database version: 15.4
Default catalog/schema: kamco_cds/public
Autocommit mode: undefined/unknown
Isolation level: READ_COMMITTED [default READ_COMMITTED]
JDBC fetch size: none
Pool: DataSourceConnectionProvider
Minimum pool size: undefined/unknown
Maximum pool size: undefined/unknown
2026-02-24T19:11:38.998+09:00 INFO 37834 --- [kamco-change-detection-api] [ Test worker] org.hibernate.orm.core : HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration)
2026-02-24T19:11:39.000+09:00 INFO 37834 --- [kamco-change-detection-api] [ Test worker] org.hibernate.orm.jdbc.batch : HHH100501: Automatic JDBC statement batching enabled (maximum batch size 50)
2026-02-24T19:11:39.147+09:00 INFO 37834 --- [kamco-change-detection-api] [ Test worker] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2026-02-24T19:11:39.206+09:00 INFO 37834 --- [kamco-change-detection-api] [ Test worker] o.s.d.j.r.query.QueryEnhancerFactories : Hibernate is in classpath; If applicable, HQL parser will be used.
2026-02-24T19:11:39.695+09:00 DEBUG 37834 --- [kamco-change-detection-api] [ Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 3 mappings in 'requestMappingHandlerMapping'
2026-02-24T19:11:39.705+09:00 DEBUG 37834 --- [kamco-change-detection-api] [ Test worker] o.s.w.s.handler.SimpleUrlHandlerMapping : Patterns [/webjars/**, /**] in 'resourceHandlerMapping'
2026-02-24T19:11:39.717+09:00 DEBUG 37834 --- [kamco-change-detection-api] [ Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 2 RequestBodyAdvice, 1 ResponseBodyAdvice
2026-02-24T19:11:39.733+09:00 DEBUG 37834 --- [kamco-change-detection-api] [ Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 0 @ExceptionHandler, 1 ResponseBodyAdvice
2026-02-24T19:11:39.785+09:00 INFO 37834 --- [kamco-change-detection-api] [ Test worker] k.c.r.TrainingDataReviewApplicationTests : Started TrainingDataReviewApplicationTests in 1.964 seconds (process running for 2.4)
</pre>
<button class="clipboard-copy-btn" aria-label="Copy to clipboard" data-copy-element-id="root-0-test-stdout-com.kamcoback.cd.review.TrainingDataReviewApplicationTests">Copy</button>
</span>
</div>
</div>
</div>
</div>
<div id="footer">
<p>
<div>
<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
</label>
</div>Generated by
<a href="https://www.gradle.org">Gradle 9.3.1</a> at 2026. 2. 24. 오후 7:11:40</p>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,175 @@
body {
margin: 0;
padding: 0;
font-family: sans-serif;
font-size: 12pt;
}
body, a, a:visited {
color: #303030;
}
#content {
padding: 30px 50px;
}
#content h1 {
font-size: 160%;
margin-bottom: 10px;
}
#footer {
margin-top: 100px;
font-size: 80%;
white-space: nowrap;
}
#footer, #footer a {
color: #a0a0a0;
}
#line-wrapping-toggle {
vertical-align: middle;
}
#label-for-line-wrapping-toggle {
vertical-align: middle;
}
ul {
margin-left: 0;
}
h1, h2, h3 {
white-space: nowrap;
}
h2 {
font-size: 120%;
}
.tab-container .tab-container {
margin-left: 8px;
}
ul.tabLinks {
padding: 0;
margin-bottom: 0;
overflow: auto;
min-width: 800px;
width: auto;
border-bottom: solid 1px #aaa;
}
ul.tabLinks li {
float: left;
height: 100%;
list-style: none;
padding: 5px 10px;
border-radius: 7px 7px 0 0;
border: solid 1px transparent;
border-bottom: none;
margin-right: 6px;
background-color: #f0f0f0;
cursor: pointer;
}
ul.tabLinks li.deselected > a {
color: #6d6d6d;
}
ul.tabLinks li:hover {
background-color: #fafafa;
}
ul.tabLinks li.selected {
background-color: #c5f0f5;
border-color: #aaa;
}
ul.tabLinks a {
font-size: 120%;
display: block;
outline: none;
text-decoration: none;
margin: 0;
padding: 0;
}
ul.tabLinks li h2 {
margin: 0;
padding: 0;
}
div.tab {
}
div.selected {
display: block;
}
div.deselected {
display: none;
}
div.tab table {
min-width: 350px;
width: auto;
border-collapse: collapse;
}
div.tab th, div.tab table {
border-bottom: solid 1px #d0d0d0;
}
div.tab th {
text-align: left;
white-space: nowrap;
padding-left: 6em;
}
div.tab th:first-child {
padding-left: 0;
}
div.tab td {
white-space: nowrap;
padding-left: 6em;
padding-top: 5px;
padding-bottom: 5px;
}
div.tab td:first-child {
padding-left: 0;
}
div.tab td.numeric, div.tab th.numeric {
text-align: right;
}
span.code {
display: inline-block;
margin-top: 0;
margin-bottom: 1em;
}
span.code pre {
font-size: 11pt;
padding: 10px;
margin: 0;
background-color: #f7f7f7;
border: solid 1px #d0d0d0;
min-width: 700px;
width: auto;
}
span.wrapped pre {
word-wrap: break-word;
white-space: pre-wrap;
word-break: break-all;
}
label.hidden {
display: none;
}

View File

@@ -0,0 +1,154 @@
.summary {
margin-top: 30px;
margin-bottom: 40px;
}
.summary table {
border-collapse: collapse;
}
.summary td {
vertical-align: top;
}
div.tab table.test-results td {
padding-left: 1em;
}
div.tab table.test-results th {
padding-top: 0.5em;
padding-left: 1em;
}
.breadcrumbs, .breadcrumbs a {
color: #606060;
}
.infoBox {
width: 110px;
padding-top: 15px;
padding-bottom: 15px;
text-align: center;
}
.infoBox p {
margin: 0;
}
.counter, .percent {
font-size: 120%;
font-weight: bold;
margin-bottom: 8px;
}
.duration {
width: 125px;
}
.successRate, .summaryGroup {
border: solid 2px #d0d0d0;
-moz-border-radius: 10px;
border-radius: 10px;
}
.successRate {
width: 140px;
margin-left: 35px;
}
.successRate .percent {
font-size: 180%;
}
.success, .success a {
color: #008000;
}
div.success, .successRate.success {
background-color: #bbd9bb;
border-color: #008000;
}
.failures, .failures a {
color: #b60808;
}
.skipped, .skipped a {
color: #c09853;
}
div.failures, .successRate.failures {
background-color: #ecdada;
border-color: #b60808;
}
ul.linkList {
padding-left: 0;
}
ul.linkList li {
list-style: none;
margin-bottom: 5px;
}
div.metadata td:first-child {
padding-left: 5px;
}
div.metadata td {
padding-left: 5px;
}
.metadata tr.odd {
background-color: #f7f7f7;
border: solid 1px #d0d0d0;
}
.metadata tr.even {
border: solid 1px #d0d0d0;
}
.metadata th, .metadata td {
padding: 5px;
text-align: left;
}
.metadata a {
color: blue;
}
.metadata .unrenderable {
color: darkred;
}
.code {
position: relative;
}
.clipboard-copy-btn {
position: absolute;
top: 8px;
right: 8px;
padding: 4px 8px;
font-size: 0.9em;
cursor: pointer;
}
.successGroup::before {
content: "\23FA";
margin-right: 8px;
color: #008000;
display: inline-block;
}
.failureGroup::before {
content: "\2297";
margin-right: 8px;
color: #b60808;
display: inline-block;
}
.skippedGroup::before {
content: "\2296";
margin-right: 8px;
color: #c09853;
display: inline-block;
}

View File

@@ -0,0 +1,116 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta http-equiv="x-ua-compatible" content="IE=edge"/>
<title>Test results - All Results</title>
<link href="css/base-style.css" rel="stylesheet" type="text/css"/>
<link href="css/style.css" rel="stylesheet" type="text/css"/>
<script src="js/report.js" type="text/javascript"></script>
</head>
<body>
<div id="content">
<h1>All Results</h1>
<div class="tab-container">
<ul class="tabLinks">
<li>
<a class="successGroup" href="#">Gradle Test Run :test</a>
</li>
</ul>
<div class="tab">
<h2>Gradle Test Run :test</h2>
<h1>Gradle Test Run :test</h1>
<div class="tab-container">
<ul class="tabLinks">
<li>
<a class="" href="#">summary</a>
</li>
</ul>
<div class="tab">
<h2>summary</h2>
<div>
<div class="summary">
<table>
<tr>
<td>
<div class="summaryGroup">
<table>
<tr>
<td>
<div class="infoBox">
<div class="counter">1</div>
<p>tests</p>
</div>
</td>
<td>
<div class="infoBox">
<div class="counter">0</div>
<p>failures</p>
</div>
</td>
<td>
<div class="infoBox">
<div class="counter">0</div>
<p>skipped</p>
</div>
</td>
<td>
<div class="infoBox duration">
<div class="counter">2.679s</div>
<p>duration</p>
</div>
</td>
</tr>
</table>
</div>
</td>
<td>
<div class="infoBox success successRate">
<div class="percent">100%</div>
<p>successful</p>
</div>
</td>
</tr>
</table>
</div>
<table class="test-results">
<thead>
<tr>
<th>Child</th>
<th>Name</th>
<th>Tests</th>
<th>Failures</th>
<th>Skipped</th>
<th>Duration</th>
<th>Success rate</th>
</tr>
</thead>
<tr>
<td class="success">
<a href="com.kamcoback.cd.review.TrainingDataReviewApplicationTests/index.html">TrainingDataReviewApplicationTests</a>
</td>
<td class="path">com.kamcoback.cd.review.TrainingDataReviewApplicationTests</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td>2.344s</td>
<td class="success">100%</td>
</tr>
</table>
</div>
</div>
</div>
</div>
</div>
<div id="footer">
<p>
<div>
<label class="hidden" id="label-for-line-wrapping-toggle" for="line-wrapping-toggle">Wrap lines
<input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
</label>
</div>Generated by
<a href="https://www.gradle.org">Gradle 9.3.1</a> at 2026. 2. 24. 오후 7:11:40</p>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,228 @@
(function (window, document) {
"use strict";
function changeElementClass(element, classValue) {
if (element.getAttribute("className")) {
element.setAttribute("className", classValue);
} else {
element.setAttribute("class", classValue);
}
}
function getClassAttribute(element) {
if (element.getAttribute("className")) {
return element.getAttribute("className");
} else {
return element.getAttribute("class");
}
}
function addClass(element, classValue) {
changeElementClass(element, getClassAttribute(element) + " " + classValue);
}
function removeClass(element, classValue) {
changeElementClass(element, getClassAttribute(element).replace(classValue, ""));
}
function getCheckBox() {
return document.getElementById("line-wrapping-toggle");
}
function getLabelForCheckBox() {
return document.getElementById("label-for-line-wrapping-toggle");
}
function findCodeBlocks() {
const codeBlocks = [];
const tabContainers = getTabContainers();
for (let i = 0; i < tabContainers.length; i++) {
const spans = tabContainers[i].getElementsByTagName("span");
for (let i = 0; i < spans.length; ++i) {
if (spans[i].className.indexOf("code") >= 0) {
codeBlocks.push(spans[i]);
}
}
}
return codeBlocks;
}
function forAllCodeBlocks(operation) {
const codeBlocks = findCodeBlocks();
for (let i = 0; i < codeBlocks.length; ++i) {
operation(codeBlocks[i], "wrapped");
}
}
function toggleLineWrapping() {
const checkBox = getCheckBox();
if (checkBox.checked) {
forAllCodeBlocks(addClass);
} else {
forAllCodeBlocks(removeClass);
}
}
function initClipboardCopyButton() {
document.querySelectorAll(".clipboard-copy-btn").forEach((button) => {
const copyElementId = button.getAttribute("data-copy-element-id");
const elementWithCodeToSelect = document.getElementById(copyElementId);
button.addEventListener("click", () => {
const text = elementWithCodeToSelect.innerText.trim();
navigator.clipboard
.writeText(text)
.then(() => {
button.textContent = "Copied!";
setTimeout(() => {
button.textContent = "Copy";
}, 1500);
})
.catch((err) => {
alert("Failed to copy to the clipboard: '" + err.message + "'. Check JavaScript console for more details.")
console.warn("Failed to copy to the clipboard", err);
});
});
});
}
function initControls() {
if (findCodeBlocks().length > 0) {
const checkBox = getCheckBox();
const label = getLabelForCheckBox();
checkBox.onclick = toggleLineWrapping;
checkBox.checked = false;
removeClass(label, "hidden");
}
initClipboardCopyButton()
}
class TabManager {
baseId;
tabs;
titles;
headers;
constructor(baseId, tabs, titles, headers) {
this.baseId = baseId;
this.tabs = tabs;
this.titles = titles;
this.headers = headers;
this.init();
}
init() {
for (let i = 0; i < this.headers.length; i++) {
const header = this.headers[i];
header.onclick = () => {
this.select(i);
return false;
};
}
}
select(i) {
this.deselectAll();
changeElementClass(this.tabs[i], "tab selected");
changeElementClass(this.headers[i], "selected");
}
deselectAll() {
for (let i = 0; i < this.tabs.length; i++) {
changeElementClass(this.tabs[i], "tab deselected");
changeElementClass(this.headers[i], "deselected");
}
}
}
function getTabContainers() {
const tabContainers = Array.from(document.getElementsByClassName("tab-container"));
// Used by existing TabbedPageRenderer users, which have not adjusted to use TabsRenderer yet.
const legacyContainer = document.getElementById("tabs");
if (legacyContainer) {
tabContainers.push(legacyContainer);
}
return tabContainers;
}
function initTabs() {
let tabGroups = 0;
function createTab(num, container) {
const tabElems = findTabs(container);
const tabManager = new TabManager("tabs" + num, tabElems, findTitles(tabElems), findHeaders(container));
tabManager.select(0);
}
const tabContainers = getTabContainers();
for (let i = 0; i < tabContainers.length; i++) {
createTab(tabGroups, tabContainers[i]);
tabGroups++;
}
return true;
}
function findTabs(container) {
return findChildElements(container, "DIV", "tab");
}
function findHeaders(container) {
const owner = findChildElements(container, "UL", "tabLinks");
return findChildElements(owner[0], "LI", null);
}
function findTitles(tabs) {
const titles = [];
for (let i = 0; i < tabs.length; i++) {
const tab = tabs[i];
const header = findChildElements(tab, "H2", null)[0];
header.parentNode.removeChild(header);
if (header.innerText) {
titles.push(header.innerText);
} else {
titles.push(header.textContent);
}
}
return titles;
}
function findChildElements(container, name, targetClass) {
const elements = [];
const children = container.childNodes;
for (let i = 0; i < children.length; i++) {
const child = children.item(i);
if (child.nodeType === 1 && child.nodeName === name) {
if (targetClass && child.className.indexOf(targetClass) < 0) {
continue;
}
elements.push(child);
}
}
return elements;
}
// Entry point.
window.onload = function() {
initTabs();
initControls();
};
} (window, window.document));

View File

@@ -0,0 +1 @@
com.kamcoback.cd.review.TrainingDataReviewApplication

View File

@@ -0,0 +1,66 @@
spring:
config:
activate:
on-profile: dev
jpa:
show-sql: false
hibernate:
ddl-auto: validate
properties:
hibernate:
default_batch_fetch_size: 100 # ✅ 성능 - N+1 쿼리 방지
order_updates: true # ✅ 성능 - 업데이트 순서 정렬로 데드락 방지
order_inserts: true
use_sql_comments: true # ⚠️ 선택 - SQL에 주석 추가 (디버깅용)
format_sql: true # ⚠️ 선택 - SQL 포맷팅 (가독성)
jdbc:
batch_size: 1000 # ✅ 추가 (JDBC batch)
open-in-view: false
mvc:
async:
request-timeout: 300s # 5분 (예: 30s, 120s, 10m 등도 가능)
datasource:
url: jdbc:postgresql://192.168.2.127:15432/kamco_cds
#url: jdbc:postgresql://localhost:15432/kamco_cds
username: kamco_cds
password: kamco_cds_Q!W@E#R$
hikari:
minimum-idle: 10
maximum-pool-size: 20
connection-timeout: 60000 # 60초 연결 타임아웃
idle-timeout: 300000 # 5분 유휴 타임아웃
max-lifetime: 1800000 # 30분 최대 수명
leak-detection-threshold: 60000 # 연결 누수 감지
transaction:
default-timeout: 300 # 5분 트랜잭션 타임아웃
data:
redis:
host: 192.168.2.109
port: 6379
password: kamco
servlet:
multipart:
enabled: true
max-file-size: 4GB
max-request-size: 4GB
file-size-threshold: 10MB
server:
tomcat:
max-swallow-size: 4GB
max-http-form-post-size: 4GB
logging:
level:
root: INFO
org.springframework.web: DEBUG
training-data:
geojson-dir: /kamco-nfs/dataset/request/

View File

@@ -0,0 +1,51 @@
spring:
config:
activate:
on-profile: local
jpa:
show-sql: false
hibernate:
ddl-auto: update # 로컬만 완화(시킬려면 update으로 변경)
properties:
hibernate:
default_batch_fetch_size: 100 # ✅ 성능 - N+1 쿼리 방지
order_updates: true # ✅ 성능 - 업데이트 순서 정렬로 데드락 방지
use_sql_comments: true # ⚠️ 선택 - SQL에 주석 추가 (디버깅용)
format_sql: true # ⚠️ 선택 - SQL 포맷팅 (가독성)
open-in-view: false
datasource:
url: jdbc:postgresql://192.168.2.127:15432/kamco_cds
#url: jdbc:postgresql://localhost:5432/kamco_cds # 로컬호스트
username: kamco_cds
password: kamco_cds_Q!W@E#R$
hikari:
minimum-idle: 1
maximum-pool-size: 5
data:
redis:
host: 192.168.2.109
port: 6379
password: kamco
servlet:
multipart:
enabled: true
max-file-size: 4GB
max-request-size: 4GB
file-size-threshold: 10MB
server:
tomcat:
max-swallow-size: 4GB
max-http-form-post-size: 4GB
logging:
level:
org.hibernate.SQL: debug
org.hibernate.orm.jdbc.bind: trace
training-data:
geojson-dir: /Users/bokmin/kamco-nfs/model_output/labeling/

View File

@@ -0,0 +1,64 @@
spring:
config:
activate:
on-profile: prod
jpa:
show-sql: true
hibernate:
ddl-auto: validate
properties:
hibernate:
default_batch_fetch_size: 100 # ✅ 성능 - N+1 쿼리 방지
order_updates: true # ✅ 성능 - 업데이트 순서 정렬로 데드락 방지
order_inserts: true
use_sql_comments: true # ⚠️ 선택 - SQL에 주석 추가 (디버깅용)
format_sql: true # ⚠️ 선택 - SQL 포맷팅 (가독성)
jdbc:
batch_size: 1000 # ✅ 추가 (JDBC batch)
open-in-view: false
mvc:
async:
request-timeout: 300s # 5분 (예: 30s, 120s, 10m 등도 가능)
datasource:
url: jdbc:postgresql://127.0.0.1:15432/kamco_cds
#url: jdbc:postgresql://localhost:15432/kamco_cds
username: kamco_cds
password: kamco_cds_Q!W@E#R$
hikari:
minimum-idle: 10
maximum-pool-size: 20
connection-timeout: 60000 # 60초 연결 타임아웃
idle-timeout: 300000 # 5분 유휴 타임아웃
max-lifetime: 1800000 # 30분 최대 수명
leak-detection-threshold: 60000 # 연결 누수 감지
transaction:
default-timeout: 300 # 5분 트랜잭션 타임아웃
data:
redis:
host: 127.0.0.1
port: 16379
password: kamco
servlet:
multipart:
enabled: true
max-file-size: 4GB
max-request-size: 4GB
file-size-threshold: 10MB
server:
tomcat:
max-swallow-size: 4GB
max-http-form-post-size: 4GB
logging:
level:
root: INFO
org.springframework.web: DEBUG
training-data:
geojson-dir: /kamco-nfs/dataset/request/

View File

@@ -0,0 +1,40 @@
server:
port: 8080
spring:
application:
name: kamco-change-detection-api
profiles:
active: local # 사용할 프로파일 지정 (ex. dev, prod, test)
datasource:
driver-class-name: org.postgresql.Driver
hikari:
jdbc:
time_zone: UTC
batch_size: 50
# 권장 설정
minimum-idle: 2
maximum-pool-size: 2
connection-timeout: 20000
idle-timeout: 300000
max-lifetime: 1800000
leak-detection-threshold: 60000
data:
redis:
host: localhost
port: 6379
password:
jpa:
hibernate:
ddl-auto: update # 테이블이 없으면 생성, 있으면 업데이트
properties:
hibernate:
jdbc:
batch_size: 50
default_batch_fetch_size: 100
logging:
level:
root: INFO
org.springframework.web: DEBUG

View File

@@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8"?>
<testsuite name="com.kamcoback.cd.review.TrainingDataReviewApplicationTests" tests="1" skipped="0" failures="0" errors="0" timestamp="2026-02-24T10:11:37.681Z" hostname="gimbogmins-MacBook-Pro.local" time="2.343">
<properties/>
<testcase name="contextLoads()" classname="com.kamcoback.cd.review.TrainingDataReviewApplicationTests" time="0.235"/>
<system-out><![CDATA[19:11:37.735 [Test worker] INFO org.springframework.test.context.support.AnnotationConfigContextLoaderUtils -- Could not detect default configuration classes for test class [com.kamcoback.cd.review.TrainingDataReviewApplicationTests]: TrainingDataReviewApplicationTests does not declare any static, non-private, non-final, nested classes annotated with @Configuration.
19:11:37.777 [Test worker] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper -- Found @SpringBootConfiguration com.kamcoback.cd.review.TrainingDataReviewApplication for test class com.kamcoback.cd.review.TrainingDataReviewApplicationTests
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v4.0.3)
2026-02-24T19:11:37.923+09:00 INFO 37834 --- [kamco-change-detection-api] [ Test worker] k.c.r.TrainingDataReviewApplicationTests : Starting TrainingDataReviewApplicationTests using Java 21.0.9 with PID 37834 (started by bokmin in /Users/bokmin/workspace/scheduler/training_data_review/TrainingDataReview)
2026-02-24T19:11:37.923+09:00 INFO 37834 --- [kamco-change-detection-api] [ Test worker] k.c.r.TrainingDataReviewApplicationTests : The following 1 profile is active: "local"
2026-02-24T19:11:37.935+09:00 DEBUG 37834 --- [kamco-change-detection-api] [ Test worker] o.s.w.c.s.GenericWebApplicationContext : Refreshing org.springframework.web.context.support.GenericWebApplicationContext@70730db
2026-02-24T19:11:38.119+09:00 INFO 37834 --- [kamco-change-detection-api] [ Test worker] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
2026-02-24T19:11:38.143+09:00 INFO 37834 --- [kamco-change-detection-api] [ Test worker] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 17 ms. Found 1 JPA repository interface.
2026-02-24T19:11:38.284+09:00 INFO 37834 --- [kamco-change-detection-api] [ Test worker] org.hibernate.orm.jpa : HHH008540: Processing PersistenceUnitInfo [name: default]
2026-02-24T19:11:38.300+09:00 INFO 37834 --- [kamco-change-detection-api] [ Test worker] org.hibernate.orm.core : HHH000001: Hibernate ORM core version 7.2.4.Final
2026-02-24T19:11:38.435+09:00 INFO 37834 --- [kamco-change-detection-api] [ Test worker] o.s.o.j.p.SpringPersistenceUnitInfo : No LoadTimeWeaver setup: ignoring JPA class transformer
2026-02-24T19:11:38.447+09:00 INFO 37834 --- [kamco-change-detection-api] [ Test worker] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
2026-02-24T19:11:38.517+09:00 INFO 37834 --- [kamco-change-detection-api] [ Test worker] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@75c0cd39
2026-02-24T19:11:38.518+09:00 INFO 37834 --- [kamco-change-detection-api] [ Test worker] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
2026-02-24T19:11:38.579+09:00 INFO 37834 --- [kamco-change-detection-api] [ Test worker] org.hibernate.orm.connections.pooling : HHH10001005: Database info:
Database JDBC URL [jdbc:postgresql://192.168.2.127:15432/kamco_cds]
Database driver: PostgreSQL JDBC Driver
Database dialect: PostgreSQLDialect
Database version: 15.4
Default catalog/schema: kamco_cds/public
Autocommit mode: undefined/unknown
Isolation level: READ_COMMITTED [default READ_COMMITTED]
JDBC fetch size: none
Pool: DataSourceConnectionProvider
Minimum pool size: undefined/unknown
Maximum pool size: undefined/unknown
2026-02-24T19:11:38.998+09:00 INFO 37834 --- [kamco-change-detection-api] [ Test worker] org.hibernate.orm.core : HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration)
2026-02-24T19:11:39.000+09:00 INFO 37834 --- [kamco-change-detection-api] [ Test worker] org.hibernate.orm.jdbc.batch : HHH100501: Automatic JDBC statement batching enabled (maximum batch size 50)
2026-02-24T19:11:39.147+09:00 INFO 37834 --- [kamco-change-detection-api] [ Test worker] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2026-02-24T19:11:39.206+09:00 INFO 37834 --- [kamco-change-detection-api] [ Test worker] o.s.d.j.r.query.QueryEnhancerFactories : Hibernate is in classpath; If applicable, HQL parser will be used.
2026-02-24T19:11:39.695+09:00 DEBUG 37834 --- [kamco-change-detection-api] [ Test worker] s.w.s.m.m.a.RequestMappingHandlerMapping : 3 mappings in 'requestMappingHandlerMapping'
2026-02-24T19:11:39.705+09:00 DEBUG 37834 --- [kamco-change-detection-api] [ Test worker] o.s.w.s.handler.SimpleUrlHandlerMapping : Patterns [/webjars/**, /**] in 'resourceHandlerMapping'
2026-02-24T19:11:39.717+09:00 DEBUG 37834 --- [kamco-change-detection-api] [ Test worker] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 2 RequestBodyAdvice, 1 ResponseBodyAdvice
2026-02-24T19:11:39.733+09:00 DEBUG 37834 --- [kamco-change-detection-api] [ Test worker] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 0 @ExceptionHandler, 1 ResponseBodyAdvice
2026-02-24T19:11:39.785+09:00 INFO 37834 --- [kamco-change-detection-api] [ Test worker] k.c.r.TrainingDataReviewApplicationTests : Started TrainingDataReviewApplicationTests in 1.964 seconds (process running for 2.4)
]]></system-out>
<system-err><![CDATA[Mockito is currently self-attaching to enable the inline-mock-maker. This will no longer work in future releases of the JDK. Please add Mockito as an agent to your build as described in Mockito's documentation: https://javadoc.io/doc/org.mockito/mockito-core/latest/org.mockito/org/mockito/Mockito.html#0.3
WARNING: A Java agent has been loaded dynamically (/Users/bokmin/.gradle/caches/modules-2/files-2.1/net.bytebuddy/byte-buddy-agent/1.17.8/f09415827a71be7ed621c7bd02550678f28bc81c/byte-buddy-agent-1.17.8.jar)
WARNING: If a serviceability tool is in use, please run with -XX:+EnableDynamicAgentLoading to hide this warning
WARNING: If a serviceability tool is not in use, please run with -Djdk.instrument.traceUsage for more information
WARNING: Dynamic loading of agents will be disallowed by default in a future release
]]></system-err>
</testsuite>

View File

@@ -0,0 +1,12 @@
Manifest-Version: 1.0
Main-Class: org.springframework.boot.loader.launch.JarLauncher
Start-Class: com.kamcoback.cd.review.TrainingDataReviewApplication
Spring-Boot-Version: 4.0.3
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/
Spring-Boot-Classpath-Index: BOOT-INF/classpath.idx
Spring-Boot-Layers-Index: BOOT-INF/layers.idx
Build-Jdk-Spec: 21
Implementation-Title: TrainingDataReview
Implementation-Version: 0.0.1-SNAPSHOT

View File

@@ -0,0 +1,2 @@
Manifest-Version: 1.0