Chain · 招聘 —— 首个应用,而非产品本身
L0 · 愿景
boundaries —— 招聘是建立在基础设施之上的一个应用,明确地不是产品本身。transaction-needs-difference —— 一笔交易需要差异性;简历是把信息有损压缩成一种HR可解析的格式;StandMeet的工作是把这份差异性放回去。dont-repeat-myself —— 同一个工作故事,要在30到50场面试里被讲述5到15遍。
L1 · 承诺
在招聘这笔交易中,owner本人具体的、可证实的、带有主见的细节要能抵达招聘方——一条路径是简历上的二维码,把对方带入一场以某个岗位为框架的对话;另一条是owner一侧的主动外呼循环。
L2 · 需求(旅程与功能)
owner一侧的职位/简历/申请三条旅程,加上跨角色的闭环:招聘方扫描二维码 → 落地到 /<handle>?code=… → 这个code被吸收并暂存(延迟发放:session只在访客选定名字之后才会发放——刻意不做自动开始)。功能面:Jobs工具(jobs.fetch_new,18种来源——backend/internal/owner/jobs/fetch/jobfetch.go:36-63,由e2e/test/admin-sources.spec.ts:26-30断言;2026-09-02再加六种(7dd19527b),含通用的schema.org JSON-LD摄入器,2026-09-04加通用RSS适配器+预置默认聚合源(d235f9817))、Resume(resume.draft/update_draft/discard_draft;2026-09-07起是/admin/edit-resume/[id]上的可视化Puck composer——756c0eb1d,app/src/components/admin/composer/PuckResumeEditor.tsx——PDF由同一份Puck配置绘制,经gotenberg的Chromium打印/print/application/<id>——1b1ebed2b,backend/cmd/server/boot_pdf.go)、applications.commit;每张code自带落地路径/c/<slug>(c6c54ce88,2026-09-06,app/src/app/c/[slug]/page.tsx,access/entity/access_code.go:85),code字符串可轮换以应对泄漏(codes.rotate,505b3fc4f,access/repo/codes_rotate.go;管理端弹窗6ed1759bb);管理端的Applications(可按公司/岗位/状态搜索——af263d4eb,2026-09-05)+ Sources + Listings。
L3 · 设计决策
职位闭环(job-loop)的设计(已建成;docs/design/job-loop.md是记录):状态与推理分离(StandMeet承担状态,Claude通过Playwright MCP承担推理——这个MCP server跑在owner一侧的Claude上,不属于我们的两个平面中的任何一个,confusables);AccessCode统一充当邀请码;强制分级提交(draft → preview → owner点头 → commit——绝不允许"Claude直接发送");二维码放在右上角,指向<public_url>/?code=<code>(jobsuc/applications.go:317-322),不设/gate过渡页;history.replaceState把?code从地址栏抹掉(app/src/lib/gate/use-absorb-code.ts);无效code落到/gate(230a17025);draft对职位行做快照。只有一个渲染器:2026-09-01加过一个带owner可选模板的Typst渲染器(340ffabf9),2026-09-07又拿掉了(1b1ebed2b)——Puck同时绘制编辑画布和PDF,预览与打印不可能分叉。IDEAS.md里的待办事项:resume采用git式模型(2026-05-28起UI已去掉git相关措辞)、application合并包、bullet与wiki之间的反向链接。
L4 · 工程产物
backend/internal/owner/jobs/——一个域模块(fetch / dedup / cache / jobsuc / jobsmcp / jobsadmin / printsess);数据表job_sources / job_fingerprints / resume_drafts / applications(code_bookings已不存在——按code的订会配额归booker管,b73c932bb,2026-07-25);printsess + gotenberg(生成PDF,boot_pdf.go);用于测试的mock-stack,job-board伪造上游。
L5 · 验证
端到端测试[✓ applications-commit, -qr-works, -playwright-hint]、[✓ qr-code-absorb]、coded-landing-slug、applications-search、job-fetch-rss、以及resume-composer-* / resume-pdf-render / resume-look / composer-pdf-fidelity这一批(e2e/test/);以及booking的回归测试套件。
现状与缺口
职位闭环的各阶段已建成(jobs / resume / applications / QR → 带码落地页均已上线;不存在日历钩子——在36789537d的backend里找不到next_event_at);强制分级提交这条纪律,就是这条chain自己的安全递归闸门——任何东西发出去之前都要owner点头。需要警惕的边界风险:按boundaries自己的警告来看,这是最容易被过度投入的一条chain。