generated from ttipo/project-base
feat(frontend): 대용량 첨부 — 쓰기 · 읽기 · 설정 · 공개 내려받기 화면
- 쓰기: 20MB 넘는 파일 · 합계 25MB 를 넘기는 파일 · 메일에 못 담는 형식은 저절로 링크로(묻는 창 없음). 고르자마자 서버에 만들고 16MiB 조각(Content-Digest)을 파일 3개까지 함께, 끊기면 2 · 5 · 15 · 30초로 다시 · 1분 넘으면 멈춤 + [다시 시도], 새로고침 뒤 같은 파일을 다시 고르면 잇는다. 다 올릴 때까지 [보내기]는 aria-disabled + 까닭, 위험 판정은 빨간 줄 + 실시간 알림. 대용량 파일이 있으면 첫 원문 인용 앞을 data-ara-quote-start · bodyQuoteStart 로 알린다(서버가 그 자리에 덩이를 넣는다). - 읽기: 첨부 칸의 대용량 항목(서버의 largeFiles), 본문 덩이 접기, 보낸 사람의 받은 수 · 링크 끊기(끊은 날 — revokedAt). - 설정 › 메일 › 대용량 첨부: 보관 사용량 · 보내지 않은 파일 · 보낸 링크(끊기). - 공개 화면 /s/:token: 세션 복원 없이(meta.public) · credentials omit · no-referrer, 라우트는 대소문자를 가린다. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -175,3 +175,22 @@ export const IMAGE_SAMPLES: readonly (readonly [attribute: 'src' | 'width' | 'al
|
||||
['alt', 'ㄱ'.repeat(200), true],
|
||||
['alt', 'ㄱ'.repeat(201), false],
|
||||
]
|
||||
|
||||
/**
|
||||
* 인용 경계 표시(data-*) 표본 — [태그, 속성, 서버가 남기는가]. 계약 4절 "발송 · 임시 저장과 함께" (11단계).
|
||||
* 보내는 정화는 data-ara-quote-start 를 div 에만 남기고 그 밖의 data-* 는 지금처럼 지운다(서버는 첫 표시 자리를 덩이 자리로 쓴 뒤 표시를 모두 지운다).
|
||||
* ⚠️ 서버 정화(backend/src/modules/mail/html/sanitize-outgoing-html.spec.ts)와 **같은 표**를 둔다 — 한쪽을 고치면 둘 다.
|
||||
*/
|
||||
export const QUOTE_MARK_SAMPLES: readonly (readonly [tag: string, attribute: string, kept: boolean])[] = [
|
||||
['div', 'data-ara-quote-start', true],
|
||||
['DIV', 'DATA-ARA-QUOTE-START', true],
|
||||
['p', 'data-ara-quote-start', false],
|
||||
['span', 'data-ara-quote-start', false],
|
||||
['table', 'data-ara-quote-start', false],
|
||||
['blockquote', 'data-ara-quote-start', false],
|
||||
['div', 'data-ara-large-files', false],
|
||||
['div', 'data-mail-quote', false],
|
||||
['div', 'data-quote-header', false],
|
||||
['div', 'data-ara-quote-start-x', false],
|
||||
['div', 'data-x', false],
|
||||
]
|
||||
|
||||
@@ -81,6 +81,14 @@ export function createTestRouter(): Router {
|
||||
component: Empty,
|
||||
meta: { requiresAuth: true },
|
||||
},
|
||||
// 11단계 — 대용량 첨부 설정 · 공개 내려받기 화면 (router/routes.ts 와 같은 이름 · 모양)
|
||||
{
|
||||
path: '/settings/mail/large-files',
|
||||
name: 'settings-mail-large-files',
|
||||
component: Empty,
|
||||
meta: { requiresAuth: true },
|
||||
},
|
||||
{ path: '/s/:token', name: 'public-share', component: Empty, meta: { public: true } },
|
||||
{
|
||||
path: '/settings/mail/notify',
|
||||
name: 'settings-mail-notify',
|
||||
|
||||
Reference in New Issue
Block a user