Files
cmroubao/docs/tasks/T-229.md
T

61 lines
2.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
id: T-229
title: 从受控 .env 加载 ERP 凭证
phase: 2
deps:
- T-228
status: TODO
created: 2026-07-29
context_ref: 13a1355
work_branch: null
write_paths:
- docs/tasks/T-229.md
- docs/api.md
- docs/current-state.md
- docs/05-coding-rules.md
- backend-api/.env.example
- backend-api/README.md
- backend-api/SCAFFOLD.md
- backend-api/cmd/api/**
- backend-api/internal/config/**
---
## 问题 / 背景
T-226 至 T-228 要求 ERP 账号和密码只在后端进程内使用,但当前只能通过启动父进程环境
注入,Windows 本地启动不便。需要为单机验证增加受控的 `backend-api/.env` 读取,同时
不能退回到把凭证写入批处理、SQLite、浏览器、日志或 Git 的做法。
## 关联需求与交互
- 功能:F-011、F-012。
- 用户故事:US-011、US-012。
- 交互:IX-012;ADMIN 仍只在 `/erp` 输入人工验证码,不输入 ERP 账号或密码。
- 架构:API 进程在读取配置前解析本地 `.env`,只作为进程环境变量的回退来源。
## 方案
1. 默认只读取 API 当前工作目录中的 `.env`,即标准启动路径的 `backend-api/.env`;文件
缺失时保持未配置状态,不阻断其他后端功能。
2. 只允许 `.env` 为顺运宝 URL、用户名和密码提供值;进程环境变量优先,`.env` 不修改
全局进程环境,不支持变量展开、命令替换或 shell 执行。
3. 限制文件/行大小、拒绝重复键、非法键、NUL 和无效引号;错误不回显值或文件内容。
4. 提供被忽略的 `.env` 对应的 `.env.example`,文档明确文件权限、启动位置和环境覆盖顺序。
## 验收要点
- [ ] API 从 `backend-api/.env` 读取完整 ERP 凭证;系统环境变量覆盖同名 `.env` 值。
- [ ] 文件缺失、格式错误、重复键、未知受控键和敏感值均有测试;错误和日志不泄露密码。
- [ ] `.env` 始终被 Git 忽略,`.env.example` 不含真实凭证;Admin 页面仍没有账号/密码字段。
- [ ] `go test ./...`、`go test -race ./...`、`go vet ./...` 和 API 构建通过。
## 边界
- 不让 `authctl` 密码、数据库路径、HTTP 监听或 TLS 私钥通过此 ERP `.env` 机制加载。
- 不实现 Web 编辑、自动登录、OCR、加密持久化 ERP 会话或多账号。
- 不读取工作区根目录、用户目录或任意指定路径的 `.env`。
## 执行记录
- 2026-07-29:创建任务,等待文档提交后实现。