Skip to content

refactor: Clinic Phase 2 DA 반복 이슈 5건 — XSS/CSRF, fixedContent 구조, fact-correction 매칭, card-fixer 통합, overallStatus 확장 #109

@greenheadHQ

Description

@greenheadHQ

Summary

PR #104 (Clinic Phase 2) DA 피드백 루프에서 3라운드 연속 반복된 5개 이슈를 후속 작업으로 등록한다.
모두 Phase 2의 설계 결정에서 비롯된 기술 부채이며, Phase 3 진입 전 해소가 권장된다.

Context

PR #104에서 DA 에이전트 8개 × 3라운드 실행. 아래 5건이 매 라운드 동일하게 지적되었으나,
Phase 2 범위 내에서 합리적인 트레이드오프로 판단하여 기각 + 이슈 등록 결정.

Proposed Changes

  • SECURITY: fix/apply의 Stored XSS / CSRF 방어

    • fixedContent에 대한 sanitize 계층 추가 (DOMPurify 또는 allowlist)
    • 또는 서버 사이드에서 HTML 태그 스트립 (Anki 카드는 HTML이므로 신중한 판단 필요)
    • dev 프록시 CSRF: Same-Origin 검증 또는 CSRF 토큰 도입 검토
  • NGMI: fixedContent 문자열 overwrite → 구조화된 액션 모델

    • { actions: [{ type, payload }] } 기반 서버 사이드 적용으로 전환 검토
    • 또는 현재 구조 유지 + changes 배열을 서버에 감사 로그로 전송
  • HALLUCINATION: fact correction clean↔raw 텍스트 매칭 개선

    • LLM에게 raw 텍스트(Cloze 마크업 포함)를 함께 전달하여 정확한 claim 추출
    • 또는 퍼지 매칭 (Levenshtein distance) 도입
  • CLEAN_CODE: web card-fixer의 apply/diff 함수 통합

    • removeYagniClozes + computeYagniDiff를 단일 함수로 통합 (diff 계산 후 apply는 diff.fixed 반환)
    • applyFactCorrections + computeFactDiff 동일하게 통합
  • NGMI: overallStatus에 yagni/verbose 반영 전략

    • 현재: factCheck, freshness, similarity, context 4종만 반영
    • 제안: actionStatus 분리 — "content quality" vs "optimization suggestions" 2축 상태

Notes

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:serverHono API 서버 및 라우트area:webReact 웹 애플리케이션enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions