feat: ship self-hosted KOC LOOP workflows
This commit is contained in:
@@ -14,16 +14,16 @@ test("builds the branded external task shell", async () => {
|
||||
assert.match(layout, /KOC LOOP|外部任务领取/);
|
||||
assert.match(layout, /og\.png/);
|
||||
assert.match(page, /正在打开任务/);
|
||||
await access(new URL("../dist/server/index.js", import.meta.url));
|
||||
await access(new URL("../out/index.html", import.meta.url));
|
||||
});
|
||||
|
||||
test("keeps claiming minimal and backfill one-to-one", async () => {
|
||||
const [page, layout, packageJson, hosting] =
|
||||
const [page, layout, packageJson, nextConfig] =
|
||||
await Promise.all([
|
||||
readFile(new URL("../app/page.tsx", import.meta.url), "utf8"),
|
||||
readFile(new URL("../app/layout.tsx", import.meta.url), "utf8"),
|
||||
readFile(new URL("../package.json", import.meta.url), "utf8"),
|
||||
readFile(new URL("../.openai/hosting.json", import.meta.url), "utf8"),
|
||||
readFile(new URL("../next.config.ts", import.meta.url), "utf8"),
|
||||
]);
|
||||
|
||||
assert.match(page, /微信号\s*\/\s*手机号/);
|
||||
@@ -55,7 +55,8 @@ test("keeps claiming minimal and backfill one-to-one", async () => {
|
||||
assert.match(page, /这篇笔记已回填,不会与其他笔记错配/);
|
||||
assert.doesNotMatch(page, /批量回填/);
|
||||
assert.doesNotMatch(page, /复制标题和正文/);
|
||||
assert.match(page, /PRODUCTION_ADMIN_ORIGIN/);
|
||||
assert.match(page, /CONFIGURED_ADMIN_ORIGIN/);
|
||||
assert.match(page, /window\.location\.origin/);
|
||||
assert.match(page, /\/api\/partner-upload/);
|
||||
assert.match(page, /"X-KOC-Distribution":\s*selectedItem\.id/);
|
||||
assert.match(page, /"X-KOC-Upload-Kind":\s*kind/);
|
||||
@@ -65,22 +66,50 @@ test("keeps claiming minimal and backfill one-to-one", async () => {
|
||||
assert.match(page, /creatorExposure/);
|
||||
assert.match(page, /creatorViews/);
|
||||
assert.match(page, /截图仅用于运营核对,不再自动OCR/);
|
||||
assert.match(page, /evidenceImageUrl/);
|
||||
assert.match(page, /evidenceImageUrl\(selected, "publish"\)/);
|
||||
assert.match(page, /evidenceImageUrl\(selected, "creator"\)/);
|
||||
assert.match(page, /ImageLightbox/);
|
||||
assert.match(page, /点击查看大图/);
|
||||
assert.match(page, /publishScreenshotPreview/);
|
||||
assert.match(page, /creatorScreenshotPreview/);
|
||||
assert.match(page, /曝光量/);
|
||||
assert.match(page, /阅读量/);
|
||||
assert.doesNotMatch(page, /recognizeCreatorMetrics/);
|
||||
assert.match(page, /note-index \$\{item\.publish_url \? "done" : ""\}/);
|
||||
assert.match(page, /note-index \$\{\(isScreenshotTask \? item\.result_submitted_at : item\.publish_url\) \? "done" : ""\}/);
|
||||
assert.match(packageJson, /"fflate":\s*"0\.7\.4"/);
|
||||
assert.doesNotMatch(packageJson, /tesseract\.js/);
|
||||
assert.match(layout, /逐篇查看笔记详情并一一回填/);
|
||||
assert.doesNotMatch(packageJson, /react-loading-skeleton/);
|
||||
const hostingConfig = JSON.parse(hosting);
|
||||
assert.equal(hostingConfig.d1, null);
|
||||
assert.equal(hostingConfig.r2, null);
|
||||
assert.match(nextConfig, /output: "export"/);
|
||||
assert.match(nextConfig, /basePath: "\/koc"/);
|
||||
|
||||
await access(new URL("../public/og.png", import.meta.url));
|
||||
await access(new URL("../public/favicon.svg", import.meta.url));
|
||||
});
|
||||
|
||||
test("renders screenshot-only tasks with anonymous delegation and multi-image uploads", async () => {
|
||||
const [page, styles] = await Promise.all([
|
||||
readFile(new URL("../app/page.tsx", import.meta.url), "utf8"),
|
||||
readFile(new URL("../app/globals.css", import.meta.url), "utf8"),
|
||||
]);
|
||||
|
||||
assert.match(page, /screenshot_collect/);
|
||||
assert.match(page, /小红书搜索关键词/);
|
||||
assert.match(page, /上传小红书 AI 总结截图/);
|
||||
assert.match(page, /submit_screenshot_result/);
|
||||
assert.match(page, /"task-result"/);
|
||||
assert.match(page, /不需要填写发布链接或其他数据/);
|
||||
assert.match(page, /multiple/);
|
||||
assert.match(page, /taskResultScreenshots/);
|
||||
assert.match(page, /task-result-thumb/);
|
||||
assert.match(page, /最多9张/);
|
||||
assert.doesNotMatch(page, /target="_blank"[\s\S]{0,200}task-result-thumb uploaded/);
|
||||
assert.match(styles, /\.task-result-gallery/);
|
||||
assert.match(styles, /\.image-lightbox/);
|
||||
assert.match(styles, /\.evidence-preview-button/);
|
||||
});
|
||||
|
||||
test("shows D1 timestamps in Beijing time", () => {
|
||||
const stored = "2026-07-29 05:36:00";
|
||||
assert.equal(parseStoredDate(stored).toISOString(), "2026-07-29T05:36:00.000Z");
|
||||
|
||||
Reference in New Issue
Block a user