/~learn/s/11945016
> 📅 2026-08-11 建立 > 状态:方案讨论稿 v1,待确认
---
当前网站(quant.aohan.net)的访问控制非常原始:
.quant_auth.json 里存一个固定的 invite_code,首次初始化随机生成后永久不变,无法作废、无法换发、无法设置有效期。核心诉求:把"固定邀请码"升级为"管理员动态签发、可设有效期、可作废的邀请码",并建立分层会员体系,从准入和内容分级两个层面控制因子暴露。
---
采用邀请 + 付费混合模式,内容采用分层订阅,兼顾当前个人使用与未来商业化扩展:
游客 ── 只能看公开页(首页/文档库公开内容)
│
├─ 凭邀请码注册(免费试用期)──→ 基础会员(试用档)
│ │
│ 试用到期后付费升级
│ ▼
│ 标准会员(月/季/年订阅)
│ │
│ 可选升级(更高档位)
│ ▼
│ 尊享会员(核心策略、限量)
└──────────────────────────────────┘
| 控制手段 | 作用 | 适用档位 |
| ---------- | ------ | ---------- |
| 邀请码准入 | 控制谁能注册 | 所有档位 |
| 内容分级 | 不同档位看不同深度 | 全部内容 |
| 人数限额 | 核心档位限量,控制拥挤度 | 尊享档必选 |
---
| 能力 | 说明 |
| ------ | ------ |
| 管理员动态签发 | 登录管理后台,一键生成新邀请码 |
| 有效期 | 每个邀请码独立设置有效期(如 7 天 / 30 天 / 自定义) |
| 可用次数 | 单次使用 / 多次使用(如最多 3 人) |
| 作废 | 随时作废某个邀请码,立即失效 |
| 生成记录 | 记录签发时间、有效期、已用次数、被谁使用 |
| 随机强度 | 密码学安全随机(secrets),不可预测、不可枚举 |
邀请码表(SQLite,存入 quant.db):
| 字段 | 类型 | 说明 |
| ------ | ------ | ------ |
code | TEXT PK | 邀请码本体,如 A3F9-K2X7 |
created_at | INT | 签发时间 |
expires_at | INT | 过期时间(Unix 时间戳) |
max_uses | INT | 最大可用次数(-1=不限) |
used_count | INT | 已用次数 |
is_active | INT | 是否有效(管理员可手动作废) |
remark | TEXT | 备注(发给谁、什么渠道) |
用户提交邀请码
│
▼
查邀请码 → 不存在?→ 拒绝"邀请码无效"
│
存在且有效?→ 已作废?→ 拒绝"邀请码已作废"
│
├─ 已过期?→ 拒绝"邀请码已过期"
├─ 达到使用上限?→ 拒绝"邀请码已被使用完"
│
▼
通过 → 注册成功 → used_count +1
│
▼
新用户默认进入「试用会员」档,记录 source_code
> 关键点:邀请码必须绑定使用记录,这样一旦某个邀请码被泄露或滥用,管理员可以精准作废并追溯是谁通过它注册的。
- 生成新邀请码(设置有效期 / 次数 / 备注) - 列表展示:未用 / 已用 / 已过期 / 已作废 状态 - 一键复制、一键作废
---
| 档位 | 获取方式 | 有效期 | 可看内容 |
| ------ | ---------- | -------- | ---------- |
| 游客 | 无 | 永久 | 首页、网站介绍、公开文档(心理复盘 / LLM / 娱乐等) |
| 试用会员 | 凭邀请码注册 | 试用期(建议 7 天) | 公开内容 + 策略概览(脱敏版) |
| 标准会员 | 付费订阅 | 月 / 季 / 年 | 试用档 + 完整策略研究文档 + 延迟披露的信号 |
| 尊享会员 | 付费订阅(高价档) | 月 / 季 / 年 | 标准档 + 实时核心信号 + 持仓推送 + 精选问答,限量 |
| 机制 | 说明 |
| ------ | ------ |
| 人数限额 | 尊享档设置总名额(如首批 20 人),满员即停止签发该档位邀请码,从源头控制拥挤 |
| 延迟披露 | 标准档信号延迟 N 天展示(如 T+2),尊享档实时,给标准档的信号失去抢跑价值 |
| 脱敏展示 | 试用档只给策略框架与思路,隐藏具体因子权重、参数、标的选择逻辑 |
| 禁止外传条款 | 注册时勾选协议:禁止转载、禁止分享账号。技术上可加登录设备绑定(进阶) |
> 说明:当前网站尚未推广、以个人使用为主,付费金额可后置;此处给出可扩展的定价骨架。
| 档位 | 建议定价 | 说明 |
| ------ | ---------- | ------ |
| 标准会员 | 月 ¥XX / 季 ¥XX / 年 ¥XX | 走「延迟披露」内容 |
| 尊享会员 | 年 ¥XXX 或 月 ¥XX | 高价 + 限量,走「实时 + 深度」内容 |
| 方式 | 特点 | 适合阶段 |
| ------ | ------ | ---------- |
| 人工收款 + 手动开通 | 微信/支付宝转账后手动标记会员 | 起步期(个人使用,人少) |
| 微信支付 Native / 支付宝当面付 | 网页下单生成二维码,自动开通 | 小规模商业化 |
| 第三方 SaaS(如 Lemon Squeezy / Paddle) | 自动续费、发票,抽成 | 规模化之后 |
> 建议起步期先做「人工收款 + 手动开通」,代码层面预留支付回调接口,后续接入支付渠道无需改动权限体系。
---
当前 .quant_auth.json 的 users 结构:
"users": {
"aohan": {
"password_hash": "...",
"salt": "...",
"is_admin": true
}
}
扩展为:
"users": {
"aohan": {
"password_hash": "...",
"salt": "...",
"is_admin": true,
"tier": "admin",
"member_expire_at": null,
"source_code": null
},
"zhang3": {
"password_hash": "...",
"salt": "...",
"is_admin": false,
"tier": "trial",
"member_expire_at": 1754899200,
"source_code": "A3F9-K2X7"
}
}
> 迁移建议:把邀请码表和用户表迁入 quant.db(SQLite),.quant_auth.json 只保留 secret 与 users 的密码信息。这样邀请码、会员状态、订阅记录都能用 SQL 查询和统计。
_request 进入时:
└─ 解析 session → 得到 user + tier
└─ tier 为空 / 过期 → 视为游客
└─ 根据路由的 required_tier 判断是否有权访问
required_tier 字段:/cross-section 需标准会员,/push 需尊享会员,/~docs 按文档目录配置。/api/doc/visibility),正好与会员档位映射:公开 Tab / 需登录 Tab / 需付费 Tab。member_expire_at,过期即视为游客档,无感知续费则下次访问变回游客权限。
| 页面 | 改动 |
| ------ | ------ |
| 注册页 | 邀请码校验逻辑改为查数据库表,报错文案区分「无效 / 过期 / 已用完」 |
| 登录后首页 | 展示当前档位、到期时间、升级入口 |
| 管理后台 | 新增「邀请码管理」「会员管理」(手动开通/续费/封禁/查看到期) |
| 各策略页面 | 按档位渲染:游客看到引导注册、试用看到脱敏版、付费看到完整版 |
---
---
---
| 风险 | 对策 |
| ------ | ------ |
| 邀请码被公开传播 | 每次签发带备注与使用记录,泄露可精准作废并追溯注册账号 |
| 会员共享账号 | 初期协议约束;规模化后设备绑定 + 登录日志 |
| 因子被反向工程 | 核心参数脱敏 + 延迟披露 + 尊享限量三重防护 |
| 支付合规 | 起步用人工收款;规模化后走正规支付渠道并开具发票能力 |
| 会员到期纠纷 | 到期前 3 天推送提醒;提供明确续费/退款规则 |
---
| 现有代码 | 现状 | 改造方向 |
| ---------- | ------ | ---------- |
unified_server.py _init_auth / _load_auth | 固定单邀请码 | 改为读邀请码表 |
注册接口 /register(约 L13245) | 校验固定字符串 | 改为查数据库 + 有效期/次数校验 |
PROTECTED_PATHS = ["/clipboard"] | 仅剪贴板受保护 | 扩展为按档位保护路由表 |
文档库 /api/doc/visibility | 已有目录级可见性 | 映射到会员档位 |
管理后台 /system | 仅管理员 | 新增邀请码/会员管理区块 |