尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗Converts FUEL Google Forms response exports (.xlsx or .csv) into the 35-column MASTERLIST import format of
FUEL (MGM-AD ADMIN).xlsx, with a full audit report. It works only on local files: no Google or Microsoft account,
API, credentials or network access is needed. Input files are never modified, and the live MASTERLIST is never written
to. You append the import file yourself.
Design and decision register: docs/DESIGN.md (v0.7).
Requires Python 3.11 or newer.
python -m venv .venv
.venv/bin/pip install -e ".[ui,dev]"
On Windows, use .venv\Scripts\pip and .venv\Scripts\fuel-parser instead of .venv/bin/....
output/ (git-ignored)..venv/bin/fuel-parser preview --source "FUEL RESP (CSP-AD MARF) v3.3.xlsx"
output/):
.venv/bin/fuel-parser run --source "FUEL RESP (CSP-AD MARF) v3.3.xlsx" --dry-run
output/FUEL_IMPORT_AUDIT_….xlsx: Summary (reconciliation), MappingStatus, Review (each held
record with its reason and the action to take), RowLog (every source row).With the shipped config/teams.yaml, every SALES LEADER is UNRESOLVED, so 0 records are exported and all
responses are listed in Review with SLOT_UNRESOLVED. This is the intended starting state.
Or use the local UI: .venv/bin/streamlit run app/streamlit_app.py (opens on localhost only).
Edit config/teams.yaml and change one entry:
# Verified by evidence (a MASTERLIST export or written confirmation from the form owner):
- {label_prefix: "TEAM LESLIE (AAD:", slot: 1, status: VERIFIED, evidence_type: masterlist_export,
evidence_ref: "MASTERLIST export 2026-11-01, sha256 <hash>"}
# Or your explicit operating assumption (exported with a warning, never reported as verified):
- {label_prefix: "TEAM LESLIE (AAD:", slot: 1, status: OWNER_APPROVED_UNVERIFIED, evidence_type: business_rule,
approved_by: "<your name>", approved_on: "2026-11-01"}
fuel-parser preflight-masterlist --masterlist <export.xlsx> counts SALES LEADER × seller slot in a MASTERLIST export
to support a VERIFIED entry. It never changes the configuration.
.venv/bin/fuel-parser run --source <export.xlsx> [--source <another export.xlsx> ...] --last-id <last Id in the live MASTERLIST>
--leads-log also writes the optional 17-column Leads Log.--team "TEAM X" limits the export to some teams. The others are counted as excluded.output/import_history.sqlite (hashes and row numbers only), so re-running the
same or a newer export never re-exports a record.fuel-parser void-batch <batch id> (list with fuel-parser batches)..venv/bin/fuel-parser draft-directory --source <export.xlsx> --out config/sellers.csv
Review the CSV and set status to APPROVED or REJECTED per row. Fill reviewer_email to override an address.
Only APPROVED rows are used; otherwise the submitter e-mail is used and logged. config/sellers.csv contains
personal data and is git-ignored.
| Situation | Option |
|---|---|
| Several exports at once (bulk import) | Repeat --source; one combined import file is produced and duplicates across files are held |
| Output must follow a specific MASTERLIST format | --template <file.xlsx>: the import file then uses that template's columns, order, sheet name and header style (columns it lacks are not exported; unknown columns stay blank). Without it the built-in 35-column layout is used |
| Which sheet is read | Only the response sheet: MARF RAW, or the one sheet with the response headers. All other sheets (team logs etc.) are ignored and listed in the audit |
| Several sheets look like response sheets | --sheet "<name>" to choose one |
| Compare with the workbook's team sheets (reference only) | --team-sheet-check |
| CSV with ambiguous dates | --timestamp-format "%m/%d/%Y %H:%M:%S" |
| Renamed headers flagged as suggestions | check them, then --accept-suggestions (saved per header layout in profiles/) |
| Unknown non-empty columns | check them, then --ignore-unmapped (saved) |
.venv/bin/pytest
Synthetic fixtures only. To also run the golden checks against the real export, point to local copies:
FUEL_GOLDEN_SOURCE="/path/FUEL RESP (CSP-AD MARF) v3.3.xlsx" FUEL_GOLDEN_TEMPLATE="/path/FUEL (MGM-AD ADMIN) (2).xlsx" .venv/bin/pytest
Open the Vercel site (e.g. https://fuelparser.vercel.app). It runs the same parser inside your browser: files are read on your computer and never uploaded.
The import history is stored in that browser only. Use the same browser for every export so records are never exported twice.
To run the browser app locally instead: python scripts/serve_web.py, then open http://localhost:8000.
Real workbooks, outputs, the ledger, the seller directory and saved profiles are git-ignored. Never commit them. The audit and review files contain client data: keep them on your computer.