๐ ํ์ฌ ๋ฌธ์ ์ --- - ์ด์ ๋ฌธ์ ํ(ํ์ฑ 192๋ฌธํญ)์ด ์ ๋ถ 2026๋ 4์์ ๋ง๋ค์ด์ก๋ค. 2026๋ 61ยท62ํ์ ์ถ์ ๊ฒฝํฅ์ ๋ฐ๋ผ๊ฐ์ง ๋ชปํ๋ค. - 61ํ ํฉ๊ฒฉ๋ฅ ์ 26%์๋ค. - ์ต๊ทผ ์ํ์ 2๊ณผ๋ชฉ 40๋ฌธํญ ์ค 30์ฌ ๋ฌธํญ์ด "๋ฐ์ดํฐ + SQL์ ์ฃผ๊ณ ๊ฒฐ๊ณผ ํ ์ยท๊ฐยท์ค๋ฅ๋ฅผ ์ถ์ "ํ๋ ํํ๋ค. - ๊ฐ์ ์ฃผ์ ์ ๊ฐ๋ ์ค๋ช ํ ๋ฌธ์ ๊ฐ 2~4๊ฐ์ฉ ์ค๋ณต๋ผ ์๋ค. ์ํ ๋ฒ์ ๋ฐ ๋ฌธ์ ๋ ์๋ค(`WITH RECURSIVE`). - ์ต๊ทผ ๋งค ํ์ฐจ ๋์ค๋ ์ ํ์ด 0๋ฌธํญ์ด๋ค. - ์ ๊ท์(REGEXP_*), ROWNUM๊ณผ Top-N ์คํ ์์ ํจ์ - MERGEยท๋ค์ค INSERT FIRSTยทROLE ์ค์ฒฉ ์ ํ ๊ฒฐ๊ณผ ์ถ์ - 1๊ณผ๋ชฉ ์ํฉํ - Oracle ์ ์ฉ ๋ฌธ๋ฒ(ROWNUM, CONNECT BY, (+), MERGE ๋ฑ) ๋ฌธ์ ๋ ์๋๋ฐ์ค(MariaDB/PostgreSQL)์์ ๊ฒ์ฆ๋์ง ์์ ๊ฐ๋ ํ์ด ๋๋ค. - ์ค์ ๋ชจ๋์์๋ AI๊ฐ ๋งค๋ฒ ๋ณด๊ธฐ๋ฅผ ์๋ก ๋ง๋ค๊ธฐ ๋๋ฌธ์ ๊ณ์ฐํ ๋ฌธ์ ์์ ์ ๋ต์ด ํ์ด์ง๋ค. - ์ค์ ์ฌ๋ก: ๋ฌธ์ `8eefc3e3`(CONNECT BY + WHERE COUNT)์ AI ๋ณด๊ธฐ ์ธํธ๊ฐ ์ ๋ต์ 3์ผ๋ก ํ์ํ๋ค. ์ค์ ์ ๋ต์ 2์ด๊ณ , ํด์ค๋ ์๋ก ๋ชจ์๋๋ค. - ๋ณด๊ธฐ๋ฅผ ๊ณ ์ ํ๋ `CURATED_ONLY` ์ ์ฑ ์ ์์ง ๊ตฌํ๋์ง ์์๋ค. ๐ ๏ธ ํด๊ฒฐ ๋ฐฉ์ / ์ ์ ๊ธฐ๋ฅ --- - ์ถ์ ๊ฒฝํฅ ์กฐ์ฌ(์๋ฃ) - 58~62ํ ๋ณต์ ๋ฌธํญํ, ๋ค์ด๋ฒ ์นดํ ํ๊ธฐยท์ ์ ๋ถ์์ ์์งํ๋ค. - ์ด๋ฅผ ๋ฐํ์ผ๋ก ์ ํ ๋น๋, 2026 ์คํ, ์์ฐ ํ ํ๋ฆฟ์ ์ ๋ฆฌํ๋ค. - ๋ฌธ์ ํ ์ ๋ฆฌ(์๋ฃ) - ์ค๋ณต 21๋ฌธํญ๊ณผ ๋ฒ์ ๋ฐ 1๋ฌธํญ, ์ด 22๋ฌธํญ์ ๋นํ์ฑํํ๋ค(์ญ์ ์๋, ๋ณต๊ตฌ ๊ฐ๋ฅ). ํ์ฑ ๋ฌธ์ ๋ 192์์ 170์ด ๋๋ค. - ๋ณด๊ธฐ ๊ณ ์ - `CURATED_ONLY` ์ ์ฑ ์ ๊ตฌํํด, ๊ด๋ฆฌ์๊ฐ ๊ฒ์ฆํ 4๊ฐ ๋ณด๊ธฐ๋ฅผ ์ค์ ยท์ฐ์ต ๋ชจ๋ ๋ชจ๋ ๊ทธ๋๋ก ์ถ์ ํ๋ค. - ๊ฒ์ฆ ํ๋ค์ค - ๋ก์ปฌ Oracle ์ปจํ ์ด๋์์ ๋ฌธ์ ์ ์ ๋ต SQL์ ์ค์ ๋ก ์คํํ๋ค. - ๋ณด๊ธฐ์ ์ ๋ต ํ์๊ฐ ์คํ ๊ฒฐ๊ณผ์ ์ผ์นํ๋์ง ํ์ธํ ๋ค์๋ง ๋ฑ๋กํ๋ค. - ๋ฌธ์ ์์ฐ - ๋น ์ ํ๋ถํฐ 2026 ๊ฒฝํฅ ํ ํ๋ฆฟ(๊ฐ๋ 2~3๊ฐ ๊ฒฐํฉ, ๊ฒฐ๊ณผ ์ถ์ ํ ์ค์ฌ)์ผ๋ก ์ ๋ฌธ์ ๋ฅผ ๋ง๋ ๋ค. - ์์ง ์๋ฃ ๋ณดํธ - ์กฐ์ฌ ์๋ฃ๋ ์ฑ ์์ฐ์ด๋ผ ์๋ฌธ์ ๋ก์ปฌ์๋ง ๋๋ค(gitignore). - ๋ ํฌ์๋ AES-256 ์ํธํ๋ณธ๋ง ์ปค๋ฐํ๋ค. ์ปค๋ฐํ ๋ ์๋์ผ๋ก ์ํธํํ๋ค. โ๏ธ ์์ ๋ด์ฉ --- - ์ด์ ๋นํ์ฑํ 22๋ฌธํญ ๋ฐ์ (์๋ฃ) - ์ถ์ ๊ฒฝํฅ ์กฐ์ฌ ๋ฌธ์, ๋ฌธ์ ํ ๊ฐ์ฌ ๋ฌธ์, ์์ง ์ ์ฐจ ๋ฌธ์ ์์ฑ (์๋ฃ, ์ํธํ ๋ณด๊ด) - ์์ง ์๋ฃ ์ํธํ ์คํฌ๋ฆฝํธยทpre-commit hookยทํค ๋ฐฑ์ (GitHub Secret, ์๋๋ก์ง ๋ฐฑ์ ) - `CURATED_ONLY` ๋ณด๊ธฐ ๊ณ ์ ์ ์ฑ ๊ตฌํ (์๋ฒ) - ๋ก์ปฌ Oracle ๊ฒ์ฆ ํ๋ค์ค ๊ตฌ์ฑ - ๋น ์ ํ ์ฐ์ ๋ฌธ์ ์์ฐ ๋ฐ ๋ฑ๋ก ๐โโ๏ธ ๋ด๋น์ --- - ๋ฐฑ์๋: Cassiiopeia
Activity
Cassiiopeia commentedon Oct 16, 2026
Guide by ProjectOps
๋ธ๋์น
์ปค๋ฐ ๋ฉ์์ง
๐ก ์ ์ด ๋ธ๋์น๋ช ์ ์จ์ผ ํ๋์?
์ด ๋ธ๋์น๋ช ํ์(
YYYYMMDD_#์ด์๋ฒํธ_์ ๋ชฉ)์ ์ฐ๋ฉด ์๋ ๊ธฐ๋ฅ์ด ์๋์ผ๋ก ์ฐ๋๋ฉ๋๋ค:@projectops app build๋๊ธ ๋น๋ โ ์ด ๋๊ธ์ ๋ธ๋์น๋ฅผ ์๋ ์ธ์ํด์ ๋น๋#์ด์๋ฒํธ๋ก ์ด์ ์ ๋ณด๋ฅผ ๋น๋ ๋ ธํธ์ ์๋ ํฌํจ#์ด์๋ฒํธ๋ก ์ด์ ์ ๋ณด๋ฅผ ์๋ ์ฐ๋๋ค๋ฅธ ํ์์ ๋ธ๋์น๋ช ์ ์ฐ๋ฉด ์ ์๋ํ๊ฐ ๋์ํ์ง ์์ต๋๋ค.
main ๋ณํฉ: #511 CURATED_ONLY ๋ณด๊ธฐ ๊ณ ์ ๋ฐฐํฌ
Cassiiopeia commentedon Oct 16, 2026
๊ฐ์
2026๋ SQLD ์ถ์ ๊ฒฝํฅ(58~62ํ)์ ๋ง์ถฐ ๋ฌธ์ ํ์ ์ ๋ฆฌํ๊ณ , Oracle ์ ์ฉ ๋ฌธ๋ฒ ๋ฌธ์ ๋ฅผ ์ ๋ต ์ค๋ฅ ์์ด ์ถ์ ํ๋ ๊ตฌ์กฐ๋ฅผ ๋ง๋ค์๋ค.
๊ตฌ์กฐ๋ ์ธ ๋ถ๋ถ์ผ๋ก ๋์ด ์๋ค.
CURATED_ONLY์ ์ฑ๋ฐฐํฌ ํ ์ด์์์ ๋ค์์ ๋ฐ์ํ๋ค.
๋ฐฐ๊ฒฝ
8eefc3e3(CONNECT BY + WHERE COUNT)์ AI ๋ณด๊ธฐ๊ฐ ์ ๋ต์ 3์ผ๋ก ํ์ํ๋ค. ์ค์ ์ ๋ต์ 2์ด๊ณ , ํด์ค๋ ์๋ก ๋ชจ์๋๋ค.๋ณ๊ฒฝ ์ฌํญ
๋ณด๊ธฐ ๊ณ ์ ์ ์ฑ (์๋ฒ)
ChoiceSetResolverCURATED_ONLY๋ฉด ์คํ ๋ชจ๋๋ณด๋ค ๋จผ์ ๋ถ๊ธฐํ๋ค.ADMIN_SEEDยทADMIN_CURATED, OK)๋ฅผ ์ค์ ยท์ฐ์ต ๋ชจ๋ ๊ทธ๋๋ก ์ถ์ ํ๊ณ , AI ํธ์ถ์ด๋ ํ๋ฆฌํ์น ์๋น๋ ํ์ง ์๋๋ค.ChoiceOrderShufflerยทQuestionServicechoiceKey)์ ๊ทธ๋๋ก๋ค.PrefetchService: ๋ค์ ๋ฌธ์ ๊ฐ CURATED_ONLY๋ฉด AI ํ๋ฆฌํ์น๋ฅผ ๊ฑด๋๋ด๋ค.CuratedChoiceSetWriterADMIN_CURATED์ธํธ๋ฅผ ์ ์ฅํ๋ค.ChoiceExplanationServiceยท๋ฐฑํ ์ฟผ๋ฆฌ์ผ๊ด ๊ฐ์ ธ์ค๊ธฐยท๋ด๋ณด๋ด๊ธฐ
QuestionExportDto์choices๋ฅผ ์ถ๊ฐํ๋ค. ๋น์ด ์์ด๋ ๋๋ฏ๋ก ์ ํ์ผ๊ณผ ํธํ๋๋ค.CuratedChoiceValidator๊ฐ ๊ณ ์ ๋ณด๊ธฐ ๊ท์น์ ๊ฒ์ฌํ๋ค.CURATED_ONLY๋ฅผ ์ฐจ๋จํ๋ค(์ต์ ์ ๊ฑฐ + 400). ๋ณด๊ธฐ ์ ๋ ฅ ์์ด ๋ง๋ค์ด์ง๋ ๊ฒ์ ๋ง๊ธฐ ์ํด์๋ค.๊ฒ์ฆ ํ๋ค์ค (
tools/sqld-question-harness/)์กฐ์ฌ ์๋ฃ ๋ณดํธ
docs/sqld-research/์ ๋๊ณ gitignore๋ก ์ ์ธํ๋ค. ๋ ํฌ์๋docs/sqld-research-encrypted/์ AES-256 ์ํธ๋ณธ๋ง ์ปค๋ฐํ๋ค..env์ ๋๊ณ GitHub Secret๊ณผ ์๋๋ก์ง ๋ฐฑ์ ์ํฌํ๋ก์๋ ๋ฑ๋กํ๋ค.flowchart TD A[๋ฌธ์ YAML ์์ฑ] --> B[ํ๋ค์ค: Oracle ๊ฒฉ๋ฆฌ ์คํค๋ง ์คํ] B --> C{์ ๋ตยท์ค๋ต ๋ณด๊ธฐ ๊ธฐ๋๊ฐ ๋์กฐ} C -->|๋ถ์ผ์น| D[FAIL: ์์ ํ ์ฌ๊ฒ์ฆ] C -->|ํต๊ณผ| E[๊ฐ์ ธ์ค๊ธฐ JSON ์์ฑ] E --> F[๊ด๋ฆฌ์ import/validate] F --> G{๊ณ ์ ๋ณด๊ธฐ ๊ท์น ๊ฒ์ฌ} G -->|์๋ฐ| H[ํญ๋ชฉ ๊ฑด๋๋] G -->|ํต๊ณผ| I[ADMIN_CURATED ์ธํธ ์ ์ฅ] I --> J[์ฌ์ฉ์ ํ์ด ์์ฒญ] J --> K{์ ์ฑ CURATED_ONLY?} K -->|์| L[๊ณ ์ ์ธํธ ๋ฐํ, ์์ ์๊ธฐ, AI ํธ์ถ ์์] K -->|์๋์ค| M[๊ธฐ์กด AI ๊ฒฝ๋ก]๊ฒ์ฆ
ChoiceSetResolverTest5,ChoiceOrderShufflerTest3,QuestionCuratedSolvingTest3CuratedChoiceSetWriterTest2,CuratedChoiceValidatorTest10,QuestionImportCuratedTest3PrefetchServiceTest2,ChoiceExplanationCuratedTest2ArchitectureRuleTest5์QuestionDetailAnswerExposureTest2๋ ํต๊ณผํ๋ค.@SpringBootTest6์ข ์ ์คํจํ๋ค. ๋ก์ปฌ ์ค์ (์ํธํ ํค, Firebase)์ด ์์ด ์ปจํ ์คํธ๋ฅผ ๋์ฐ์ง ๋ชปํ ๊ฒ์ด๊ณ , ์ด๋ฒ ๋ณ๊ฒฝ๊ณผ๋ ๊ด๊ณ์๋ค.Started PassqlApplication)์ ํ์ธํ๋ค. ์์ ์ ์ฟผ๋ฆฌ ๊ฒ์ฆ์ ํต๊ณผํ๋ค๋ ๋ป์ด๋ค.8eefc3e3๊ณผ ๊ฐ์ "์ ๋ต ํ์ ํ๋ฆผ" ๋ฌธ์ ๋ฅผ ์ผ๋ถ๋ฌ ๋ฃ์ด FAIL๋ก ๊ฑธ๋ฌ์ง๋ ๊ฒ์ ํ์ธํ๋ค.PROJECT-SPRING-PASSQL-CI)์ ๋ฐฐํฌ(PROJECT-SPRING-SYNOLOGY-CICD) ๋ชจ๋ ์ฑ๊ณตํ๋ค.์ด์ ๋ฐ์ (์ค์ธก)
WITH RECURSIVE๋ฒ์ ๋ฐ 1, ์ ๋ต ์ค๋ฅ8eefc3e31. ์ญ์ ๊ฐ ์๋๋ผ ํ๋๊ทธ๋ง ๊บผ์ ๋ณต๊ตฌํ ์ ์๋ค.created 23. ๊ณ์ธตํ, NOT IN๊ณผ NULL, ROWNUM ์คํ ์์, ์ ๊ท์, ํ๋ณํ ๊ฒฐํฉ, ๋น ๊ฒฐ๊ณผ ์ง๊ณ, MERGE DELETE, INSERT FIRST, SAVEPOINT, GROUPING SETSยทCUBE, ์๋์ฐ ํจ์, ์งํฉ ์ฐ์ฐ, (+) ์กฐ์ธ, CTAS ์ ์ฝ ๋ฑ์ ๋ค๋ฃฌ๋ค.ff4f9530์ADMIN_CURATED์ธํธ๋ก ์ ์ฅ๋๊ณ ์ ๋ต์ 2๋ค./actuator/healthUP, ๋ฑ๋ก ํ๋ฉด์์CURATED_ONLY์ต์ ์ด ๋น ์ง ๊ฒ์ ํ์ธํ๋ค.์ฃผ์์ฌํญ
QuestionService.isCuratedChoiceSetํ ๊ณณ์์ ํ๋ค.ChoiceExplanationService์ ๊ณ ์ ์ธํธ ๋ถ๊ธฐ๋ฅผ ์์ ๋ฉด, ํด์ค ์์ฒญ ํ ๋ฒ์ ๊ฒ์ฆ ํด์ค์ด AI ํด์ค๋ก ์๊ตฌํ ๋ฎ์ด์จ์ง๋ค.CONCEPT_ONLY+CURATED_ONLY๋ก ๋๊ฐ๋ค.deploy๋ธ๋์น์ main์--no-ff๋ณํฉํด์ pushํ๋ค.๋จ์ ์์
choiceKey๊ธ์๋ก ๊ทธ๋ฆฐ๋ค. ๊ทธ๋์ ์์๋ฅผ ์์ผ๋ฉด C, A, D, B์ฒ๋ผ ๋ณด์ธ๋ค. ์ฑ์ ๋ฐ๊ฟ์ผ ํ๊ณ ์คํ ์ด ๋ฐฐํฌ๊ฐ ํ์ํ๋ฏ๋ก ํ์ ์ด์๋ก ๋ถ๋ฆฌํ๋ค.SQLD 2026 ์ถ์ ๊ฒฝํฅ ๋ฐ์: ๋ฌธ์ ํ ์ ๋ฆฌ, ๋ณด๊ธฐ ๊ณ ์ , ์์ง ์๋ฃ ์ํธํ : docs : 3์ฐจ ์์ฐ ๋ฌธ์ ์๋ณธ(PIโฆ
Cassiiopeia commentedon Oct 17, 2026
3์ฐจ ์์ฐ ๋ฑ๋ก
import/validate14/14,created 1463a218ab, ์๋ฒ ์ฝ๋ ๋ณ๊ฒฝ ์์)๋จ์ ํ์ธ
[resolver] curated HIT, AI ํธ์ถ ์์)๋ก ์ค์ธก ์์ Cassiiopeia commentedon Oct 17, 2026
์ฌ์ฉ์ ํ์ด ์ค์ธก (์ด์๊ณผ ๊ฐ์ main ์ฝ๋, ๋ก์ปฌ PostgreSQL)
์ด์ ์ฌ์ฉ์ ๋ก๊ทธ์ธ์ ์์ ๋ก๊ทธ์ธ๋ง ์์ด ์๋ํ๊ฐ ๋งํ ์๋ค. ๊ทธ๋์ ๊ฐ์ ์ฝ๋๋ฅผ ๋ก์ปฌ์์ ๋์ฐ๊ณ , ํ ์คํธ ํ์ ํ ํฐ์ผ๋ก ์ค์ ์ฌ์ฉ์ API๋ฅผ ํธ์ถํ๋ค. AI ์๋ฒ ์ฃผ์๋ ์ฐ๊ฒฐ ๋ถ๊ฐ๋ก ๋์ด, AI ํธ์ถ์ด ์์ผ๋ฉด ์คํจ๋ก ๋๋ฌ๋๊ฒ ํ๋ค.
GET /api/questions/{uuid}ADMIN_CURATED1๊ฐ, ์ ๋ต ์ฌ๋ถ ์จ๊น, ์๋ฒ 1..4[resolver] curated HIT3ํ, AI ๋ณด๊ธฐ ์์ฑ ๊ฒฝ๋ก 0ํ, ๊ณ ์ ์ธํธ ๋๋ฝ ๋์ฒด 0ํindex-question)๋ฟ์ด๊ณ , ๋ณด๊ธฐ ์์ฑ ํธ์ถ์ ์์auth_provider=ANONYMOUS๊ฐ ํ์ฌ enum์ ์์. ๊ธฐ๋ฅ๊ณผ๋ ๋ฌด๊ดํ๋ค.๋ง๋ฌด๋ฆฌ
SQLD 2026 ์ถ์ ๊ฒฝํฅ ๋ฐ์: ๋ฌธ์ ํ ์ ๋ฆฌ, ๋ณด๊ธฐ ๊ณ ์ , ์์ง ์๋ฃ ์ํธํ : fix : member.auth_proโฆ
main ๋ณํฉ: #511 auth_provider ๊ธฐ๋ณธ๊ฐ ์ ๊ฑฐ, #512 ์ฑ ๋ณด๊ธฐ ๋ผ๋ฒจ
Cassiiopeia commentedon Oct 17, 2026
ํ์ ์์ : member.auth_provider ๊ธฐ๋ณธ๊ฐ ์ ๊ฑฐ (
995bc55e, ๋ฐฐํฌ ์๋ฃ)'ANONYMOUS'๊ฐ ๋จ์ ์์๋๋ฐ, V0_0_155 ์์ ANONYMOUS ํ์์ ์ ๋ฆฌํ ๋ค AuthProvider enum ์์๋ ๋น ์ก๋ค. ๊ณต๊ธ์ ์์ด ๋ค์ด์จ ํ์ด ์์ผ๋ฉด ์กฐํ ์ enum ๋ณํ ์ค๋ฅ(500)๊ฐ ๋๋ค(๋ก์ปฌ E2E ํ ์คํธ ๋ฐ์ดํฐ์์ ์ฌํ).V0_10_52__drop_member_auth_provider_default.sql(DROP DEFAULT, ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์์). ์ด์ ๊ณต๊ธ์ ์๋ ์ ์ฅ์ ์ ์ฅ ์์ ์ NOT NULL ์๋ฐ์ผ๋ก ๋ฐ๋ก ์คํจํ๋ค.Successfully applied 1 migration ... v0.10.52,Started PassqlApplication,/actuator/healthUP