Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions ci-setup-terms-zh-CN.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<!doctype html>
<html lang="zh-CN"><head>
<meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
<title>USD 99 CSV GitHub Actions 配置服务 — 范围与条款</title>
<meta name="description" content="为一个仓库配置 CSV GitHub Actions 检查的固定范围、交付、付款、取消和安全条款。">
<link rel="canonical" href="https://softpeanut.github.io/csv-preflight/ci-setup-terms-zh-CN.html">
<link rel="alternate" hreflang="en" href="https://softpeanut.github.io/csv-preflight/ci-setup-terms.html">
<link rel="stylesheet" href="styles.css">
</head><body><main>
<p><a href="https://github.com/softpeanut/csv-preflight-action/blob/main/README.zh-CN.md">← 中文使用说明</a> · <a href="ci-setup-terms.html">English terms</a></p>
<header><span class="eyebrow">固定范围 CSV CI 配置 · USD 99</span><h1>一个仓库,一条 CSV 质量门禁。</h1><p>最后更新:2026 年 8 月 27 日。</p></header>
<section class="card">
<h2>包含内容</h2><p>固定价格为 USD 99。服务为一个公开 GitHub 仓库或经过脱敏的最小复现配置一个 GitHub Actions 工作流,并检查一个最大 10 MiB 的通用 UTF-8 CSV 路径。交付形式为公开仓库中的一个 Pull Request,或针对脱敏示例的一份工作流补丁。工作流使用 CSV Preflight 的免费公开 Action、仓库只读权限、按路径触发、规范化文件与问题报告 artifact、五分钟超时,并在发现结构问题时失败。交付还包括简短的使用说明,以及在七个自然日内提出的一次范围内修改。</p>
<h2>不包含内容</h2><p>本服务不包含多个 CSV 文件、特定导入器的 Schema 或业务规则、自定义解析功能、数据修复、实际导入操作、私有仓库访问、私有依赖、密钥、自托管 Runner、付费基础设施、受监管或敏感数据、持续维护,也不保证外部导入器接受文件。本服务不是审计、安全评估或 GitHub 官方服务。</p>
<h2>适用性与交付</h2><p>公开的适用性确认 Issue 只能链接公开仓库或脱敏示例,不得包含数据、凭据、私有链接、客户信息或付款凭证。双方书面确认范围并验证付款后,交付期限为三个工作日。客户负责审核并合并 Pull Request 或应用补丁,也负责仓库政策、第三方 Action 的版本固定、artifact 保留策略,以及其数据的正确性和权利。</p>
<h2>付款</h2><p>公开 Issue 不会要求付款。书面确认范围和档期后,卖方按 USD 99 报出准确的 sats 金额,并提供与该 Issue 绑定、有效期 30 分钟的一次性 BOLT11 Lightning invoice。卖方直接验证是否结算。请勿把小费或未经请求的转账当作本服务付款。</p>
<h2>取消、修改与退款</h2><p>买方可在工作开始前取消,并通过其提供的兼容 Lightning invoice 收回已支付的 sats。工作开始后,固定费用原则上不退款;如果卖方没有交付双方约定的 Pull Request 或补丁,则退回已支付的 sats。七个自然日内提出的一次范围内修改已包含。新增文件、Schema 规则、环境或功能需要另行约定。强制适用的消费者保护规定优先于冲突条款。</p>
<h2>代码与隐私</h2><p>客户可以在自己的仓库中使用和修改交付的工作流与使用说明。CSV Preflight 的现有源码继续适用其公开许可证,通用技术不会转让排他所有权。卖方不会索取私有仓库访问权限、凭据或真实 CSV 内容。GitHub、Stacker News 和 Lightning 网络各自适用其服务条款与隐私政策。</p>
<p><a href="https://github.com/softpeanut/csv-preflight/issues/new?template=ci-setup.yml">先确认项目是否适用 ↗</a></p>
</section>
</main></body></html>
15 changes: 15 additions & 0 deletions offer.test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ const action = readFileSync(new URL("./action.yml", import.meta.url), "utf8");
const shopifyGuideKo = readFileSync(new URL("./shopify-csv-guide-ko.html", import.meta.url), "utf8");
const githubActionGuide = readFileSync(new URL("./validate-csv-github-actions.html", import.meta.url), "utf8");
const ciSetupTerms = readFileSync(new URL("./ci-setup-terms.html", import.meta.url), "utf8");
const ciSetupTermsZhCn = readFileSync(new URL("./ci-setup-terms-zh-CN.html", import.meta.url), "utf8");
const ciSetupTemplate = readFileSync(new URL("./.github/ISSUE_TEMPLATE/ci-setup.yml", import.meta.url), "utf8");
import { analyze, serializeCsv } from "./csv.mjs";

Expand Down Expand Up @@ -165,6 +166,19 @@ test("offers a bounded $99 one-repository CI setup without collecting secrets",
assert.doesNotMatch(page, /Buy now|Book now|instant setup/i);
});

test("publishes equivalent bounded Chinese terms for the catalog audience", () => {
assert.match(ciSetupTermsZhCn, /固定价格为 USD 99/);
assert.match(ciSetupTermsZhCn, /一个公开 GitHub 仓库或经过脱敏的最小复现/);
assert.match(ciSetupTermsZhCn, /最大 10 MiB/);
assert.match(ciSetupTermsZhCn, /三个工作日/);
assert.match(ciSetupTermsZhCn, /一次性 BOLT11 Lightning invoice/);
assert.match(ciSetupTermsZhCn, /工作开始前取消/);
assert.match(ciSetupTermsZhCn, /七个自然日内提出的一次范围内修改/);
assert.match(ciSetupTermsZhCn, /不会索取私有仓库访问权限、凭据或真实 CSV 内容/);
assert.match(ciSetupTermsZhCn, /template=ci-setup\.yml/);
assert.doesNotMatch(ciSetupTermsZhCn, /立即购买|立即预订|保证导入/);
});

test("publishes a bounded Korean Shopify CSV troubleshooting guide", () => {
assert.match(koreanPage, /shopify-csv-guide-ko\.html/);
assert.match(shopifyGuideKo, /UTF-8과 쉼표 구분/);
Expand Down Expand Up @@ -197,6 +211,7 @@ test("publishes truthful search metadata for every public page", () => {
"https://softpeanut.github.io/csv-preflight/shopify-csv-guide-ko.html",
"https://softpeanut.github.io/csv-preflight/validate-csv-github-actions.html",
"https://softpeanut.github.io/csv-preflight/ci-setup-terms.html",
"https://softpeanut.github.io/csv-preflight/ci-setup-terms-zh-CN.html",
]) {
assert.match(sitemap, new RegExp(`<loc>${location.replaceAll(".", "\\.")}</loc>`));
}
Expand Down
4 changes: 4 additions & 0 deletions sitemap.xml
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,8 @@
<loc>https://softpeanut.github.io/csv-preflight/ci-setup-terms.html</loc>
<lastmod>2026-08-27</lastmod>
</url>
<url>
<loc>https://softpeanut.github.io/csv-preflight/ci-setup-terms-zh-CN.html</loc>
<lastmod>2026-08-27</lastmod>
</url>
</urlset>
Loading