<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>今天穿什么 隐私政策</title>
<style>
  :root {
    --paper: #f4f1ea;
    --paper-card: #ffffff;
    --ink: #1c1c1e;
    --ink-muted: #6b6a63;
    --ink-faint: #97958c;
    --accent: #3c4a6b;
    --accent-soft: #e8ebf1;
    --rule: rgba(28,28,30,0.12);
    --rule-strong: rgba(28,28,30,0.22);
  }
  @media (prefers-color-scheme: dark) {
    :root {
      --paper: #17181b;
      --paper-card: #202126;
      --ink: #ece9e2;
      --ink-muted: #a3a196;
      --ink-faint: #706e66;
      --accent: #93a6cc;
      --accent-soft: #262b38;
      --rule: rgba(236,233,226,0.14);
      --rule-strong: rgba(236,233,226,0.24);
    }
  }

  * { box-sizing: border-box; }
  body {
    margin: 0;
    background: var(--paper);
    color: var(--ink);
    font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Helvetica Neue", sans-serif;
    line-height: 1.7;
    -webkit-font-smoothing: antialiased;
  }
  .serif {
    font-family: "STSong", "Songti SC", "Noto Serif SC", serif;
  }
  a { color: var(--accent); text-decoration-thickness: 1px; text-underline-offset: 2px; }
  a:focus-visible {
    outline: 2px solid var(--accent);
    outline-offset: 3px;
    border-radius: 2px;
  }

  .shell {
    max-width: 920px;
    margin: 0 auto;
    padding: clamp(28px, 6vw, 64px) clamp(20px, 5vw, 40px) 80px;
  }

  header.mast {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 24px;
    flex-wrap: wrap;
    padding-bottom: 28px;
    margin-bottom: 8px;
    border-bottom: 2px solid var(--ink);
  }
  .mast-mark {
    display: flex;
    align-items: center;
    gap: 12px;
  }
  .mast-tag {
    width: 34px; height: 34px;
    border: 1.6px solid var(--ink);
    border-radius: 7px;
    position: relative;
    flex: none;
  }
  .mast-tag::before {
    content: "";
    position: absolute;
    top: 8px; left: 8px; right: 8px; bottom: 8px;
    border-top: 1.4px dashed var(--ink-faint);
  }
  .mast-title h1 {
    font-size: clamp(22px, 3.4vw, 30px);
    margin: 0 0 2px;
    letter-spacing: 0.01em;
    text-wrap: balance;
  }
  .mast-title p {
    margin: 0;
    color: var(--ink-muted);
    font-size: 13.5px;
  }
  .mast-meta {
    text-align: right;
    font-size: 12.5px;
    color: var(--ink-faint);
    font-variant-numeric: tabular-nums;
    line-height: 1.9;
  }
  .mast-meta b { color: var(--ink-muted); font-weight: 600; }

  .summary {
    margin: 32px 0 44px;
    background: var(--paper-card);
    border: 1px solid var(--rule);
    border-radius: 14px;
    padding: 22px clamp(18px, 4vw, 28px);
  }
  .summary h2 {
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.11em;
    color: var(--accent);
    margin: 0 0 14px;
    font-weight: 700;
  }
  .summary ul {
    margin: 0;
    padding: 0;
    list-style: none;
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 14px 28px;
  }
  .summary li {
    display: flex;
    gap: 10px;
    font-size: 14.5px;
    color: var(--ink);
  }
  .summary li::before {
    content: "";
    width: 6px; height: 6px;
    border-radius: 50%;
    background: var(--accent);
    margin-top: 8px;
    flex: none;
  }
  .summary li span.k { color: var(--ink-muted); }

  .layout {
    display: grid;
    grid-template-columns: 200px 1fr;
    gap: 48px;
    align-items: start;
  }
  @media (max-width: 760px) {
    .layout { grid-template-columns: 1fr; }
    nav.toc { display: none; }
  }
  nav.toc {
    position: sticky;
    top: 24px;
    font-size: 13px;
  }
  nav.toc ol {
    list-style: none;
    margin: 0; padding: 0;
    border-left: 1px solid var(--rule);
  }
  nav.toc li a {
    display: block;
    padding: 7px 0 7px 16px;
    color: var(--ink-muted);
    text-decoration: none;
    border-left: 1.5px solid transparent;
    margin-left: -1px;
  }
  nav.toc li a:hover {
    color: var(--ink);
    border-left-color: var(--accent);
  }

  main section {
    padding-top: 34px;
    margin-top: 34px;
    border-top: 1px solid var(--rule);
    scroll-margin-top: 20px;
  }
  main section:first-child { margin-top: 0; padding-top: 0; border-top: none; }

  .sec-num {
    font-size: 12px;
    color: var(--ink-faint);
    font-variant-numeric: tabular-nums;
    letter-spacing: 0.06em;
    margin-bottom: 6px;
    display: block;
  }
  main h2 {
    font-size: 19px;
    margin: 0 0 14px;
    text-wrap: balance;
  }
  main h3 {
    font-size: 15px;
    margin: 22px 0 8px;
    color: var(--ink);
  }
  main p {
    margin: 0 0 14px;
    font-size: 15px;
    max-width: 66ch;
    color: var(--ink);
  }
  main p.muted { color: var(--ink-muted); font-size: 13.5px; }

  .datatable {
    width: 100%;
    border-collapse: collapse;
    margin: 6px 0 20px;
    font-size: 13.8px;
    overflow-x: auto;
    display: block;
  }
  .datatable thead, .datatable tbody { display: table; width: 100%; table-layout: fixed; }
  .datatable th {
    text-align: left;
    font-size: 11.5px;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--ink-faint);
    font-weight: 600;
    padding: 8px 12px 8px 0;
    border-bottom: 1px solid var(--rule-strong);
  }
  .datatable td {
    padding: 11px 12px 11px 0;
    border-bottom: 1px solid var(--rule);
    color: var(--ink-muted);
    vertical-align: top;
  }
  .datatable td:first-child, .datatable th:first-child { color: var(--ink); font-weight: 500; width: 27%; }

  .pill {
    display: inline-block;
    font-size: 11.5px;
    padding: 2px 9px;
    border-radius: 999px;
    background: var(--accent-soft);
    color: var(--accent);
    font-weight: 600;
    letter-spacing: 0.02em;
  }

  .callout {
    background: var(--accent-soft);
    border-radius: 10px;
    padding: 14px 18px;
    font-size: 13.8px;
    color: var(--ink);
    margin: 16px 0;
  }
  .callout b { color: var(--accent); }

  footer {
    margin-top: 56px;
    padding-top: 24px;
    border-top: 1px solid var(--rule);
    display: flex;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 12px;
    font-size: 12.5px;
    color: var(--ink-faint);
  }

  @media (prefers-reduced-motion: no-preference) {
    main section { scroll-behavior: smooth; }
  }
</style>
</head>
<body>
<div class="shell">

  <header class="mast">
    <div class="mast-mark">
      <div class="mast-tag" aria-hidden="true"></div>
      <div class="mast-title">
        <h1 class="serif">今天穿什么 · 隐私政策</h1>
        <p>OOTD Wardrobe App Privacy Policy</p>
      </div>
    </div>
    <div class="mast-meta">
      <div>开发者：<b>丹迪·唐（个人开发者）</b></div>
      <div>生效日期：<b>2026 年 7 月 20 日</b></div>
      <div>文档版本：<b>v1.0</b></div>
    </div>
  </header>

  <div class="summary">
    <h2>30 秒读完</h2>
    <ul>
      <li><span class="k">不需要注册：</span>App 内没有账号系统，不收集姓名、手机号、邮箱等身份信息。</li>
      <li><span class="k">照片留在你手机：</span>拍摄的衣物照片存在设备本地，AI 处理是"用完即走"，不会被开发者长期保存或用于训练模型。</li>
      <li><span class="k">位置只为算气温：</span>只有你主动生成搭配时才会临时获取大致位置，不会在后台持续定位。</li>
      <li><span class="k">不做广告追踪：</span>没有广告 SDK，不与第三方共享数据用于广告投放，App 隐私清单中「追踪」一项为「否」。</li>
      <li><span class="k">订阅由苹果处理：</span>支付信息只经过 Apple，开发者看不到你的银行卡或支付宝信息。</li>
      <li><span class="k">随时可以清空：</span>删除单品、关闭权限或直接卸载 App，本地数据即随之清除。</li>
    </ul>
  </div>

  <div class="layout">
    <nav class="toc" aria-label="目录">
      <ol>
        <li><a href="#collect">1. 我们收集什么</a></li>
        <li><a href="#use">2. 用来做什么</a></li>
        <li><a href="#store">3. 存储与保留</a></li>
        <li><a href="#share">4. 第三方服务</a></li>
        <li><a href="#rights">5. 你的控制权</a></li>
        <li><a href="#subscribe">6. 订阅与支付</a></li>
        <li><a href="#children">7. 未成年人</a></li>
        <li><a href="#changes">8. 政策更新</a></li>
        <li><a href="#contact">9. 联系我们</a></li>
      </ol>
    </nav>

    <main>

      <section id="collect">
        <span class="sec-num">01</span>
        <h2>我们收集什么信息</h2>
        <p>「今天穿什么」是一款帮你管理衣橱、生成穿搭方案的 App。为了实现这些功能，我们会在你主动使用相应功能时，收集下面几类信息——不多收，也不在你没打开某个功能时提前收集。</p>

        <table class="datatable">
          <thead>
            <tr><th>信息类型</th><th>什么时候收集</th><th>用途</th></tr>
          </thead>
          <tbody>
            <tr>
              <td>衣物照片<br /><span class="pill">相机 / 相册</span></td>
              <td>你拍摄或从相册选择一件衣服时</td>
              <td>识别衣物类别、颜色、材质等信息，用于生成搭配建议</td>
            </tr>
            <tr>
              <td>形象照片（可选）<br /><span class="pill">相机 / 相册</span></td>
              <td>你主动使用「个人形象分析」功能时，可随时跳过</td>
              <td>分析后生成一份文字风格档案，用于让搭配建议更贴合你；照片本身分析后即弃，不留底</td>
            </tr>
            <tr>
              <td>大致位置<br /><span class="pill">粗略定位</span></td>
              <td>你点击「生成搭配」的那一刻</td>
              <td>只用来查询当前气温，推荐适合当天天气的穿搭；不做持续定位、不做精确定位</td>
            </tr>
            <tr>
              <td>设备标识符<br /><span class="pill">非广告标识符</span></td>
              <td>使用识别、生图等 AI 功能时随请求发送</td>
              <td>服务器按设备做每日次数限制，防止恶意刷量；不能被用来跨 App 追踪你</td>
            </tr>
            <tr>
              <td>订阅状态<br /><span class="pill">Apple 提供</span></td>
              <td>购买或恢复订阅时</td>
              <td>解锁 App 内的会员权益；我们拿到的只是"是否已订阅"，看不到你的付款方式</td>
            </tr>
            <tr>
              <td>极简使用事件<br /><span class="pill">匿名统计</span></td>
              <td>看到订阅页、点击开通试用、订阅成功等少数几个节点</td>
              <td>了解功能是否好用、订阅引导是否清晰，用于改进产品；不含照片、不含你说了什么或搭配了什么</td>
            </tr>
          </tbody>
        </table>

        <p class="muted">我们不要求注册账号，因此不会收集你的姓名、手机号、邮箱、身份证号等身份信息；App 也没有聊天、评论等会产生用户生成文本的社交功能。</p>
      </section>

      <section id="use">
        <span class="sec-num">02</span>
        <h2>这些信息用来做什么</h2>
        <p>一句话总结：<b>都是为了让"拍照 → 识别 → 搭配 → 生成效果图"这条链路跑起来</b>，不用于广告、不用于向第三方出售或出租、不用于与其他 App 关联分析你的身份。</p>
        <h3>衣物与形象照片</h3>
        <p>照片会被发送到我们的服务端，服务端转交给下方「第三方服务」中列出的 AI 模型供应商完成识别或生成，结果（衣物信息 / 效果图）再返回给你的手机。这个过程是一次性的请求-响应，不是持续上传。</p>
        <h3>位置信息</h3>
        <p>仅用于换算成"今天大概几度"，从而在打分搭配时考虑冷暖——比如不会在盛夏推荐羽绒服。App 不会读取你的行踪轨迹，也不会在你没有生成搭配时静默定位。</p>
        <h3>设备标识符与使用统计</h3>
        <p>用于两件事：一是服务器按设备限制每日调用次数，避免被脚本恶意刷爆；二是统计"多少人看到了订阅页、多少人点了试用"这类聚合数字，帮助我们判断产品和定价是否合理。这些数字不会与你的身份信息或照片内容关联。</p>
      </section>

      <section id="store">
        <span class="sec-num">03</span>
        <h2>信息如何存储</h2>
        <h3>本机存储是主线</h3>
        <p>你添加的每一件衣服、生成的每一套搭配，都保存在你手机的 App 专属存储空间里，不依赖账号、不需要联网就能查看。如果你开启了 iCloud 同步，这些数据会额外镜像备份到<b>你自己</b>的 iCloud 私有空间——那是苹果为你管理的存储，开发者没有访问权限。</p>
        <div class="callout">卸载 App、或在「设置 › 通用 › iPhone 储存空间」里删除 App，本机数据会一并清除；iCloud 里的镜像备份可以在「设置 › [你的名字] › iCloud › 管理储存空间」中单独删除。</div>
        <h3>服务端不做长期留存</h3>
        <p>上传给服务器的衣物照片，只用于当次识别或生成请求，处理完成即结束，服务器不会把原图长期保存下来建立照片库。AI 生成的上身效果图会先临时存放在图像服务商用于传输给你的手机，短时间（约 24 小时）后该临时链接会自动失效；效果图之后只由你的设备保存。</p>
      </section>

      <section id="share">
        <span class="sec-num">04</span>
        <h2>会用到哪些第三方服务</h2>
        <p>为了完成 AI 识别与图像生成，你的请求会经过下面几家服务商处理。它们都是我们为实现 App 功能而选用的技术服务提供方，不会把数据挪作他用、不会用于广告。</p>
        <table class="datatable">
          <thead><tr><th>服务方</th><th>承担的工作</th></tr></thead>
          <tbody>
            <tr><td>腾讯云</td><td>App 后端服务器托管与请求转发</td></tr>
            <tr><td>阿里云百炼（通义千问视觉模型）</td><td>识别衣物照片中的类别、颜色、材质等信息</td></tr>
            <tr><td>火山引擎</td><td>生成搭配上身效果图</td></tr>
            <tr><td>Apple（App Store / StoreKit / iCloud）</td><td>处理订阅购买、可选的 iCloud 数据同步</td></tr>
          </tbody>
        </table>
        <p class="muted">我们不会将你的照片或个人信息出售、出租给任何第三方，也不接入广告网络或第三方数据追踪 SDK。</p>
      </section>

      <section id="rights">
        <span class="sec-num">05</span>
        <h2>你能控制什么</h2>
        <ul>
          <li style="margin-bottom:10px">在衣橱里删除任意一件衣服或一套搭配，对应的本地文件会一并删除。</li>
          <li style="margin-bottom:10px">随时在 iOS「设置」里关闭相机、相册或定位权限——关闭后对应功能会提示需要授权，App 其余功能不受影响。</li>
          <li style="margin-bottom:10px">「个人形象分析」在每次拍摄前都可以选择「先跳过」，跳过不影响其他功能使用。</li>
          <li style="margin-bottom:10px">卸载 App 即清除本机全部数据；如开启过 iCloud 同步，可另外前往系统设置删除云端镜像。</li>
        </ul>
      </section>

      <section id="subscribe">
        <span class="sec-num">06</span>
        <h2>订阅与支付</h2>
        <p>App 内的订阅通过 Apple 的 StoreKit 完成，支付方式（银行卡、Apple Pay 等）由 Apple 直接处理，开发者不会接触、也无法看到你的支付详情，只能通过苹果获知"当前是否处于有效订阅期"。订阅可能包含免费试用，试用结束后将按你在购买页看到的价格与周期自动续费，你可以随时在「设置 › [你的名字] › 订阅」中查看或取消。</p>
      </section>

      <section id="children">
        <span class="sec-num">07</span>
        <h2>未成年人隐私</h2>
        <p>「今天穿什么」不是专门面向儿童设计的 App，我们不会有意收集 13 周岁以下未成年人的个人信息。如果你是未成年人的监护人，发现孩子在未经许可的情况下使用了本 App 并提供了个人信息，请通过下方联系方式与我们联系，我们会及时处理。</p>
      </section>

      <section id="changes">
        <span class="sec-num">08</span>
        <h2>本政策的更新</h2>
        <p>如果 App 功能发生变化、影响到本政策描述的信息收集范围，我们会更新这个页面并调整顶部的生效日期。建议在更新 App 版本后回来看一眼，尤其是新增了需要额外权限的功能时。</p>
      </section>

      <section id="contact">
        <span class="sec-num">09</span>
        <h2>联系我们</h2>
        <p>关于本政策或你的个人信息，任何疑问都可以通过邮箱联系开发者：<a href="mailto:dandy5201799@gmail.com">dandy5201799@gmail.com</a>。我们会尽快回复。</p>
      </section>

    </main>
  </div>

  <footer>
    <span>© 2026 丹迪·唐 · 今天穿什么</span>
    <span>本页面为「今天穿什么」App 唯一官方隐私政策</span>
  </footer>

</div>
</body>
</html>
