설명 길이가 1000자를 초과하면 이벤트가 조용히 실패합니다

요약:

이벤트 설명이 1,000자를 초과하면 설명이 공백으로 표시되거나 이전 이벤트 설명이 표시됩니다.

이 문제는 discourse_post_event_events 테이블의 description 필드에 적용된 고정 한계(character varying(1000))로 인해 발생합니다.

재현 방법 #1

  • 이벤트를 생성합니다.
  • 이벤트 설명([event][/event] 사이의 텍스트)이 1,000자를 초과하도록 합니다.
  • 렌더링된 게시물에 이벤트 설명 이 표시되지 않습니다.

재현 방법 #2

  • 이벤트를 생성합니다.
  • 이벤트 설명([event][/event] 사이의 텍스트)이 1,000자 미만으로 설정합니다.
  • 이벤트를 수정합니다.
  • 이벤트 설명([event][/event] 사이의 텍스트)이 1,000자를 초과하도록 변경합니다.
  • 렌더링된 게시물에 이전 이벤트 설명이 표시됩니다.

이로 인해 검색 오염(search poisoning)이 가능해집니다.

관련 사항

urllocation 필드에도 동일한 문제가 발생하는 것으로 보입니다.

기대 동작

다음 중 하나를 충족해야 합니다:

a) 이벤트 설명에 길이 제한을 두지 않거나
b) 이벤트 설명이 너무 길 경우 명확한 경고가 표시되거나
c) 렌더링 시 이벤트 설명이 잘리되, 마크다운 원본에는 전체 텍스트가 유지되어야 합니다.

6개의 좋아요

이 내용 감사합니다.

개인적으로, 경고 없이 옵션 (c)만으로는 충분하지 않다고 생각합니다. 투표가 있다면, (a)가 최선의 해결책이라고 봅니다.

1개의 좋아요

최신 버전에서 재현 확인했으며, 오늘 테스트를 수행했습니다. 한 사용자가 Event 카드가 표시되지 않는 문제를 보고했습니다. 원인은 불분명합니다. 주제는 정상적으로 저장되었고, 원본 게시글에서 Event 마크업도 정확했지만, 주제 내 또는 다른 곳에서 Event 카드가 표시되지 않았습니다. 작성기 경고, 저장 오류, 브라우저 콘솔 오류 또는 관련 /logs 항목도 없었습니다.

b) 명확한 경고 또는 검증 오류를 표시하는 방식에 찬성합니다.

이와 관련하여, Event 마크업이 올바르게 파싱되지 않는 다른 어떤 원인이 있더라도 동일한 동작(카드가 표시되지 않는 조용한 실패)이 발생합니다. 몇 달 전에 제가 조사하던 사례에서는 사용자가 Word에서 Event 마크업을 꼼꼼히 작성한 뒤 Discourse에 복사하여 붙여넣었더니, data= 항목 주위에 자동 "스마트 인용부호"가 삽입되는 문제가 발생하여 예상通りの 웃지 못할 상황이 벌어졌습니다.

따라서 콘솔에 표시되는 것이라도, 가시적인 오류 메시지가 있으면 정말로 좋겠습니다.

2개의 좋아요