动作规则登记表:social-media-organic-tool(post)

层③(动作规则/调试)的落地文档 —— 两层结构(2026-07-14 修订)。 层③劈两层(Anderson 原话:"系统里每个动作都需要有规范,那么这个规范就需要我人为的去确认;当然有一些大的需要旋钮调试"): - 表A「全动作规范清单」 = 系统里每一个动作(不分大小,连登录/下载/CRUD/状态机都算)逐条登记:干嘛/入/出/守什么规矩/默认的度。给 Anderson 逐条看、逐条签字用,不是每条都要能调。 - 表B「旋钮子集」 = 从表A 里挑出"度错了就毁价值"的动作(R1–Rn),给可调旋钮 + 试验台 + 落库版本回退。 判据(旋钮 vs 只规范,一句话):「把这个值改错,程序会崩吗?」 - 崩 / 报错 / 对错二元(登录、下载、状态机、CRUD、参数化查询)→ 逻辑,错了是 bug 不是度 → 只规范,不配旋钮。 - 不崩,但结果悄悄变差/变好(LLM 提示词、爆款阈值、排期时段、排序权重、筛选条件)→ 度 → 配旋钮 + 试验台。 - 再加一问:「会想拿真样本反复试它吗?」会→旋钮;一次定死就对→只规范。 - 陷阱:已经是用户每次请求能传的输入(配图尺寸、检索天数)= 已可调,别再配旋钮(过度工程)。 铁律:表B 旋钮规则绝不硬编码,必须外置进 action_rules 表 + 有试验台 + 可回退。 产出方:solution-architect(初稿)。签字:Anderson(表A 逐条)。落库/试验台实现:backend + frontend engineer。验收:qa-engineer + GM。 数据模型 / 迁移 / 层⑤劈分见 ARCHITECTURE-RULES-LAYER.md;3 接口见 API-CONTRACT-RULES.md

表A —— 全动作规范清单(Anderson 逐条签字)

枚举方法:遍历 backend/src/application/use_cases/全部 16 个 use_case 文件 + backend/src/domain/ 下全部 domain 动作,逐个动作登记,不靠 grep"度"(第一版只扫 LLM 提示词,漏了 schedule_algorithm.py 写死的 _WORK_DAYS=5/_DEFAULT_HOUR=9 发布排期时段 —— 这正是必须枚举全动作的原因)。 分类列判据:只规范 = 逻辑/CRUD/状态机,改错会崩或对错二元;🎛旋钮 = 度错悄悄毁价值、想拿真样本反复试;🟡候选 = 拿不准,签字时 Anderson 拍板。
动作ID动作名代码位置(file:line)干嘛输入输出守什么规矩默认的"度"分类
A01注册auth_use_case.py:18 register_user建用户username/passworduser dict用户名唯一;密码 bcrypt hash无度(对错二元)只规范
A02登录auth_use_case.py:32 login_user校验签发 JWTusername/passwordaccess+refresh token凭证错即 AuthError;不泄露哪项错无度只规范
A03刷新令牌auth_use_case.py:52 refresh_access_token换新 access tokenrefresh_tokenaccess tokentype 必须=refresh无度只规范
A04上传产品图material_use_case.py:16 upload_image存图file/content_typeurlMIME∈{jpeg,png,webp};≤10MB阈值=安全护栏(拒非法),非业务度只规范
A05建素材material_use_case.py:31 create_material落库素材产品名/卖点/品类/图/doc_textmaterial dict纯 CRUD无度只规范
A06读/删/列素材material_use_case.py:60/80/92CRUDid/user_id/分页material(s)归属校验;NotFound无度(分页是请求参数)只规范
A07上传文档解析document_upload_use_case.py:106 upload_document存文件+抽文本filename/bytestext+char_count≤20MB;白名单扩展;magic bytes 校验;失败删孤儿文件阈值/白名单=安全护栏,非度只规范
A08翻译改写translation_use_case.py:81 translate_materialLLM 把素材写成地道社媒帖material/platform/langtranslated_text非直译;扩写+钩子+卖点+CTA;emoji/hashtag_TRANSLATE_SYSTEM 提示词 + _PLATFORM_STYLE 各平台风格 + 改写幅度;max_tokens=1500🎛旋钮 → R3
A09翻译 approve/rejecttranslation_use_case.py:201/213HITL 状态机translation_id/reason状态状态机合法迁移;原子 claim 防重复付费无度(状态机对错二元)只规范
A10列翻译translation_use_case.py:270 list_translations分页查material_id/分页translationsCRUD无度只规范
A11搜索方向生成discovery_use_case.py:41 get_search_directionsLLM 给找爆款的方向/关键词material_iddirections[]3–5 方向;锚商业/评测意图;避裸词/NSFW_DIRECTIONS_SYSTEM 提示词 + 方向数 + 意图锚 + max_tokens=1000🎛旋钮 → R1
A12搜索抓取(执行)discovery_use_case.py:110 search_trending调 anysearch 抓帖keywords/platform/max_resultsposts[]委托 adapter;空结果给提示度在 adapter 层(见 A18/R6)只规范(度归 R6)
A13帖子打标(爆款判定)discovery_use_case.py:142 tag_postsLLM 判 format/爆款钩子/相关度posts[]tagged[]输出 format/category/hook/engagement/relevance_TAG_SYSTEM 提示词 + 爆款钩子词表 + 相关度严格度;max_tokens=500🎛旋钮 → R2
A14选帖入库discovery_use_case.py:201 select_posts用户多选后 bulk_insertselected[]trending_post_ids跨阶段落库(非内存)无度(纯持久化)只规范
A15逆向模板template_use_case.py:24 reverse_template / domain/template/models.py:36 REVERSE_SYSTEM_PROMPTLLM 把爆款拆成可复用模板trending_post_idtemplate dict拆 hook/body/cta + 占位符变量REVERSE_SYSTEM_PROMPT 提示词 + 抽象粒度 + 变量数(1-4 body/≥2 var);max_tokens=1500🎛旋钮 → R5
A16读/列模板template_use_case.py:88/98CRUDid/platform/分页template(s)CRUD无度只规范
A17成片文案generate_use_case.py:35 generate_post / models.py:70 build_generate_promptLLM 套模板+产品生成成品文案material/template/platformcaption+image_prompt专业社媒文案_GENERATE_SYSTEM 提示词 + 语气/长度;max_tokens=500🎛旋钮 → R4
A18成品 approve/rejectgenerate_use_case.py:149/161HITL 状态机(reject→重生成,3 次 stuck 告警)post_id/reason状态max_retries=3(重试次数=对错逻辑,非度);状态机合法迁移无度(重试上限是护栏)只规范
A19列成品generate_use_case.py:221 list_posts分页查status/platform/分页postsCRUD无度只规范
A20搜索抓取/过滤/排序anysearch_swipe_adapter.py:60/53/76/70/217每词搜几条/搜几词/什么域名算社媒/什么排前/默认社媒类型keywords/platformRawPost[]只留海外社媒域名;rank heuristic 打分_MAX_KEYWORDS=5/_MAX_RESULTS_CAP=10/12 域名名单/(10-rank)*10 排序/_DEFAULT_SOCIAL_TYPE="x_top"🎛旋钮 → R6
A21内容库检索library_use_case.py:13 search_library / domain/library/models.py:32 QueryFilter多维筛选查库min_engagement/date_range_days/per_page/sort_bypostsper_page≤100;sort_by 枚举陷阱:全是用户每请求可传的输入(已可调)只规范(陷阱)
A22读单条库帖library_use_case.py:47 get_library_post按 id 查post_idpostNotFound无度只规范
A23配图生成image_gen_use_case.py:20 GenerateImageUseCase调 Seedream 出图post_id/prompt/sizeimage_urlsize∈{512/768/1024};日成本上限陷阱:size 是用户每请求可传的入参(已可调);成本上限=.env 护栏只规范(陷阱)
A24发布排期时段domain/plan/schedule_algorithm.py:17 _WORK_DAYS=5 / :18 _DEFAULT_HOUR=9把一周帖子排进工作日/时段platforms/counts/图文视频比SlotSpec[]ratio 必须 sum=1(逻辑校验)排哪几天(周一~五)/几点(09:00 UTC)是写死常量 = 真度🎛旋钮 → R7
A25生成周计划(编排)plan_use_case.py:23 GenerateWeekPlanUseCase落库 plan + 调排期算法week_start/platforms/...plan+itemsweek_start 必须周一(逻辑校验)度在 A24 排期算法只规范(度归 R7)
A26改计划槽位/日历/看板plan_use_case.py:113/154 output_use_case.py:17拖期/挂模板/分组展示plan_item 字段items/eventspublished 槽不可改(状态机)无度只规范
A27提交/重试/列发布任务publish_use_case.py:22/170/195定时发布 + 重试队列 + 状态机post_id/platform/scheduled_atjob必须 approved 才发;live 缺凭证回落 dryrun;retry backoff重试次数/backoff=.env 护栏,非度只规范
A28下载单条/批量 ZIPdownload_use_case.py:14/38打包成品下载post_id(s)zip bytes批量≤100(护栏)无度只规范
A29用量统计download_use_case.py:68 get_today_usage查当日调用/成本user_id统计 dict只读无度只规范
A30AI 助手问答assistant_use_case.py:53 AskAssistantUseCase / :38 _SYSTEM_TEMPLATEin-app 帮助,DeepSeek 现答question/page/historyanswer页面知识注入;history≤12;question≤500;日成本门人设+页面知识是静态帮助文案,输出不进生产内容、不毁价值只规范(Anderson 已拍板不升旋钮)
A31UI 标注 upsert/查询/截图annotation_use_case.py:25 AnnotationUseCase存/查界面问题标注标注 itemsrecords批量≤1000(护栏)无度只规范

表A 里两条需 Anderson 签字时拍板的 🟡/边界项


表B —— 旋钮子集(度错毁价值,配 action_rules + 试验台)

从表A 分类为 🎛旋钮 的动作挑出,共 7 条(R1–R7)。每条映射到 action_rules 表的一行(rule_id + config JSON,带 version/status 可回退)。提示词/阈值/名单一律进库,代码里只留灾难回落 _DEFAULTS(见 ARCHITECTURE-RULES-LAYER.md §3)。
规则ID来自表A挂在哪个动作(代码位置)度是什么(可调项)初值(高手蒸馏默认)存哪验证状态
R1A11搜索方向生成 · discovery_use_case.py:19 _DIRECTIONS_SYSTEM营销方向性 / 覆盖面 / 方向数 / max_tokens3–5 个方向;锚定商业+评测意图;避免裸词/NSFW;max_tokens=1000action_rules rule_id=R1 (config JSON)🔴 理论
R2A13帖子打标 · discovery_use_case.py:33 _TAG_SYSTEM什么算爆款钩子 / 相关度严格度输出 format/category/hook_type/engagement_level/relevance_score;max_tokens=500action_rules R2🔴 理论
R3A08翻译改写 · translation_use_case.py:40 _TRANSLATE_SYSTEM平台风格 / 改写幅度(保守↔大改)非直译;扩写+钩子+卖点+CTA;加 emoji/3-6 hashtag;max_tokens=1500action_rules R3🔴 理论
R4A17成片文案 · generate_use_case.py:28 _GENERATE_SYSTEM文案语气 / 长度专业社媒文案;输出 caption+image_prompt;max_tokens=500action_rules R4🔴 理论
R5A15逆向模板 · domain/template/models.py:36 REVERSE_SYSTEM_PROMPT模板抽象粒度(hook/body/cta + 变量)拆成 template_structure + variables 占位符action_rules R5🔴 理论
R6A20搜索抓取/过滤/排序 · anysearch_swipe_adapter.py每词搜几条 / 搜几个词 / 什么域名算社媒 / 什么排前面 / 默认社媒类型max_keywords=5;max_results_cap=10;12 个社媒域名名单;rank 分=(10-rank)*10;default_social_type=x_topaction_rules R6🔴 理论
R7A24发布排期时段 · domain/plan/schedule_algorithm.py:17 _WORK_DAYS=5 / :18 _DEFAULT_HOUR=9排哪几天 / 几点发 / 同日多帖如何错峰周一~周五(5 天);默认 09:00 UTC;同日多帖逐小时后延action_rules R7🔴 理论

验证三态(硬要求):

R1–R7 全部 🔴 理论起步。度是 Anderson 拿真样本在试验台试出来的,架构师只给合理初值,不替他定死。

表B 详表(每条旋钮)

R1 — 搜索方向生成

参数类型默认说明
direction_count_minint3至少给几个方向
direction_count_maxint5至多给几个方向
anchor_intentenumcommercial_review锚定意图:商业/评测/纯泛化
avoid_nsfwbooltrue是否强制回避 meme/NSFW
max_tokensint1000单次上限(经 clamp 受 .env 全局夹住)

R2 — 帖子打标(爆款判定)

参数类型默认说明
hook_taxonomylist[开篇悬念,痛点,对比,福利,故事]钩子类型词表
relevance_strictnessenummedium相关度严格度:loose/medium/strict
engagement_levelslist[高,中,低]热度分档
max_tokensint500单次上限

R3 — 翻译改写

参数类型默认说明
rewrite_intensityenumenrich改写幅度:literal/faithful/enrich/bold
platform_stylesmap_PLATFORM_STYLE(x/reddit/facebook/tiktok/youtube)各平台风格描述,可逐平台调
emoji_hashtagbooltrue是否加 emoji + 3-6 hashtag
max_tokensint1500单次上限

R4 — 成片文案

参数类型默认说明
toneenumprofessional语气:professional/casual/punchy/genz
length_hintenummedium长度:short/medium/long
max_tokensint500单次上限

R5 — 逆向模板抽象

参数类型默认说明
abstraction_levelenummedium抽象粒度:coarse/medium/fine
max_variablesint8变量数上限
keep_structurelist[hook,body,cta]保留哪些结构段
max_tokensint1500单次上限(现代码 clamp 1500)

R6 — 搜索抓取 / 过滤 / 排序(非 LLM 阈值规则)

参数类型默认说明
max_keywordsint5扇出几个关键词各搜一次(现 _MAX_KEYWORDS)
max_results_capint10每次调用最多几条(现 _MAX_RESULTS_CAP,受 AnySearch 服务端硬顶约束)
allowed_social_hostslist12 域名(x/twitter/reddit/redd.it/instagram/linkedin/youtube/youtu.be/tiktok/facebook/fb/threads)什么域名算社媒(现 _ALLOWED_SOCIAL_HOSTS)
default_social_typeenumx_top平台未知时默认取哪种社媒榜(现 _DEFAULT_SOCIAL_TYPE)
rank_score_baseint10排序 heuristic 基数(现 (10-rank)*10 的 10)
rank_score_multfloat10.0排序 heuristic 乘数

R7 — 发布排期时段(非 LLM 阈值规则,新增)

参数类型默认说明
work_dayslist<int>[0,1,2,3,4]排哪几天(周一=0~周日=6;现硬编码 _WORK_DAYS=5 即 Mon–Fri)
default_hour_utcint9每天第一帖时间(UTC 整点;现 _DEFAULT_HOUR=9)
same_day_stagger_hoursint1同一天多帖逐帖后延几小时(现隐式 hour = _DEFAULT_HOUR + post_on_same_day)

3. 试验台(每条旋钮的调试闭环)

标准件真相源 docs/templates/test-bench.template.js + scripts/install-test-bench.sh。每条旋钮页 /settings/rules/<ruleId> 必须有:

  1. 喂样本 — 粘贴/上传真实输入(R1/R3/R4/R5:产品素材;R2:一批帖子;R6:一组关键词;R7:一组 platforms+counts)。
  2. 出结果 — 用当前 active 版本 config 跑一遍,展示输出。
  3. — Anderson 看:太泛?太严?改写太夸张?名单漏平台?排期时段不对?(可打分/标注)。
  4. — 直接改旋钮 / 改 prompt_template(不改代码、不重部署),再跑,并排对比新旧输出。
  5. 存版本 — 满意就"存为当前生效版本",version 自增进历史,旧 active 归档,可回退
治病点:现有工具"不好用"的根因 = 这 7 处度被写死且写不对、无调节入口。试验台就是把它们变成能试、能对比、能回退的旋钮。 花钱红线:R1–R5 dryrun 触发真 LLM 调用 = 花钱,复用 llm_guard(日成本/输入长度/max_tokens 三门)+ limiter + 每 tenant 每日 dryrun 上限;R6/R7 是纯阈值 dryrun,不花 LLM 钱(仍限流防刷)。详见 API-CONTRACT-RULES.md

4. 层⑤对照(规则 = 设置 = 数据库一行)

业务规则参数(表B R1–R7)环境变量(ARCHITECTURE §6 / .env)
例子方向数/爆款严格度/改写幅度/文案语气/模板粒度/社媒域名名单/每词搜几条/排周几几点发DEEPSEEK_API_KEY/ANYSEARCH_API_KEY/QWEN_API_KEY/DATABASE_URL/REDIS_URL
全局护栏(仍留 .env)LLM_DAILY_COST_CAP_USD/LLM_MAX_TOKENS_PER_CALL/LLM_MAX_INPUT_CHARS/IMAGE_DAILY_COST_CAP_USD
存哪action_rules 表 + 试验台可调.env(密钥永不入库/不回显)
谁能调有权限的运营/Anderson,运行时改部署时定,改需重启
变更影响改度不改代码不重部署改基建,通常要重部署
刀切:R1–R7 旋钮 + 5 个提示词模板(R1/R2/R3/R4/R5)→ 进库 + 试验台。密钥/连接/花钱护栏 → 留 .env。两者不得混(见 ARCHITECTURE-RULES-LAYER.md §4)。 不进库的(留代码/.env):安全护栏(文件大小/MIME/magic bytes/批量上限/重试次数)、校验逻辑(week_start 必周一/ratio sum=1/枚举校验)、用户每请求可传的入参(配图 size/检索天数/分页)——这些不是"度",是逻辑或已可调。

5. 权限 + 状态


6. 与上一版(6 条)的差异

维度上一版(v1)本版(v2 两层)
结构只有旋钮清单(6 条 R1–R6)表A 全动作规范清单(31 动作)+ 表B 旋钮子集(7 条)
全动作覆盖❌ 只扫 LLM 提示词,未枚举全动作✅ 枚举全 16 use_case + domain 动作,含 CRUD/状态机/auth/下载
R7 发布排期漏了(_WORK_DAYS=5/_DEFAULT_HOUR=9 写死没登记)✅ 新增 R7,来自表A A24
Anderson 签字无签字项表A 逐条签字;A30 助手 + 陷阱项标注供拍板
陷阱标注✅ 显式标 A21 检索天数 / A23 配图尺寸 = 用户可传入参,不配旋钮

本次引用的 skills:cost-aware-llm-pipelinecontext-budgetlogic-first-uiprompt-optimizerdatabase-migrationsarchitecture-decision-recordspython-patterns
由 v5 docs-to-html 离线生成 · 2026-07-14 23:03