콘솔 + 공개 사이트
레타이두가 구축한 것을 배치하는 두 곳: 하나는 팀을 위한 곳, 다른 하나는 다른 모든 사람을 위한 곳입니다.

1. 콘솔 (내부)
콘솔은 Letaido가 내부 도구를 제공하는 회원 전용 웹 앱입니다. 팀의 비공개 대시보드 공간으로 생각하시면 됩니다.
- 워크스페이스 멤버만 접근 가능합니다. 익명 방문자는 로그인 화면이 표시됩니다.
- 앱은 인증 헤더에서 신원을 읽어오므로 모든 페이지에서 누가 보고 있는지 알 수 있습니다(소유자, 관리자, 멤버, 뷰어).
- 데이터베이스 접근:
console_db및console_site_db에 대한 전체 읽기/쓰기 권한이 있습니다.site_db에는 접근할 수 없습니다.
콘솔 페이지 구축 시기
- 출력은 팀 전용입니다.
- 내부 데이터를 쿼리하거나, 커넥터를 호출하거나, 컨트롤을 표시해야 합니다.
- 고객에게는 절대 표시되지 않습니다.
보고서, 애플리케이션, 아티팩트
콘솔에서 Letaido가 구축하는 모든 것은 세 가지 범주 중 하나에 속합니다. 콘솔 홈페이지에는 각각에 대한 탭(보고서, 애플리케이션, 아티팩트)과 함께 모든 것을 최신순으로 나열하고 제목 옆에 카테고리를 태그로 표시하는 홈 탭이 있습니다.

| 구분 | 정의 | 팀에서 사용하는 방식 | 예시 |
|---|---|---|---|
| 보고서 | 차트, 표, 필터링된 데이터 뷰 | 열어서 숫자를 확인하고, 필터링한 후 나갑니다 | Ahrefs 브랜드 권위, AI 가시성, 순위 모니터 |
| 애플리케이션 | 다중 페이지 도구 및 복잡한 워크플로우 | 입력값을 붙여넣고, 파이프라인을 실행하여 결과를 얻은 후, 과거 실행 기록으로 돌아갑니다 | 배틀카드 생성기, AI 가시성 대시보드, 유료 광고 캠페인 빌더 |
| 아티팩트 | 일회성 항목: 차트, 표, 카피 조각 | 훑어보고, 복사하고, 공유한 후 넘어갑니다 | 이메일 미리보기, 홈페이지 블록, AEO 101 섹션, Ahrefs 기능 라이브러리 |
보고서
보고서는 무언가의 상태를 확인하기 위해 여는 것입니다. 가치는 표시된 데이터에 있으며, 주요 상호작용은 읽기 또는 필터링입니다. 보고서는 일정에 따라 또는 요청 시 데이터 소스에서 새로고침됩니다. 보고서는 /reports/<slug>/에 위치합니다.
"이것이 왜 존재하는가"에 대한 답변이 "X를 한눈에 볼 수 있도록 하기 위해서입니다"(우리 순위의 상태, 이번 주 점유율, 이번 달 브랜드 권위 변화)일 때 보고서를 요청하십시오.
활용 사례
애플리케이션은 작업을 수행하는 데 사용하는 것입니다. 가치는 워크플로에 있으며, 주요 상호작용은 생성, 편집 또는 제작입니다. 애플리케이션은 입력을 받아 다단계 파이프라인을 실행하고, 결과를 저장하며, 팀이 과거 실행 내역으로 돌아갈 수 있도록 합니다. 애플리케이션은 /applications/<slug>/에 위치합니다.
"X를 반복적으로 수행할 때마다 워크플로우를 다시 구축하지 않고도 실행할 수 있도록 하기 위해"라는 답변이 "이것이 왜 존재하는가"에 대한 답변일 때 애플리케이션을 요청하세요(배틀카드 생성, 캠페인 브리프 실행, 카피 제작 등).
아티팩트
아티팩트는 한 번 생성하여 나중에 참조할 수 있는 단일 출력물입니다. 작고 독립적이며, 완전한 앱이나 보고서로 만들 필요가 없는 콘텐츠입니다. 아티팩트는 /artifacts/<slug>/에 저장됩니다.
답변이 "팀이 볼 수 있는 곳이 필요해서"인 경우 아티팩트를 요청하세요 (홈페이지 블록 미리보기, 이번 주 이메일, 기능 라이브러리, 영업용 원페이저 등).
어떤 것을 원하시는지 확실하지 않으신가요?
결과를 설명하면 에이전트가 적절한 버킷을 선택합니다.
- "경쟁사별 주간 브랜드 권위를 보여주세요." → 보고서.
- "경쟁사 URL을 붙여넣으면 배틀카드를 받을 수 있는 도구를 만들어주세요." → 애플리케이션.
- "다음 주 뉴스레터 미리보기를 생성해주세요." → 아티팩트.
2. 공개 사이트(외부)
공개 사이트는 워크스페이스 중 개방된 인터넷에서 접근할 수 있는 부분으로, 팀이 사용하는 콘솔과 완전히 분리되어 있습니다. 이는 워크스페이스 외부의 사람들에게 콘텐츠를 제공하기 위해 존재합니다.
- URL 패턴: 모든 항목에
/<route>사용. 일반적인 패턴: 일회성 공유 보고서는/u/<token>, 검토된 실행은/r2s/<token>, 이 문서는/docs/<slug>. - 가시성은 워크스페이스 수준 토글로 제어됩니다(아래 모드 참조).
- 데이터베이스 액세스:
site_db읽기/쓰기(소유).console_site_db읽기/쓰기.console_db에는 접근 불가.
다음과 같은 경우 공개 사이트 페이지를 구축합니다: - 고객, 잠재 고객 또는 익명 방문자가 무언가를 확인해야 하는 경우. - 이메일이나 Slack 외부에서 공유 가능한 URL이 필요한 경우. - 데이터가 이미 생성되어 있고(콘솔에서 또는 작업을 통해) 단순히 제공하기만 하면 되는 경우.
공개 사이트를 위한 세 가지 모드
공개 사이트에는 세 가지 상태가 있으며, 워크스페이스 UI에서 소유자 또는 관리자가 전환할 수 있습니다. 에이전트 자체는 이러한 상태를 전환할 수 없습니다.
- off: nginx가 모든 사용자에게 403을 반환합니다. Flask 프로세스는 여전히 실행 중이지만 트래픽이 도달하지 않습니다.
- authorized: 워크스페이스 멤버와 명시적으로 초대된 게스트가 볼 수 있습니다. 출시 전 검토에 적합합니다.
- open: URL을 가진 모든 사용자가 볼 수 있습니다. 모든 방문자를 신뢰할 수 없는 것으로 간주합니다.
모드가 open일 때, 에이전트는 추가 기본값을 적용합니다: 모든 방문자 입력에 대한 Pydantic 검증, 방문자별 커넥터 호출 없음(site_db에 캐시 대신 사용), 사이트 표면에 대한 별도의 커넥터 승인, 그리고 표시되는 출력은 저장 전에 정제됩니다.
교차 표면 통신
콘솔과 공개 사이트는 서로 다른 프로세스에서 실행됩니다. 여전히 협력할 수 있지만, 오직 하나의 명시적인 채널인 console_site_db 데이터베이스를 통해서만 가능합니다.
- 콘솔은 데이터(보고서, 브리프, 아티팩트)를 테이블에 작성합니다.
- 공개 사이트는 해당 테이블을 읽고 토큰으로 보호된 URL에서 렌더링합니다.
- 사이트는 상호작용 신호(예: "방문자가 클릭함")를 다시 작성할 수 있으며, 콘솔은 이를 읽습니다.
에이전트는 콘솔 쿼리를 공개 경로를 통해 프록시하려고 시도하지 않습니다. REVOKE는 데이터베이스 계층에 있으며, 어쨌든 실패할 것이고 잘못된 설계이기도 합니다.