[AI Run] 자연어 요청과 추가 질문 화면 연동 - #230

Closed
hywznn wants to merge 4 commits into
mainfrom
feat/229-ai-run-integration
Closed

[AI Run] 자연어 요청과 추가 질문 화면 연동#230
hywznn wants to merge 4 commits into
mainfrom
feat/229-ai-run-integration

Conversation

@hywznn

@hywznnhywznn commented Aug 4, 2026

Copy link
Copy Markdown
Member

왜 필요한가요?

업무 생성 화면은 자연어 입력 UI가 있지만 기존에는 정적 검토 화면으로 이동할 뿐 Server에 분석을 요청하지 않았습니다.

Refs #229
Depends on fowoco/server#82
Depends on fowoco/ai#6

무엇이 바뀌나요?

  • POST /api/v1/ai-runs로 사용자가 입력한 발화문 원문을 전송합니다.
  • 빠른 선택 버튼은 예시 문구를 입력창에 채우기만 하며 Client에서 Intent 코드를 붙이지 않습니다.
  • 사용자가 예시 문구를 수정하면 수정된 문장을 그대로 Server에 전달하고, AI가 detectedIntent를 판단합니다.
  • 같은 클릭의 중복 생성을 막기 위해 Idempotency-Key를 전달합니다.
  • NEEDS_INFO 질문을 표시하고 /answers로 답변합니다.
  • REVIEW_REQUIRED 후보와 Runtime 실패 상태를 표시합니다.
  • QUEUED/RUNNING 상태는 GET API로 다시 조회합니다.
  • 검토 URL에 aiRunId를 보존해 새로고침 후에도 서버에서 실행 상태를 복구합니다.
  • 기존 직접 업무 생성 화면과 정적 검토 fallback은 유지합니다.
  • 로컬 Vite의 /api 요청을 127.0.0.1:8080으로 연결합니다.

확인 방법

  • npm test: 66 files, 347 tests passed
  • npm run build: success
  • npm run lint: success

실제 브라우저 검증

  • 데모 계정 로그인 → 업무 생성 → 체류연장 원문 → AiRun 요청까지 확인했습니다.
  • Server CORS 수정 후 /tasks/new/review?aiRunId=...로 이동하고 Runtime 오류 상태를 표시했습니다.
  • 실제 AI Runtime 성공 결과는 AI [Screen] HR 대시보드 #6 반영 후 마지막으로 다시 확인합니다.

병합 전 확인

  • Server PR #82의 API 계약 확정
  • AI [Screen] HR 대시보드 #6 Runtime smoke test 통과
  • 대표 발화문 → 질문 → 답변 → 후보 화면 수동 확인

현재 Server와 AI의 선행 작업이 남아 있어 Draft로 유지합니다.

@hywznnhywznn added the area:agent-panel AI Agent 패널 화면 label Aug 4, 2026
@hywznn
hywznn requested a review from chaelikiAugust 4, 2026 01:55
@hywznnhywznn added type:feature 사용자 기능 개발 priority:P0 MVP 진행을 막는 최우선 작업 status:in-review 구현을 마치고 리뷰·병합 대기 labels Aug 4, 2026
@hywznn
hywznn requested a review from krestarAugust 4, 2026 01:55
검토 URL에 aiRunId를 남기고, 화면 이동 상태가 사라진 경우 서버에서 최신 실행 결과를 다시 조회합니다.
@BcKmini

BcKmini commented Aug 4, 2026

Copy link
Copy Markdown
Member
  • CreateWorkPage.tsxintentHint -> 예시 태그(체류연장 준비 등)를 클릭하면 intentHint가 세팅되는데, 그 뒤에 텍스트를 완전히 다른 내용으로 고쳐 써도 예전 힌트가 그대로 남아있음.

  • instructionWithHint가 이 stale한 힌트를 계속 붙여서 보내게 됨 -> 힌트가 판정값이 아니라곤 하지만, 텍스트를 수동으로 편집하면 힌트를 초기화하는 게 안전할 것 같음

@hywznn

Copy link
Copy Markdown
MemberAuthor

힌트는 사실

발화문 = "발화문" + 태그 

인 구조고 필요 없다고 봐도될것 같습니다 intent의 힘을 빌려야죠 거기선

@BcKminiBcKmini left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

확인했습니다. AI Run 자연어 요청·질문·후보 검토 흐름은 이미 develop 통합을 거쳐 main에 병합됐습니다(#296). 이 PR의 base가 8/4 시점 main이라 지금 main 기준으로는 내용이 이미 흡수되어 있어 보입니다 — 별문제 없고, 정리 차원에서 닫아도 괜찮을 것 같습니다.

@BcKmini

Copy link
Copy Markdown
Member

develop 통합(PR #296)에서 AI Run 흐름이 이미 반영되어 이 draft는 정리합니다. 실제 구현은 main에 있습니다.

@BcKminiBcKmini closed this Aug 10, 2026
@BcKmini
BcKmini deleted the feat/229-ai-run-integration branch August 10, 2026 07:19
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:agent-panelAI Agent 패널 화면priority:P0MVP 진행을 막는 최우선 작업status:in-review구현을 마치고 리뷰·병합 대기type:feature사용자 기능 개발

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@hywznn@BcKmini
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all \u003cpre\u003e\u003ccode\u003e blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks"); } } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); } })(); (function(){ try { var __m = "github.com"; var __re = new RegExp('^' + "github\\.com" + '
Skip to content

[AI Run] 자연어 요청과 추가 질문 화면 연동 - #230

Closed
hywznn wants to merge 4 commits into
mainfrom
feat/229-ai-run-integration
Closed

[AI Run] 자연어 요청과 추가 질문 화면 연동#230
hywznn wants to merge 4 commits into
mainfrom
feat/229-ai-run-integration

Conversation

@hywznn

@hywznnhywznn commented Aug 4, 2026

Copy link
Copy Markdown
Member

왜 필요한가요?

업무 생성 화면은 자연어 입력 UI가 있지만 기존에는 정적 검토 화면으로 이동할 뿐 Server에 분석을 요청하지 않았습니다.

Refs #229
Depends on fowoco/server#82
Depends on fowoco/ai#6

무엇이 바뀌나요?

  • POST /api/v1/ai-runs로 사용자가 입력한 발화문 원문을 전송합니다.
  • 빠른 선택 버튼은 예시 문구를 입력창에 채우기만 하며 Client에서 Intent 코드를 붙이지 않습니다.
  • 사용자가 예시 문구를 수정하면 수정된 문장을 그대로 Server에 전달하고, AI가 detectedIntent를 판단합니다.
  • 같은 클릭의 중복 생성을 막기 위해 Idempotency-Key를 전달합니다.
  • NEEDS_INFO 질문을 표시하고 /answers로 답변합니다.
  • REVIEW_REQUIRED 후보와 Runtime 실패 상태를 표시합니다.
  • QUEUED/RUNNING 상태는 GET API로 다시 조회합니다.
  • 검토 URL에 aiRunId를 보존해 새로고침 후에도 서버에서 실행 상태를 복구합니다.
  • 기존 직접 업무 생성 화면과 정적 검토 fallback은 유지합니다.
  • 로컬 Vite의 /api 요청을 127.0.0.1:8080으로 연결합니다.

확인 방법

  • npm test: 66 files, 347 tests passed
  • npm run build: success
  • npm run lint: success

실제 브라우저 검증

  • 데모 계정 로그인 → 업무 생성 → 체류연장 원문 → AiRun 요청까지 확인했습니다.
  • Server CORS 수정 후 /tasks/new/review?aiRunId=...로 이동하고 Runtime 오류 상태를 표시했습니다.
  • 실제 AI Runtime 성공 결과는 AI [Screen] HR 대시보드 #6 반영 후 마지막으로 다시 확인합니다.

병합 전 확인

  • Server PR #82의 API 계약 확정
  • AI [Screen] HR 대시보드 #6 Runtime smoke test 통과
  • 대표 발화문 → 질문 → 답변 → 후보 화면 수동 확인

현재 Server와 AI의 선행 작업이 남아 있어 Draft로 유지합니다.

@hywznnhywznn added the area:agent-panel AI Agent 패널 화면 label Aug 4, 2026
@hywznn
hywznn requested a review from chaelikiAugust 4, 2026 01:55
@hywznnhywznn added type:feature 사용자 기능 개발 priority:P0 MVP 진행을 막는 최우선 작업 status:in-review 구현을 마치고 리뷰·병합 대기 labels Aug 4, 2026
@hywznn
hywznn requested a review from krestarAugust 4, 2026 01:55
검토 URL에 aiRunId를 남기고, 화면 이동 상태가 사라진 경우 서버에서 최신 실행 결과를 다시 조회합니다.
@BcKmini

BcKmini commented Aug 4, 2026

Copy link
Copy Markdown
Member
  • CreateWorkPage.tsxintentHint -> 예시 태그(체류연장 준비 등)를 클릭하면 intentHint가 세팅되는데, 그 뒤에 텍스트를 완전히 다른 내용으로 고쳐 써도 예전 힌트가 그대로 남아있음.

  • instructionWithHint가 이 stale한 힌트를 계속 붙여서 보내게 됨 -> 힌트가 판정값이 아니라곤 하지만, 텍스트를 수동으로 편집하면 힌트를 초기화하는 게 안전할 것 같음

@hywznn

Copy link
Copy Markdown
MemberAuthor

힌트는 사실

발화문 = "발화문" + 태그 

인 구조고 필요 없다고 봐도될것 같습니다 intent의 힘을 빌려야죠 거기선

@BcKminiBcKmini left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

확인했습니다. AI Run 자연어 요청·질문·후보 검토 흐름은 이미 develop 통합을 거쳐 main에 병합됐습니다(#296). 이 PR의 base가 8/4 시점 main이라 지금 main 기준으로는 내용이 이미 흡수되어 있어 보입니다 — 별문제 없고, 정리 차원에서 닫아도 괜찮을 것 같습니다.

@BcKmini

Copy link
Copy Markdown
Member

develop 통합(PR #296)에서 AI Run 흐름이 이미 반영되어 이 draft는 정리합니다. 실제 구현은 main에 있습니다.

@BcKminiBcKmini closed this Aug 10, 2026
@BcKmini
BcKmini deleted the feat/229-ai-run-integration branch August 10, 2026 07:19
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:agent-panelAI Agent 패널 화면priority:P0MVP 진행을 막는 최우선 작업status:in-review구현을 마치고 리뷰·병합 대기type:feature사용자 기능 개발

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@hywznn@BcKmini
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[AI Run] 자연어 요청과 추가 질문 화면 연동 - #230

Closed
hywznn wants to merge 4 commits into
mainfrom
feat/229-ai-run-integration
Closed

[AI Run] 자연어 요청과 추가 질문 화면 연동#230
hywznn wants to merge 4 commits into
mainfrom
feat/229-ai-run-integration

Conversation

@hywznn

@hywznnhywznn commented Aug 4, 2026

Copy link
Copy Markdown
Member

왜 필요한가요?

업무 생성 화면은 자연어 입력 UI가 있지만 기존에는 정적 검토 화면으로 이동할 뿐 Server에 분석을 요청하지 않았습니다.

Refs #229
Depends on fowoco/server#82
Depends on fowoco/ai#6

무엇이 바뀌나요?

  • POST /api/v1/ai-runs로 사용자가 입력한 발화문 원문을 전송합니다.
  • 빠른 선택 버튼은 예시 문구를 입력창에 채우기만 하며 Client에서 Intent 코드를 붙이지 않습니다.
  • 사용자가 예시 문구를 수정하면 수정된 문장을 그대로 Server에 전달하고, AI가 detectedIntent를 판단합니다.
  • 같은 클릭의 중복 생성을 막기 위해 Idempotency-Key를 전달합니다.
  • NEEDS_INFO 질문을 표시하고 /answers로 답변합니다.
  • REVIEW_REQUIRED 후보와 Runtime 실패 상태를 표시합니다.
  • QUEUED/RUNNING 상태는 GET API로 다시 조회합니다.
  • 검토 URL에 aiRunId를 보존해 새로고침 후에도 서버에서 실행 상태를 복구합니다.
  • 기존 직접 업무 생성 화면과 정적 검토 fallback은 유지합니다.
  • 로컬 Vite의 /api 요청을 127.0.0.1:8080으로 연결합니다.

확인 방법

  • npm test: 66 files, 347 tests passed
  • npm run build: success
  • npm run lint: success

실제 브라우저 검증

  • 데모 계정 로그인 → 업무 생성 → 체류연장 원문 → AiRun 요청까지 확인했습니다.
  • Server CORS 수정 후 /tasks/new/review?aiRunId=...로 이동하고 Runtime 오류 상태를 표시했습니다.
  • 실제 AI Runtime 성공 결과는 AI [Screen] HR 대시보드 #6 반영 후 마지막으로 다시 확인합니다.

병합 전 확인

  • Server PR #82의 API 계약 확정
  • AI [Screen] HR 대시보드 #6 Runtime smoke test 통과
  • 대표 발화문 → 질문 → 답변 → 후보 화면 수동 확인

현재 Server와 AI의 선행 작업이 남아 있어 Draft로 유지합니다.

@hywznnhywznn added the area:agent-panel AI Agent 패널 화면 label Aug 4, 2026
@hywznn
hywznn requested a review from chaelikiAugust 4, 2026 01:55
@hywznnhywznn added type:feature 사용자 기능 개발 priority:P0 MVP 진행을 막는 최우선 작업 status:in-review 구현을 마치고 리뷰·병합 대기 labels Aug 4, 2026
@hywznn
hywznn requested a review from krestarAugust 4, 2026 01:55
검토 URL에 aiRunId를 남기고, 화면 이동 상태가 사라진 경우 서버에서 최신 실행 결과를 다시 조회합니다.
@BcKmini

BcKmini commented Aug 4, 2026

Copy link
Copy Markdown
Member
  • CreateWorkPage.tsxintentHint -> 예시 태그(체류연장 준비 등)를 클릭하면 intentHint가 세팅되는데, 그 뒤에 텍스트를 완전히 다른 내용으로 고쳐 써도 예전 힌트가 그대로 남아있음.

  • instructionWithHint가 이 stale한 힌트를 계속 붙여서 보내게 됨 -> 힌트가 판정값이 아니라곤 하지만, 텍스트를 수동으로 편집하면 힌트를 초기화하는 게 안전할 것 같음

@hywznn

Copy link
Copy Markdown
MemberAuthor

힌트는 사실

발화문 = "발화문" + 태그 

인 구조고 필요 없다고 봐도될것 같습니다 intent의 힘을 빌려야죠 거기선

@BcKminiBcKmini left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

확인했습니다. AI Run 자연어 요청·질문·후보 검토 흐름은 이미 develop 통합을 거쳐 main에 병합됐습니다(#296). 이 PR의 base가 8/4 시점 main이라 지금 main 기준으로는 내용이 이미 흡수되어 있어 보입니다 — 별문제 없고, 정리 차원에서 닫아도 괜찮을 것 같습니다.

@BcKmini

Copy link
Copy Markdown
Member

develop 통합(PR #296)에서 AI Run 흐름이 이미 반영되어 이 draft는 정리합니다. 실제 구현은 main에 있습니다.

@BcKminiBcKmini closed this Aug 10, 2026
@BcKmini
BcKmini deleted the feat/229-ai-run-integration branch August 10, 2026 07:19
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:agent-panelAI Agent 패널 화면priority:P0MVP 진행을 막는 최우선 작업status:in-review구현을 마치고 리뷰·병합 대기type:feature사용자 기능 개발

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@hywznn@BcKmini
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length \u003e 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[AI Run] 자연어 요청과 추가 질문 화면 연동 - #230

Closed
hywznn wants to merge 4 commits into
mainfrom
feat/229-ai-run-integration
Closed

[AI Run] 자연어 요청과 추가 질문 화면 연동#230
hywznn wants to merge 4 commits into
mainfrom
feat/229-ai-run-integration

Conversation

@hywznn

@hywznnhywznn commented Aug 4, 2026

Copy link
Copy Markdown
Member

왜 필요한가요?

업무 생성 화면은 자연어 입력 UI가 있지만 기존에는 정적 검토 화면으로 이동할 뿐 Server에 분석을 요청하지 않았습니다.

Refs #229
Depends on fowoco/server#82
Depends on fowoco/ai#6

무엇이 바뀌나요?

  • POST /api/v1/ai-runs로 사용자가 입력한 발화문 원문을 전송합니다.
  • 빠른 선택 버튼은 예시 문구를 입력창에 채우기만 하며 Client에서 Intent 코드를 붙이지 않습니다.
  • 사용자가 예시 문구를 수정하면 수정된 문장을 그대로 Server에 전달하고, AI가 detectedIntent를 판단합니다.
  • 같은 클릭의 중복 생성을 막기 위해 Idempotency-Key를 전달합니다.
  • NEEDS_INFO 질문을 표시하고 /answers로 답변합니다.
  • REVIEW_REQUIRED 후보와 Runtime 실패 상태를 표시합니다.
  • QUEUED/RUNNING 상태는 GET API로 다시 조회합니다.
  • 검토 URL에 aiRunId를 보존해 새로고침 후에도 서버에서 실행 상태를 복구합니다.
  • 기존 직접 업무 생성 화면과 정적 검토 fallback은 유지합니다.
  • 로컬 Vite의 /api 요청을 127.0.0.1:8080으로 연결합니다.

확인 방법

  • npm test: 66 files, 347 tests passed
  • npm run build: success
  • npm run lint: success

실제 브라우저 검증

  • 데모 계정 로그인 → 업무 생성 → 체류연장 원문 → AiRun 요청까지 확인했습니다.
  • Server CORS 수정 후 /tasks/new/review?aiRunId=...로 이동하고 Runtime 오류 상태를 표시했습니다.
  • 실제 AI Runtime 성공 결과는 AI [Screen] HR 대시보드 #6 반영 후 마지막으로 다시 확인합니다.

병합 전 확인

  • Server PR #82의 API 계약 확정
  • AI [Screen] HR 대시보드 #6 Runtime smoke test 통과
  • 대표 발화문 → 질문 → 답변 → 후보 화면 수동 확인

현재 Server와 AI의 선행 작업이 남아 있어 Draft로 유지합니다.

@hywznnhywznn added the area:agent-panel AI Agent 패널 화면 label Aug 4, 2026
@hywznn
hywznn requested a review from chaelikiAugust 4, 2026 01:55
@hywznnhywznn added type:feature 사용자 기능 개발 priority:P0 MVP 진행을 막는 최우선 작업 status:in-review 구현을 마치고 리뷰·병합 대기 labels Aug 4, 2026
@hywznn
hywznn requested a review from krestarAugust 4, 2026 01:55
검토 URL에 aiRunId를 남기고, 화면 이동 상태가 사라진 경우 서버에서 최신 실행 결과를 다시 조회합니다.
@BcKmini

BcKmini commented Aug 4, 2026

Copy link
Copy Markdown
Member
  • CreateWorkPage.tsxintentHint -> 예시 태그(체류연장 준비 등)를 클릭하면 intentHint가 세팅되는데, 그 뒤에 텍스트를 완전히 다른 내용으로 고쳐 써도 예전 힌트가 그대로 남아있음.

  • instructionWithHint가 이 stale한 힌트를 계속 붙여서 보내게 됨 -> 힌트가 판정값이 아니라곤 하지만, 텍스트를 수동으로 편집하면 힌트를 초기화하는 게 안전할 것 같음

@hywznn

Copy link
Copy Markdown
MemberAuthor

힌트는 사실

발화문 = "발화문" + 태그 

인 구조고 필요 없다고 봐도될것 같습니다 intent의 힘을 빌려야죠 거기선

@BcKminiBcKmini left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

확인했습니다. AI Run 자연어 요청·질문·후보 검토 흐름은 이미 develop 통합을 거쳐 main에 병합됐습니다(#296). 이 PR의 base가 8/4 시점 main이라 지금 main 기준으로는 내용이 이미 흡수되어 있어 보입니다 — 별문제 없고, 정리 차원에서 닫아도 괜찮을 것 같습니다.

@BcKmini

Copy link
Copy Markdown
Member

develop 통합(PR #296)에서 AI Run 흐름이 이미 반영되어 이 draft는 정리합니다. 실제 구현은 main에 있습니다.

@BcKminiBcKmini closed this Aug 10, 2026
@BcKmini
BcKmini deleted the feat/229-ai-run-integration branch August 10, 2026 07:19
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:agent-panelAI Agent 패널 화면priority:P0MVP 진행을 막는 최우선 작업status:in-review구현을 마치고 리뷰·병합 대기type:feature사용자 기능 개발

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@hywznn@BcKmini
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

[AI Run] 자연어 요청과 추가 질문 화면 연동 - #230

Closed
hywznn wants to merge 4 commits into
mainfrom
feat/229-ai-run-integration
Closed

[AI Run] 자연어 요청과 추가 질문 화면 연동#230
hywznn wants to merge 4 commits into
mainfrom
feat/229-ai-run-integration

Conversation

@hywznn

@hywznnhywznn commented Aug 4, 2026

Copy link
Copy Markdown
Member

왜 필요한가요?

업무 생성 화면은 자연어 입력 UI가 있지만 기존에는 정적 검토 화면으로 이동할 뿐 Server에 분석을 요청하지 않았습니다.

Refs #229
Depends on fowoco/server#82
Depends on fowoco/ai#6

무엇이 바뀌나요?

  • POST /api/v1/ai-runs로 사용자가 입력한 발화문 원문을 전송합니다.
  • 빠른 선택 버튼은 예시 문구를 입력창에 채우기만 하며 Client에서 Intent 코드를 붙이지 않습니다.
  • 사용자가 예시 문구를 수정하면 수정된 문장을 그대로 Server에 전달하고, AI가 detectedIntent를 판단합니다.
  • 같은 클릭의 중복 생성을 막기 위해 Idempotency-Key를 전달합니다.
  • NEEDS_INFO 질문을 표시하고 /answers로 답변합니다.
  • REVIEW_REQUIRED 후보와 Runtime 실패 상태를 표시합니다.
  • QUEUED/RUNNING 상태는 GET API로 다시 조회합니다.
  • 검토 URL에 aiRunId를 보존해 새로고침 후에도 서버에서 실행 상태를 복구합니다.
  • 기존 직접 업무 생성 화면과 정적 검토 fallback은 유지합니다.
  • 로컬 Vite의 /api 요청을 127.0.0.1:8080으로 연결합니다.

확인 방법

  • npm test: 66 files, 347 tests passed
  • npm run build: success
  • npm run lint: success

실제 브라우저 검증

  • 데모 계정 로그인 → 업무 생성 → 체류연장 원문 → AiRun 요청까지 확인했습니다.
  • Server CORS 수정 후 /tasks/new/review?aiRunId=...로 이동하고 Runtime 오류 상태를 표시했습니다.
  • 실제 AI Runtime 성공 결과는 AI [Screen] HR 대시보드 #6 반영 후 마지막으로 다시 확인합니다.

병합 전 확인

  • Server PR #82의 API 계약 확정
  • AI [Screen] HR 대시보드 #6 Runtime smoke test 통과
  • 대표 발화문 → 질문 → 답변 → 후보 화면 수동 확인

현재 Server와 AI의 선행 작업이 남아 있어 Draft로 유지합니다.

@hywznnhywznn added the area:agent-panel AI Agent 패널 화면 label Aug 4, 2026
@hywznn
hywznn requested a review from chaelikiAugust 4, 2026 01:55
@hywznnhywznn added type:feature 사용자 기능 개발 priority:P0 MVP 진행을 막는 최우선 작업 status:in-review 구현을 마치고 리뷰·병합 대기 labels Aug 4, 2026
@hywznn
hywznn requested a review from krestarAugust 4, 2026 01:55
검토 URL에 aiRunId를 남기고, 화면 이동 상태가 사라진 경우 서버에서 최신 실행 결과를 다시 조회합니다.
@BcKmini

BcKmini commented Aug 4, 2026

Copy link
Copy Markdown
Member
  • CreateWorkPage.tsxintentHint -> 예시 태그(체류연장 준비 등)를 클릭하면 intentHint가 세팅되는데, 그 뒤에 텍스트를 완전히 다른 내용으로 고쳐 써도 예전 힌트가 그대로 남아있음.

  • instructionWithHint가 이 stale한 힌트를 계속 붙여서 보내게 됨 -> 힌트가 판정값이 아니라곤 하지만, 텍스트를 수동으로 편집하면 힌트를 초기화하는 게 안전할 것 같음

@hywznn

Copy link
Copy Markdown
MemberAuthor

힌트는 사실

발화문 = "발화문" + 태그 

인 구조고 필요 없다고 봐도될것 같습니다 intent의 힘을 빌려야죠 거기선

@BcKminiBcKmini left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

확인했습니다. AI Run 자연어 요청·질문·후보 검토 흐름은 이미 develop 통합을 거쳐 main에 병합됐습니다(#296). 이 PR의 base가 8/4 시점 main이라 지금 main 기준으로는 내용이 이미 흡수되어 있어 보입니다 — 별문제 없고, 정리 차원에서 닫아도 괜찮을 것 같습니다.

@BcKmini

Copy link
Copy Markdown
Member

develop 통합(PR #296)에서 AI Run 흐름이 이미 반영되어 이 draft는 정리합니다. 실제 구현은 main에 있습니다.

@BcKminiBcKmini closed this Aug 10, 2026
@BcKmini
BcKmini deleted the feat/229-ai-run-integration branch August 10, 2026 07:19
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:agent-panelAI Agent 패널 화면priority:P0MVP 진행을 막는 최우선 작업status:in-review구현을 마치고 리뷰·병합 대기type:feature사용자 기능 개발

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@hywznn@BcKmini
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[AI Run] 자연어 요청과 추가 질문 화면 연동 - #230

Closed
hywznn wants to merge 4 commits into
mainfrom
feat/229-ai-run-integration
Closed

[AI Run] 자연어 요청과 추가 질문 화면 연동#230
hywznn wants to merge 4 commits into
mainfrom
feat/229-ai-run-integration

Conversation

@hywznn

@hywznnhywznn commented Aug 4, 2026

Copy link
Copy Markdown
Member

왜 필요한가요?

업무 생성 화면은 자연어 입력 UI가 있지만 기존에는 정적 검토 화면으로 이동할 뿐 Server에 분석을 요청하지 않았습니다.

Refs #229
Depends on fowoco/server#82
Depends on fowoco/ai#6

무엇이 바뀌나요?

  • POST /api/v1/ai-runs로 사용자가 입력한 발화문 원문을 전송합니다.
  • 빠른 선택 버튼은 예시 문구를 입력창에 채우기만 하며 Client에서 Intent 코드를 붙이지 않습니다.
  • 사용자가 예시 문구를 수정하면 수정된 문장을 그대로 Server에 전달하고, AI가 detectedIntent를 판단합니다.
  • 같은 클릭의 중복 생성을 막기 위해 Idempotency-Key를 전달합니다.
  • NEEDS_INFO 질문을 표시하고 /answers로 답변합니다.
  • REVIEW_REQUIRED 후보와 Runtime 실패 상태를 표시합니다.
  • QUEUED/RUNNING 상태는 GET API로 다시 조회합니다.
  • 검토 URL에 aiRunId를 보존해 새로고침 후에도 서버에서 실행 상태를 복구합니다.
  • 기존 직접 업무 생성 화면과 정적 검토 fallback은 유지합니다.
  • 로컬 Vite의 /api 요청을 127.0.0.1:8080으로 연결합니다.

확인 방법

  • npm test: 66 files, 347 tests passed
  • npm run build: success
  • npm run lint: success

실제 브라우저 검증

  • 데모 계정 로그인 → 업무 생성 → 체류연장 원문 → AiRun 요청까지 확인했습니다.
  • Server CORS 수정 후 /tasks/new/review?aiRunId=...로 이동하고 Runtime 오류 상태를 표시했습니다.
  • 실제 AI Runtime 성공 결과는 AI [Screen] HR 대시보드 #6 반영 후 마지막으로 다시 확인합니다.

병합 전 확인

  • Server PR #82의 API 계약 확정
  • AI [Screen] HR 대시보드 #6 Runtime smoke test 통과
  • 대표 발화문 → 질문 → 답변 → 후보 화면 수동 확인

현재 Server와 AI의 선행 작업이 남아 있어 Draft로 유지합니다.

@hywznnhywznn added the area:agent-panel AI Agent 패널 화면 label Aug 4, 2026
@hywznn
hywznn requested a review from chaelikiAugust 4, 2026 01:55
@hywznnhywznn added type:feature 사용자 기능 개발 priority:P0 MVP 진행을 막는 최우선 작업 status:in-review 구현을 마치고 리뷰·병합 대기 labels Aug 4, 2026
@hywznn
hywznn requested a review from krestarAugust 4, 2026 01:55
검토 URL에 aiRunId를 남기고, 화면 이동 상태가 사라진 경우 서버에서 최신 실행 결과를 다시 조회합니다.
@BcKmini

BcKmini commented Aug 4, 2026

Copy link
Copy Markdown
Member
  • CreateWorkPage.tsxintentHint -> 예시 태그(체류연장 준비 등)를 클릭하면 intentHint가 세팅되는데, 그 뒤에 텍스트를 완전히 다른 내용으로 고쳐 써도 예전 힌트가 그대로 남아있음.

  • instructionWithHint가 이 stale한 힌트를 계속 붙여서 보내게 됨 -> 힌트가 판정값이 아니라곤 하지만, 텍스트를 수동으로 편집하면 힌트를 초기화하는 게 안전할 것 같음

@hywznn

Copy link
Copy Markdown
MemberAuthor

힌트는 사실

발화문 = "발화문" + 태그 

인 구조고 필요 없다고 봐도될것 같습니다 intent의 힘을 빌려야죠 거기선

@BcKminiBcKmini left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

확인했습니다. AI Run 자연어 요청·질문·후보 검토 흐름은 이미 develop 통합을 거쳐 main에 병합됐습니다(#296). 이 PR의 base가 8/4 시점 main이라 지금 main 기준으로는 내용이 이미 흡수되어 있어 보입니다 — 별문제 없고, 정리 차원에서 닫아도 괜찮을 것 같습니다.

@BcKmini

Copy link
Copy Markdown
Member

develop 통합(PR #296)에서 AI Run 흐름이 이미 반영되어 이 draft는 정리합니다. 실제 구현은 main에 있습니다.

@BcKminiBcKmini closed this Aug 10, 2026
@BcKmini
BcKmini deleted the feat/229-ai-run-integration branch August 10, 2026 07:19
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:agent-panelAI Agent 패널 화면priority:P0MVP 진행을 막는 최우선 작업status:in-review구현을 마치고 리뷰·병합 대기type:feature사용자 기능 개발

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@hywznn@BcKmini
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[AI Run] 자연어 요청과 추가 질문 화면 연동 - #230

Closed
hywznn wants to merge 4 commits into
mainfrom
feat/229-ai-run-integration
Closed

[AI Run] 자연어 요청과 추가 질문 화면 연동#230
hywznn wants to merge 4 commits into
mainfrom
feat/229-ai-run-integration

Conversation

@hywznn

@hywznnhywznn commented Aug 4, 2026

Copy link
Copy Markdown
Member

왜 필요한가요?

업무 생성 화면은 자연어 입력 UI가 있지만 기존에는 정적 검토 화면으로 이동할 뿐 Server에 분석을 요청하지 않았습니다.

Refs #229
Depends on fowoco/server#82
Depends on fowoco/ai#6

무엇이 바뀌나요?

  • POST /api/v1/ai-runs로 사용자가 입력한 발화문 원문을 전송합니다.
  • 빠른 선택 버튼은 예시 문구를 입력창에 채우기만 하며 Client에서 Intent 코드를 붙이지 않습니다.
  • 사용자가 예시 문구를 수정하면 수정된 문장을 그대로 Server에 전달하고, AI가 detectedIntent를 판단합니다.
  • 같은 클릭의 중복 생성을 막기 위해 Idempotency-Key를 전달합니다.
  • NEEDS_INFO 질문을 표시하고 /answers로 답변합니다.
  • REVIEW_REQUIRED 후보와 Runtime 실패 상태를 표시합니다.
  • QUEUED/RUNNING 상태는 GET API로 다시 조회합니다.
  • 검토 URL에 aiRunId를 보존해 새로고침 후에도 서버에서 실행 상태를 복구합니다.
  • 기존 직접 업무 생성 화면과 정적 검토 fallback은 유지합니다.
  • 로컬 Vite의 /api 요청을 127.0.0.1:8080으로 연결합니다.

확인 방법

  • npm test: 66 files, 347 tests passed
  • npm run build: success
  • npm run lint: success

실제 브라우저 검증

  • 데모 계정 로그인 → 업무 생성 → 체류연장 원문 → AiRun 요청까지 확인했습니다.
  • Server CORS 수정 후 /tasks/new/review?aiRunId=...로 이동하고 Runtime 오류 상태를 표시했습니다.
  • 실제 AI Runtime 성공 결과는 AI [Screen] HR 대시보드 #6 반영 후 마지막으로 다시 확인합니다.

병합 전 확인

  • Server PR #82의 API 계약 확정
  • AI [Screen] HR 대시보드 #6 Runtime smoke test 통과
  • 대표 발화문 → 질문 → 답변 → 후보 화면 수동 확인

현재 Server와 AI의 선행 작업이 남아 있어 Draft로 유지합니다.

@hywznnhywznn added the area:agent-panel AI Agent 패널 화면 label Aug 4, 2026
@hywznn
hywznn requested a review from chaelikiAugust 4, 2026 01:55
@hywznnhywznn added type:feature 사용자 기능 개발 priority:P0 MVP 진행을 막는 최우선 작업 status:in-review 구현을 마치고 리뷰·병합 대기 labels Aug 4, 2026
@hywznn
hywznn requested a review from krestarAugust 4, 2026 01:55
검토 URL에 aiRunId를 남기고, 화면 이동 상태가 사라진 경우 서버에서 최신 실행 결과를 다시 조회합니다.
@BcKmini

BcKmini commented Aug 4, 2026

Copy link
Copy Markdown
Member
  • CreateWorkPage.tsxintentHint -> 예시 태그(체류연장 준비 등)를 클릭하면 intentHint가 세팅되는데, 그 뒤에 텍스트를 완전히 다른 내용으로 고쳐 써도 예전 힌트가 그대로 남아있음.

  • instructionWithHint가 이 stale한 힌트를 계속 붙여서 보내게 됨 -> 힌트가 판정값이 아니라곤 하지만, 텍스트를 수동으로 편집하면 힌트를 초기화하는 게 안전할 것 같음

@hywznn

Copy link
Copy Markdown
MemberAuthor

힌트는 사실

발화문 = "발화문" + 태그 

인 구조고 필요 없다고 봐도될것 같습니다 intent의 힘을 빌려야죠 거기선

@BcKminiBcKmini left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

확인했습니다. AI Run 자연어 요청·질문·후보 검토 흐름은 이미 develop 통합을 거쳐 main에 병합됐습니다(#296). 이 PR의 base가 8/4 시점 main이라 지금 main 기준으로는 내용이 이미 흡수되어 있어 보입니다 — 별문제 없고, 정리 차원에서 닫아도 괜찮을 것 같습니다.

@BcKmini

Copy link
Copy Markdown
Member

develop 통합(PR #296)에서 AI Run 흐름이 이미 반영되어 이 draft는 정리합니다. 실제 구현은 main에 있습니다.

@BcKminiBcKmini closed this Aug 10, 2026
@BcKmini
BcKmini deleted the feat/229-ai-run-integration branch August 10, 2026 07:19
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:agent-panelAI Agent 패널 화면priority:P0MVP 진행을 막는 최우선 작업status:in-review구현을 마치고 리뷰·병합 대기type:feature사용자 기능 개발

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@hywznn@BcKmini
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

[AI Run] 자연어 요청과 추가 질문 화면 연동 - #230

Closed
hywznn wants to merge 4 commits into
mainfrom
feat/229-ai-run-integration
Closed

[AI Run] 자연어 요청과 추가 질문 화면 연동#230
hywznn wants to merge 4 commits into
mainfrom
feat/229-ai-run-integration

Conversation

@hywznn

@hywznnhywznn commented Aug 4, 2026

Copy link
Copy Markdown
Member

왜 필요한가요?

업무 생성 화면은 자연어 입력 UI가 있지만 기존에는 정적 검토 화면으로 이동할 뿐 Server에 분석을 요청하지 않았습니다.

Refs #229
Depends on fowoco/server#82
Depends on fowoco/ai#6

무엇이 바뀌나요?

  • POST /api/v1/ai-runs로 사용자가 입력한 발화문 원문을 전송합니다.
  • 빠른 선택 버튼은 예시 문구를 입력창에 채우기만 하며 Client에서 Intent 코드를 붙이지 않습니다.
  • 사용자가 예시 문구를 수정하면 수정된 문장을 그대로 Server에 전달하고, AI가 detectedIntent를 판단합니다.
  • 같은 클릭의 중복 생성을 막기 위해 Idempotency-Key를 전달합니다.
  • NEEDS_INFO 질문을 표시하고 /answers로 답변합니다.
  • REVIEW_REQUIRED 후보와 Runtime 실패 상태를 표시합니다.
  • QUEUED/RUNNING 상태는 GET API로 다시 조회합니다.
  • 검토 URL에 aiRunId를 보존해 새로고침 후에도 서버에서 실행 상태를 복구합니다.
  • 기존 직접 업무 생성 화면과 정적 검토 fallback은 유지합니다.
  • 로컬 Vite의 /api 요청을 127.0.0.1:8080으로 연결합니다.

확인 방법

  • npm test: 66 files, 347 tests passed
  • npm run build: success
  • npm run lint: success

실제 브라우저 검증

  • 데모 계정 로그인 → 업무 생성 → 체류연장 원문 → AiRun 요청까지 확인했습니다.
  • Server CORS 수정 후 /tasks/new/review?aiRunId=...로 이동하고 Runtime 오류 상태를 표시했습니다.
  • 실제 AI Runtime 성공 결과는 AI [Screen] HR 대시보드 #6 반영 후 마지막으로 다시 확인합니다.

병합 전 확인

  • Server PR #82의 API 계약 확정
  • AI [Screen] HR 대시보드 #6 Runtime smoke test 통과
  • 대표 발화문 → 질문 → 답변 → 후보 화면 수동 확인

현재 Server와 AI의 선행 작업이 남아 있어 Draft로 유지합니다.

@hywznnhywznn added the area:agent-panel AI Agent 패널 화면 label Aug 4, 2026
@hywznn
hywznn requested a review from chaelikiAugust 4, 2026 01:55
@hywznnhywznn added type:feature 사용자 기능 개발 priority:P0 MVP 진행을 막는 최우선 작업 status:in-review 구현을 마치고 리뷰·병합 대기 labels Aug 4, 2026
@hywznn
hywznn requested a review from krestarAugust 4, 2026 01:55
검토 URL에 aiRunId를 남기고, 화면 이동 상태가 사라진 경우 서버에서 최신 실행 결과를 다시 조회합니다.
@BcKmini

BcKmini commented Aug 4, 2026

Copy link
Copy Markdown
Member
  • CreateWorkPage.tsxintentHint -> 예시 태그(체류연장 준비 등)를 클릭하면 intentHint가 세팅되는데, 그 뒤에 텍스트를 완전히 다른 내용으로 고쳐 써도 예전 힌트가 그대로 남아있음.

  • instructionWithHint가 이 stale한 힌트를 계속 붙여서 보내게 됨 -> 힌트가 판정값이 아니라곤 하지만, 텍스트를 수동으로 편집하면 힌트를 초기화하는 게 안전할 것 같음

@hywznn

Copy link
Copy Markdown
MemberAuthor

힌트는 사실

발화문 = "발화문" + 태그 

인 구조고 필요 없다고 봐도될것 같습니다 intent의 힘을 빌려야죠 거기선

@BcKminiBcKmini left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

확인했습니다. AI Run 자연어 요청·질문·후보 검토 흐름은 이미 develop 통합을 거쳐 main에 병합됐습니다(#296). 이 PR의 base가 8/4 시점 main이라 지금 main 기준으로는 내용이 이미 흡수되어 있어 보입니다 — 별문제 없고, 정리 차원에서 닫아도 괜찮을 것 같습니다.

@BcKmini

Copy link
Copy Markdown
Member

develop 통합(PR #296)에서 AI Run 흐름이 이미 반영되어 이 draft는 정리합니다. 실제 구현은 main에 있습니다.

@BcKminiBcKmini closed this Aug 10, 2026
@BcKmini
BcKmini deleted the feat/229-ai-run-integration branch August 10, 2026 07:19
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:agent-panelAI Agent 패널 화면priority:P0MVP 진행을 막는 최우선 작업status:in-review구현을 마치고 리뷰·병합 대기type:feature사용자 기능 개발

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@hywznn@BcKmini