2.3 KiB
2.3 KiB
采购服务
启动前必须显式设置下列环境变量;服务不提供默认管理员账号、密码或会话密钥。
| 变量 | 要求 |
|---|---|
CMBUYER_ADMIN_USERNAME |
非空管理员账号。 |
CMBUYER_ADMIN_PASSWORD_BCRYPT |
非空 bcrypt 密码哈希,不接受明文密码。 |
CMBUYER_SESSION_SECRET |
至少 32 字节的会话签名密钥。 |
CMBUYER_COOKIE_SECURE |
可选;存在时只能精确为 true 或 false。HTTPS 部署应设为 true。 |
CMBUYER_DATABASE_SOURCE |
已迁移 SQLite 的显式 data source。 |
CMBUYER_AUTHORIZATION_TTL |
一次性授权的正 Go duration,例如 10m。 |
CMBUYER_MAX_TASK_QUANTITY |
每条任务允许的正整数数量上限。 |
CMBUYER_MAX_TOTAL_PRICE |
每条任务允许的规范正数总价上限,例如 999.99。 |
CMBUYER_EVIDENCE_DIR |
内部原始截图的绝对私有目录;不得指向仓库或公开静态目录。 |
示例仅展示变量名,不提供可运行凭据:
$env:CMBUYER_ADMIN_USERNAME = '<管理员账号>'
$env:CMBUYER_ADMIN_PASSWORD_BCRYPT = '<bcrypt 密码哈希>'
$env:CMBUYER_SESSION_SECRET = '<至少 32 字节的随机密钥>'
$env:CMBUYER_COOKIE_SECURE = 'true'
$env:CMBUYER_DATABASE_SOURCE = '<SQLite data source>'
$env:CMBUYER_AUTHORIZATION_TTL = '10m'
$env:CMBUYER_MAX_TASK_QUANTITY = '99'
$env:CMBUYER_MAX_TOTAL_PRICE = '999.99'
$env:CMBUYER_EVIDENCE_DIR = '<内部截图绝对目录>'
go run ./cmd/migrate -database $env:CMBUYER_DATABASE_SOURCE up
go run ./cmd/server
采购服务会话仅保存在当前进程内;进程重启后既有登录会话会安全失效。 管理员的“开始采购(只创建待付款订单)”只签发一次性授权并创建待付款订单的资格;服务不会自动付款,也不包含任何支付操作。
GET /tasks/{id} 直接访问时渲染完整详情页,任务列表以同一 URL 加载详情抽屉。内部截图只通过
GET /evidence/{asset_id} 向有效管理员会话提供,并始终返回 no-store;文件不在静态目录中。
T-301 接入真实设备凭据之前,POST /api/v1/tasks/{id}/evidence 的生产认证器固定拒绝全部请求。
测试可以注入 fake 设备主体验证上传契约,但不得用管理员会话、临时 token 或共享密钥绕过该边界。