feat: add docfill mvp cli
This commit is contained in:
90
docs/digital-employee-runbook.md
Normal file
90
docs/digital-employee-runbook.md
Normal file
@@ -0,0 +1,90 @@
|
||||
# Digital Employee Runbook
|
||||
|
||||
This file is the minimal operating contract for calling `docfill` from a digital employee, scheduler, or shell script.
|
||||
|
||||
## Inputs
|
||||
|
||||
Each run needs:
|
||||
|
||||
- A `task.json` config file.
|
||||
- A data source: `.xlsx` or SQLite `.db`.
|
||||
- A template: `.docx` or `.xlsx`.
|
||||
- An output path pattern in `task.json`.
|
||||
|
||||
Paths inside `task.json` are resolved from the config file directory.
|
||||
|
||||
## Command
|
||||
|
||||
```bash
|
||||
docfill run -c /path/to/task.json --var date=2026-06-18
|
||||
```
|
||||
|
||||
Use repeated `--var key=value` arguments for runtime values:
|
||||
|
||||
```bash
|
||||
docfill run -c task.json --var date=2026-06-18 --var batch=早班
|
||||
```
|
||||
|
||||
CLI variables override `vars` in `task.json`. Row data overrides both.
|
||||
|
||||
## Success
|
||||
|
||||
Exit code `0`.
|
||||
|
||||
Stdout contains generated files:
|
||||
|
||||
```text
|
||||
generated 2 file(s)
|
||||
- /path/to/out/report_张三.xlsx
|
||||
- /path/to/out/report_李四.xlsx
|
||||
```
|
||||
|
||||
## Failure
|
||||
|
||||
Exit code `1` means the task ran but failed.
|
||||
|
||||
Exit code `2` means the command line was invalid.
|
||||
|
||||
Errors are written to stderr with the `docfill:` prefix:
|
||||
|
||||
```text
|
||||
docfill: render row 1: missing template field "done"
|
||||
```
|
||||
|
||||
## Common Errors
|
||||
|
||||
`missing template field`
|
||||
|
||||
The template contains a `{{field}}` that is not present in data, `vars`, or CLI `--var`.
|
||||
|
||||
`output already exists`
|
||||
|
||||
The output file exists and `output.overwrite` is not `true`.
|
||||
|
||||
`missing sqlite params field`
|
||||
|
||||
A SQLite query parameter such as `{{date}}` was not provided.
|
||||
|
||||
`unresolved placeholder`
|
||||
|
||||
The rendered document still contains `{{field}}`. Check the source data value and the template.
|
||||
|
||||
## Build
|
||||
|
||||
```bash
|
||||
bash scripts/build.sh
|
||||
```
|
||||
|
||||
The local build output is:
|
||||
|
||||
```text
|
||||
dist/docfill-darwin-arm64
|
||||
```
|
||||
|
||||
## Smoke Test
|
||||
|
||||
```bash
|
||||
bash scripts/smoke.sh
|
||||
```
|
||||
|
||||
Smoke test builds a temporary binary, generates temporary example files, runs both example configs, and checks generated outputs.
|
||||
Reference in New Issue
Block a user