Files
cmbuyer/admin/README.md
T

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 或共享密钥绕过该边界。