Add recovery Excel export and automatic account detection

This commit is contained in:
巫凤萍
2026-08-05 11:40:29 +08:00
parent b081946752
commit 85110bbfce
15 changed files with 852 additions and 36 deletions

View File

@@ -7,7 +7,7 @@
1. KOC 通过带 `task` 参数的任务链接进入。
2. 只填写具有唯一性的微信号/手机号和领取数量。
3. 领取后只能看到本次领取的笔记。
4. 在单篇笔记详情页查看标题与正文,并一一回填发布账号昵称、发布链接和发布截图。
4. 在单篇笔记详情页查看标题与正文,并一一回填发布链接和发布截图;发布账号由系统根据链接识别
门户不直接连接数据库。浏览器只调用后台隔离开放的 KOC 领取与回填接口,后台仍是任务、笔记和发布数据的唯一数据源;后台管理页面和管理接口需要管理员登录。

View File

@@ -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>

View File

@@ -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"/);