Add recovery Excel export and automatic account detection
This commit is contained in:
@@ -7,7 +7,7 @@
|
||||
1. KOC 通过带 `task` 参数的任务链接进入。
|
||||
2. 只填写具有唯一性的微信号/手机号和领取数量。
|
||||
3. 领取后只能看到本次领取的笔记。
|
||||
4. 在单篇笔记详情页查看标题与正文,并一一回填发布账号昵称、发布链接和发布截图。
|
||||
4. 在单篇笔记详情页查看标题与正文,并一一回填发布链接和发布截图;发布账号由系统根据链接识别。
|
||||
|
||||
门户不直接连接数据库。浏览器只调用后台隔离开放的 KOC 领取与回填接口,后台仍是任务、笔记和发布数据的唯一数据源;后台管理页面和管理接口需要管理员登录。
|
||||
|
||||
|
||||
@@ -171,7 +171,6 @@ export default function Home() {
|
||||
const [toast, setToast] = useState("");
|
||||
const [claimantName, setClaimantName] = useState("");
|
||||
const [quantity, setQuantity] = useState(1);
|
||||
const [accountNickname, setAccountNickname] = useState("");
|
||||
const [publishUrl, setPublishUrl] = useState("");
|
||||
const [screenshot, setScreenshot] = useState<File | null>(null);
|
||||
const [creatorScreenshot, setCreatorScreenshot] = useState<File | null>(null);
|
||||
@@ -269,7 +268,6 @@ export default function Home() {
|
||||
useEffect(() => {
|
||||
if (!selected) return;
|
||||
const timer = window.setTimeout(() => {
|
||||
setAccountNickname(selected.account_nickname ?? "");
|
||||
setPublishUrl(selected.publish_url ?? "");
|
||||
setScreenshot(null);
|
||||
setCreatorScreenshot(null);
|
||||
@@ -634,7 +632,6 @@ export default function Home() {
|
||||
claimToken,
|
||||
delegationToken,
|
||||
distributionId: selected.id,
|
||||
accountNickname,
|
||||
publishUrl,
|
||||
}),
|
||||
});
|
||||
@@ -840,15 +837,6 @@ export default function Home() {
|
||||
<span>1 : 1</span>
|
||||
<p>以下信息只会绑定到当前笔记,不按顺序批量匹配。</p>
|
||||
</div>
|
||||
<label>
|
||||
<span>发布账号昵称</span>
|
||||
<input
|
||||
value={accountNickname}
|
||||
onChange={(event) => setAccountNickname(event.target.value)}
|
||||
placeholder="例如:小满的轻生活"
|
||||
required
|
||||
/>
|
||||
</label>
|
||||
<label>
|
||||
<span>发布链接</span>
|
||||
<input
|
||||
@@ -860,7 +848,7 @@ export default function Home() {
|
||||
required
|
||||
/>
|
||||
<small className="field-hint">
|
||||
系统会自动提取分享文案中的小红书链接
|
||||
系统会自动提取链接,并识别发布账号
|
||||
</small>
|
||||
</label>
|
||||
<label>
|
||||
|
||||
@@ -31,8 +31,10 @@ test("keeps claiming minimal and backfill one-to-one", async () => {
|
||||
assert.match(page, /claimantIdentifier:\s*claimantName/);
|
||||
assert.match(page, /const \[quantity, setQuantity\] = useState\(1\)/);
|
||||
assert.match(page, /distributionId:\s*selected\.id/);
|
||||
assert.match(page, /发布账号昵称/);
|
||||
assert.doesNotMatch(page, /发布账号昵称/);
|
||||
assert.doesNotMatch(page, /accountNickname/);
|
||||
assert.match(page, /发布链接/);
|
||||
assert.match(page, /识别发布账号/);
|
||||
assert.match(page, /inputMode="url"/);
|
||||
assert.match(page, /长链、短链或整段分享文案/);
|
||||
assert.doesNotMatch(page, /type="url"/);
|
||||
|
||||
Reference in New Issue
Block a user