Files
AIcreat/app/templates/index.html
2026-04-28 19:16:27 +08:00

257 lines
12 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>{{ app_name }}</title>
<link rel="icon" type="image/svg+xml" href="/static/favicon.svg?v=20260428h" />
<link rel="stylesheet" href="/static/style.css?v=20260428o" />
</head>
<body>
<div class="product-shell">
<aside class="side-nav" aria-label="主导航">
<div class="side-brand">
<div class="brand-lockup">
<img class="logo-mark" src="/static/favicon.svg?v=20260428h" alt="" />
<h1>{{ app_name }}</h1>
</div>
</div>
<nav class="nav-group">
<div class="nav-label">工作台</div>
<a class="nav-item is-active" href="/">内容生产</a>
<a class="nav-item" href="/settings">账号与模型</a>
<a class="nav-item" href="/billing">账单中心</a>
<a class="nav-item" href="/upgrade">升级</a>
<a class="nav-item" href="/profile">个人中心</a>
<a class="nav-item" href="/guide">新手引导</a>
</nav>
<div class="side-footer">生产环境 · 内容工作流</div>
</aside>
<div class="workspace">
<header class="topbar topbar-compact">
<div class="topbar-actions">
<span class="mode-badge global-mode-hint">当前模型模式:自由模型</span>
<div class="wechat-account-switch" title="发布将使用当前账号">
<label for="wechatAccountSelect" class="wechat-account-label">发表主体</label>
<select id="wechatAccountSelect" class="topbar-select" aria-label="切换公众号"></select>
<span id="wechatAccountStatus" class="muted small wechat-account-status" aria-live="polite"></span>
</div>
<a class="icon-btn" href="/upgrade" aria-label="升级" title="升级"></a>
<a class="icon-btn" href="/profile" aria-label="个人中心" title="个人中心"></a>
<a class="icon-btn" href="/guide" aria-label="新手引导" title="新手引导">?</a>
<a class="icon-btn" href="/settings" aria-label="设置" title="设置"></a>
<button id="clearDraftBtn" class="icon-btn topbar-btn" type="button" aria-label="清除草稿" title="清除草稿"></button>
<button id="logoutBtn" class="icon-btn topbar-btn" type="button" aria-label="退出登录" title="退出登录"></button>
</div>
</header>
<main class="layout">
<section class="panel input-panel">
<div class="panel-head">
<h2>写作输入</h2>
</div>
<div class="panel-scroll">
<section class="form-section">
<div class="field-head">
<label>内容</label>
<span id="sourceCount" class="meta">0 字</span>
</div>
<textarea id="sourceText" rows="5" placeholder="粘贴原文内容"></textarea>
<div class="grid2">
<div>
<label>标题提示</label>
<input id="titleHint" type="text" placeholder="可选:标题方向" />
</div>
<div class="multi-field">
<div class="field-head">
<label>目标读者</label>
<span class="meta">下拉多选</span>
</div>
<details class="multi-dropdown" id="audienceDetails">
<summary>
<span class="multi-dropdown-text" id="audienceSummary"></span>
</summary>
<div class="multi-dropdown-body" role="group" aria-label="目标读者选项">
<label class="multi-dropdown-option"><input type="checkbox" name="audienceChip" value="公众号运营者" checked />公众号运营者</label>
<label class="multi-dropdown-option"><input type="checkbox" name="audienceChip" value="产品经理" checked />产品经理</label>
<label class="multi-dropdown-option"><input type="checkbox" name="audienceChip" value="技术开发者" />技术开发者</label>
<label class="multi-dropdown-option"><input type="checkbox" name="audienceChip" value="创业者" />创业者</label>
<label class="multi-dropdown-option"><input type="checkbox" name="audienceChip" value="学生与研究者" />学生与研究者</label>
<label class="multi-dropdown-option"><input type="checkbox" name="audienceChip" value="普通读者" />普通读者</label>
</div>
</details>
<input id="audienceExtra" type="text" class="multi-extra" placeholder="可选补充" />
</div>
</div>
</section>
<section class="form-section">
<div class="grid2">
<div class="multi-field">
<div class="field-head">
<label>语气风格</label>
<span class="meta">下拉多选</span>
</div>
<details class="multi-dropdown" id="toneDetails">
<summary>
<span class="multi-dropdown-text" id="toneSummary"></span>
</summary>
<div class="multi-dropdown-body" role="group" aria-label="语气风格选项">
<label class="multi-dropdown-option"><input type="checkbox" name="toneChip" value="专业严谨" checked />专业严谨</label>
<label class="multi-dropdown-option"><input type="checkbox" name="toneChip" value="有观点" checked />有观点</label>
<label class="multi-dropdown-option"><input type="checkbox" name="toneChip" value="口语自然" checked />口语自然</label>
<label class="multi-dropdown-option"><input type="checkbox" name="toneChip" value="轻松幽默" />轻松幽默</label>
<label class="multi-dropdown-option"><input type="checkbox" name="toneChip" value="故事化叙事" />故事化叙事</label>
<label class="multi-dropdown-option"><input type="checkbox" name="toneChip" value="科普解读" />科普解读</label>
<label class="multi-dropdown-option"><input type="checkbox" name="toneChip" value="理性克制" />理性克制</label>
</div>
</details>
<input id="toneExtra" type="text" class="multi-extra" placeholder="可选补充" />
</div>
<div>
<label>避免词汇</label>
<input id="avoidWords" type="text" placeholder="可选:避免词汇" />
</div>
</div>
<div class="grid2">
<div>
<label>必须保留观点</label>
<input id="keepPoints" type="text" placeholder="可选:保留观点(逗号分隔)" />
</div>
<div class="target-chars-block">
<label>改写目标字数</label>
<div class="target-chars-inline">
<input id="targetBodyChars" type="number" min="180" max="2200" step="10" value="500" placeholder="目标字数" />
<div class="target-chars-quick" aria-label="快捷字数">
<button type="button" class="target-char-chip" data-target-chars="300">300</button>
<button type="button" class="target-char-chip is-active" data-target-chars="500">500</button>
<button type="button" class="target-char-chip" data-target-chars="800">800</button>
<button type="button" class="target-char-chip" data-target-chars="1200">1200</button>
</div>
</div>
</div>
</div>
</section>
<section class="form-section">
<button id="rewriteBtn" class="primary">改写并排版</button>
<p id="status" class="status"></p>
</section>
</div>
</section>
<section class="panel output-panel">
<div class="panel-head">
<h2>发布内容</h2>
</div>
<div class="panel-scroll">
<section class="form-section">
<label>标题</label>
<input id="title" type="text" />
<div class="field-head">
<label>摘要</label>
<span id="summaryCount" class="meta">0 字</span>
</div>
<textarea id="summary" rows="2"></textarea>
</section>
<section class="form-section">
<div class="field-head">
<label>公众号封面</label>
<span class="meta">900×383 横版头图</span>
</div>
<div class="cover-mode-switch" role="tablist" aria-label="封面模式切换">
<button id="coverModeManualBtn" class="cover-mode-btn is-active" type="button">手动上传封面</button>
<button id="coverModeAiBtn" class="cover-mode-btn" type="button">AI 自动生成封面</button>
</div>
<div id="coverAiSection" class="cover-ai-box" hidden>
<div class="cover-ai-copy">
<strong>AI 自动生成封面</strong>
<span>按标题生成并自动上传绑定。</span>
</div>
<div class="cover-tools">
<input id="coverImageModel" type="text" placeholder="文生图模型,如 wanx2.0-t2i-turbo" />
<button id="saveCoverImageModelBtn" class="subtle-btn" type="button">保存模型</button>
</div>
<div class="cover-tools">
<input id="coverStyleHint" type="text" placeholder="可选:封面风格" />
<button id="coverGenerateBtn" class="primary" type="button">按标题生成封面</button>
</div>
<label class="check-label cover-auto-check"
><input id="coverAutoAfterRewrite" type="checkbox" />改写后自动按输出标题生成封面</label
>
<div id="coverPreviewWrap" class="cover-preview-wrap" hidden>
<img id="coverPreview" class="cover-preview" alt="公众号封面预览" />
</div>
</div>
<div id="coverManualSection">
<label>手动上传封面</label>
<div class="cover-tools">
<input id="coverFile" type="file" accept="image/png,image/jpeg,image/jpg,image/webp" />
<button id="coverUploadBtn" class="subtle-btn" type="button">上传封面并绑定</button>
</div>
<div class="cover-tools">
<input id="coverUrl" type="url" placeholder="图片 URLhttp/https" />
<button id="coverUrlUploadBtn" class="subtle-btn" type="button">URL 上传并绑定</button>
</div>
</div>
<input id="thumbMediaId" type="text" placeholder="thumb_media_id可选" />
<p id="coverHint" class="muted small">当前为手动上传模式。</p>
</section>
<section class="form-section">
<div class="field-head">
<label>正文</label>
<span id="bodyCount" class="meta">0 字</span>
</div>
<div class="body-split">
<textarea id="body" rows="6" placeholder="可直接编辑正文"></textarea>
<div class="preview-panel">
<div class="field-head">
<label>排版预览</label>
<span class="meta">实时</span>
</div>
<div id="bodyPreview" class="markdown-preview"></div>
</div>
</div>
</section>
<section class="form-section">
<div class="poster-tools">
<div class="field-head">
<label>段落海报(首段不生成)</label>
<span class="meta">自动上传</span>
</div>
<div class="poster-actions-row">
<button id="posterGenerateBtn" class="subtle-btn" type="button">生成段落海报</button>
<label class="check-label poster-auto-check"
><input id="posterAutoInclude" type="checkbox" />发布时自动插入海报</label
>
</div>
<p id="posterHint" class="muted small">默认不生成海报,点击“生成段落海报”后再插入发布。</p>
<div id="posterPreviewList" class="poster-preview-list"></div>
</div>
</section>
<div class="actions publish-actions">
<button id="wechatBtn" class="primary">发布到公众号草稿箱</button>
<button id="imBtn" class="secondary">发送到 IM</button>
</div>
</div>
</section>
</main>
</div>
</div>
<script src="/static/mode-hint.js?v=20260428a"></script>
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
<script src="/static/app.js?v=20260428s"></script>
</body>
</html>