docs: update HISTORY v0.26.0, remove completed XLSX dual-column from FUTURE

This commit is contained in:
null 2026-05-11 22:19:02 -05:00
parent 831f617893
commit d32a30495d
2 changed files with 14 additions and 47 deletions

View File

@ -31,53 +31,6 @@ Items are grouped under their priority section heading (`## 🔴 CRITICAL`, `##
## Pending Recommendations ## Pending Recommendations
### 🔴 Import XLSX Dual-Column Layout Not Parsed — CRITICAL
**Priority:** CRITICAL
**Added:** 2026-05-11 by Ripley
**Description:**
The real-world spreadsheet (`backups/monthly bills.xlsx`) uses a **dual-column layout** — each monthly sheet is split into two halves representing two payment periods:
- **Left half (columns A-E):** Bills due around the **1st** of the month
- **Right half (columns G-K):** Bills due around the **15th** of the month
Each half has its own `Due Date | Bill | Amount | Paid Date | Date Cleared` headers. The current parser only detects headers in the first row and processes columns linearly, so it captures the 1st-of-month bills but completely misses all 15th-of-month bills (roughly half the data).
Example from Apr 2026 sheet:
```
Left (1st): auto | Roadrunner ATV | $225.64 | paid 2026-03-01 (due ~1st)
Right (15th): | Amazon chase card | $366 | paid 2026-04-20 (due ~15th)
```
**Rationale:**
- This is the actual production spreadsheet the app needs to import
- ~100 monthly sheets spanning 20172026, each with two payment periods
- The 15th-of-month bills (credit cards, loans, subscriptions) are completely lost during import
- Without dual-column support, the import feature is broken for real data
- The "1st vs 15th" split is semantically meaningful — it maps to `due_day` in the bill model
**Additional Issues in This Spreadsheet:**
- Rows 12 contain paycheck/leftover summary data, not bills — parser must skip these
- Non-numeric amount values: "double pay", blank amounts, "past due" — need graceful handling
- Due date column contains non-date values: "auto" (autopay indicator), "24th" (day-of-month shorthand), account numbers like "9522104"
- Some sheets have slight column layout variations (extra column, merged cells)
- Sheet names have typos: "Januaru 2021", "Novevmber 2019", "Febuary 2023" — parser already handles these
- 3 non-month sheets ("2018 taxes", "debt totoals", "home ownership expenses") should be skipped — already handled by `NON_MONTH_SHEET_RE`
- "auto" in the Due Date column is an autopay flag, not a date — should be detected as a label, not parsed as a date
**Implementation Notes:**
- Modify `spreadsheetImportService.js` to detect dual-column headers in a single sheet row
- When two sets of bill headers are found (A-E and G-K), process each half independently
- Left half rows should default `due_day` to ~1, right half rows should default `due_day` to ~15
- Each half produces its own set of rows with the same sheet name/month context
- Handle non-numeric amount cells gracefully (null amount, "double pay" as a note/label)
- "auto" in Due Date column → set `autopay` label/detected label, don't try to parse as date
- "24th" in Due Date column → parse as day-of-month (24)
- Skip rows where the bill name cell is blank AND the amount cell is blank or non-numeric
- Filter out paycheck/summary rows (Row 1: Paycheck amounts, Row 2: Left Over calculations)
- The `backups/monthly bills.xlsx` file is in `backups/` (gitignored) for testing
- Files to modify: `services/spreadsheetImportService.js`, possibly `routes/import.js`
- Estimated effort: 4-6 hours
### 🔴 No Confirmation Before Destructive Actions — CRITICAL ### 🔴 No Confirmation Before Destructive Actions — CRITICAL
**Priority:** CRITICAL **Priority:** CRITICAL
**Added:** 2026-05-11 by Ripley **Added:** 2026-05-11 by Ripley

View File

@ -1,5 +1,19 @@
# Bill Tracker — Changelog # Bill Tracker — Changelog
## v0.26.0
### Added
- **Dual-column XLSX import** — Spreadsheets with two side-by-side bill tables (bills due ~1st and ~15th) are now both imported. Left half defaults `due_day` to 1, right half defaults to 15.
- **Header row scanning** — Parser scans rows 04 for bill headers instead of assuming row 0, correctly skipping paycheck/summary rows.
- **Day pattern parsing** — Due date values like "1st", "15th", "24th" are now parsed as day-of-month numbers.
- **Non-numeric amount labels** — "auto", "double pay", "past due" in amount cells become detected labels instead of causing parse errors.
### Changed
- **Cell type validation** — Allow `'s'` (shared formula) cell type in XLSX parsing, fixing import failures on some spreadsheet formats.
### Security
- **Audit by Private_Hudson** — Bounds validation in `isBlankRowForHeaderSet`, anchored regex for day patterns, label sanitization verified. All checks PASS.
## v0.25.0 ## v0.25.0
### Added ### Added