记录企微职责生产验收(07-26-internal-ops-recovery-baseline)
ci-e2e / e2e (push) Waiting to run
ci-minimal / check-minimal (push) Waiting to run

这个提交包含在:
2026-07-27 18:47:00 +08:00
父节点 768abb3679
当前提交 0783cf833a
共修改 3 个文件,包含 25 行新增和 9 行删除
+12
查看文件
@@ -251,6 +251,10 @@ business role assignment -> separate administrator-audited operation
- CLI: `npm run import:wecom-directory-export -- --input=- --dry-run`.
- Apply: `WECOM_DIRECTORY_EXPORT_APPLY=1 ... --input=- --apply
--actor-employee-no=<employee-no>`.
- When apply runs through Compose v1, pass the confirmation variable into the
container explicitly: `docker-compose exec -T -e
WECOM_DIRECTORY_EXPORT_APPLY server ...`; exporting it only in the host shell
does not satisfy the in-container gate.
- Binary stdin reader: `fs.readFileSync(0)`; do not assume
`fs.promises.readFile(0)` accepts a numeric file descriptor on the production
Node runtime.
@@ -289,6 +293,9 @@ business role assignment -> separate administrator-audited operation
`duplicate_values`; error output contains counts only.
- Existing OA unique-field or binding conflict -> conflict; no automatic merge.
- `--apply` without confirmation env or active actor -> refuse before sync.
- Confirmation env exported only on the Compose host ->
`apply_confirmation_required`; no sync/write. Add the name-only `-e` inherit
flag and rerun the same approved input.
- Promise-based stdin fd read returns `ERR_INVALID_ARG_TYPE` on the deployed
Node runtime -> no sync/write; use the fd-compatible reader and rerun dry-run
before requesting apply approval.
@@ -304,6 +311,8 @@ business role assignment -> separate administrator-audited operation
phone is preserved.
- Base: the local and production Node versions differ; the same binary stdin
workbook parses through `fs.readFileSync(0)` without a temporary file.
- Base: Compose v1 inherits the already-set non-secret apply confirmation only
when `exec -e WECOM_DIRECTORY_EXPORT_APPLY` is present.
- Bad: write an empty string or shared placeholder, use personal email in place
of the required enterprise email for bulk identity, or auto-grant a business
role during import.
@@ -315,6 +324,9 @@ business role assignment -> separate administrator-audited operation
malformed phone, missing enterprise email and duplicate account/phone/email.
- Unit regression asserts the CLI stdin helper calls `fs.readFileSync(0)`;
production dry-run must prove aggregate parsing/sync counts before apply.
- Apply acceptance must include a negative preflight without the container env
gate and a successful approved run with the name-only Compose `-e` flag;
both outputs remain count/category only.
- Route/service tests for create/update/import `null`, non-empty unique checks,
OAuth missing phone and empty-source preservation of an existing phone.
- Frontend typecheck/build and displays that render a clear empty-phone label.