{{ authMode==='register' ? 'Tạo hồ sơ mới' : 'Đăng nhập' }}

Mỗi mật khẩu gắn với một hồ sơ cá nhân. Sở thích và công việc được lưu riêng theo hồ sơ.

Tối thiểu 12 ký tự. Hãy lưu lại mật khẩu; không có email để khôi phục.

{{ authError }}

News Agent — thu thập và viết tin

Pipeline: khám phá → thu thập → chọn bài → dàn ý → viết → kiểm chứng → duyệt · LLM: {{ llmMode }}

1 Tạo công việc mới

Nhập URL chuyên mục / RSS / bài cụ thể cùng định hướng biên tập, hệ thống tự chạy pipeline.

Chủ đề vẫn dùng để tìm bài phù hợp. Mô tả vai trò, bố cục, giọng văn và yêu cầu riêng cho bài viết.

{{ form.customPrompt.length }} ký tự

Prompt tùy chỉnh cần cấu hình LLM thật. Với Stub, hệ thống chỉ tạo bản thảo khung từ nguồn.

{{ createdMsg }}

Bộ nhớ và sở thích viết

Sở thích đã xác nhận được áp dụng theo phạm vi dự án hoặc dùng chung. Gợi ý học từ phản hồi chỉ có hiệu lực sau khi bạn xác nhận.

Bộ nhớ ảnh hưởng đến cách viết khi dùng LLM thật; Stub không cá nhân hóa văn phong. Project này hiện dùng một hồ sơ cục bộ.

Chưa có sở thích được lưu. Các sở thích suy ra sẽ xuất hiện sau nhiều phản hồi cùng xu hướng.
{{ p.preference }} {{ p.confirmed ? 'Đã xác nhận' : 'Gợi ý — cần xác nhận' }}
{{ p.project_id || 'Dùng chung' }} · Độ tin cậy {{ Math.round(p.confidence*100) }}% · {{ p.evidence }}

2 Tiến độ & bài nguồn

{{ pollText }}

Trạng thái: {{ statusVn(job.status) }} job {{ job.id }} · {{ job.updated_at }}

  • {{ statusVn(s) }}
  • Lỗi
Lỗi job: {{ job.error }}
Nhật ký xử lý ({{ job.events.length }})
[{{ e.at }}] {{ e.step }}/{{ e.status }} — {{ e.message }}

Nguồn đầu vào

{{ job && !['ready','failed'].includes(job.status) ? 'Đang cập nhật trạng thái nguồn...' : 'Chưa có dữ liệu nguồn.' }}
URLLoạiTrạng thái
{{ s.url }}{{ s.type }}{{ s.fetch_status }}

3 Chọn bài & bản thảo

Tích bài muốn dùng → Lưu lựa chọn → Viết lại. Bài đã tích không mất khi tự động cập nhật.

— {{ articles.length }} bài, đang tích {{ selectedIds.size }}

{{ job && !['ready','failed'].includes(job.status) ? 'Đang chờ worker thu thập bài viết. Danh sách sẽ tự cập nhật.' : (job?.status==='failed' ? 'Job thất bại hoặc không thu được bài. Xem nhật ký xử lý.' : 'Không tìm thấy bài phù hợp. Kiểm tra nguồn và nhật ký xử lý.') }}
{{ a.relevance_score }}{{ a.url }} · {{ a.published_at }} · {{ a.selection_reason }}
{{ (a.excerpt||'').slice(0,400) }}

Chưa có bản thảo.
Có phiên bản mới (v{{ pendingNew?.version }}). Bạn đang sửa dở bản cũ — (mất nội dung chưa lưu)

Job {{ draft.job_id }} · v{{ draft.version }} · {{ statusVn(draft.status) }}

{{ w }}

Nguồn trích dẫn ({{ draft.citations.length }})

Chưa có trích dẫn.
[{{ c.article_id }}] {{ c.title }}
{{ c.claim_location }} — {{ (c.source_excerpt||'').slice(0,200) }}
{{ c.source_url }}
MVP theo bản thiết kế — bản thảo luôn chờ duyệt, xuất bản là thao tác riêng.
{{ t.msg }}