init
This commit is contained in:
13
README.md
13
README.md
@@ -81,6 +81,13 @@ npm run dev # 개발 서버 (http://localhost:5173)
|
||||
| marked 5 | Markdown → HTML 변환 |
|
||||
| tesseract.js| 이미지 OCR |
|
||||
|
||||
## 재빌드
|
||||
```bash
|
||||
npm run build
|
||||
npm run preview # http://localhost:4173
|
||||
```
|
||||
|
||||
|
||||
## 빌드 & 미리보기
|
||||
```bash
|
||||
nvm use 20
|
||||
@@ -88,12 +95,6 @@ npm ci # (처음/의존성 변경 시 권장) 이미 설치돼 있으면 npm
|
||||
npm run build
|
||||
```
|
||||
|
||||
## 재빌드
|
||||
```bash
|
||||
npm run build
|
||||
npm run preview # http://localhost:4173
|
||||
```
|
||||
|
||||
|
||||
## 프로덕션 배포 (Apache)
|
||||
이 프로젝트는 기본적으로 API 호출을 `API_BASE_URL` 기준으로 수행합니다.
|
||||
|
||||
@@ -58,7 +58,7 @@ export default function App() {
|
||||
lecture: <LecturePage />,
|
||||
// community 제거
|
||||
login: <LoginPage onLoggedIn={() => { handleNavigate('chat'); }} />,
|
||||
ai_news: <AiNewsPage />,
|
||||
ai_news: <AiNewsPage onNavigate={handleNavigate} />,
|
||||
qna: <QnaPage />,
|
||||
};
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ function normalizeExternalUrl(raw) {
|
||||
return s; // leave as-is (could be relative path on same origin)
|
||||
}
|
||||
|
||||
export default function AiNewsPage() {
|
||||
export default function AiNewsPage({ onNavigate }) {
|
||||
const { user } = useAuth();
|
||||
const [news, setNews] = useState([]);
|
||||
const [newsOffset, setNewsOffset] = useState(0);
|
||||
@@ -116,6 +116,10 @@ export default function AiNewsPage() {
|
||||
|
||||
const submitNews = async () => {
|
||||
if (!newsUrl.trim()) return;
|
||||
if (!user) {
|
||||
setNewsError('로그인 후 뉴스 등록이 가능합니다.');
|
||||
return;
|
||||
}
|
||||
await fetch(`${API_BASE_URL}/community/ai_news`, {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
@@ -191,11 +195,20 @@ export default function AiNewsPage() {
|
||||
</span>
|
||||
</div>
|
||||
)}
|
||||
{user && !showNewsEditor && (
|
||||
{!showNewsEditor && (
|
||||
<button
|
||||
onClick={() => setShowNewsEditor(true)}
|
||||
onClick={() => {
|
||||
if (!user) {
|
||||
// App 내부 라우팅(상태 기반) 지원
|
||||
if (typeof onNavigate === 'function') onNavigate('login');
|
||||
else window.location.href = '/login';
|
||||
return;
|
||||
}
|
||||
setShowNewsEditor(true);
|
||||
}}
|
||||
className="btn btn-primary"
|
||||
style={{ position: 'fixed', right: 24, bottom: 24, zIndex: 1000 }}
|
||||
style={{ position: 'fixed', right: 24, bottom: 24, zIndex: 1000, opacity: user ? 1 : 0.85 }}
|
||||
title={user ? '뉴스 등록' : '로그인 후 사용 가능합니다'}
|
||||
>
|
||||
뉴스등록
|
||||
</button>
|
||||
|
||||
Reference in New Issue
Block a user