Design for letting users submit a fresh approval round when a
budget-year/faculty/area's request_expense has already been fully
approved but new line items need to go through approval too.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MNN1mgyALe9skewgUDSMLK
Bite-sized task breakdown implementing the design in
docs/superpowers/specs/2026-08-05-income-budget-report-native-design.md,
scoped to Group A only (income-budget-report-income1, type_id 1) per the
writing-plans skill's guidance to split independently-testable subsystems
into separate plans. Group B (type 4-6) and Group C (type 10) are explicitly
out of scope, tracked as follow-up plans.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011R9j5gaw2qsoh9ypWQeXxi
Design for replacing the SyncFusion spreadsheet on income-budget-report-income1
and its 6 sibling menus with a native Angular tree component. Covers the 3
structurally-distinct document groups found in the real production files
(draft rounds 1-3, allocation/adjustment 4-6, material-cost matrix type 10),
the shift from source-locked-vs-editable data (ร.2/ร.4/ร.5/ร.6 as read-only
source, only committee-adjusted amounts editable), and the new
income_budget_report/income_budget_report_line data model replacing the
.xlsx-blob storage.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011R9j5gaw2qsoh9ypWQeXxi
Task-by-task plan (routes/menu, review-tab components, container wiring,
report-form lock/badge/buttons, submit list UI, e2e verification) for the
design in docs/superpowers/specs/2026-07-21-out-of-plan-report-review-design.md.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01613NaY9LAvy2wFXEeyE5eR
Design for adding a "ส่งงานแผน" submit flow to the out-of-plan report
list plus a new reviewer menu "ตรวจสอบรายงานผล(นอกแผน)", mirroring the
existing check-project-report status_id flow with no backend changes.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01613NaY9LAvy2wFXEeyE5eR
- Replace xlsx with exceljs in construction calculator; switch date input to Thai Buddhist Era selectors
- Add disbursement plan preview HTML and schedule table prototype
- Add sync_budget_come_from SQL script
- Add budget type select menu design plan
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Rounding drift: last installment computed as remainder (contract - cumSoFar) so column sums match exactly
- XSS: input values set via .value property assignment instead of attribute interpolation in innerHTML
- nookPct: getInputs() now derives nookPct as 100 - ngpmPct (single source of truth)
- Confirm guard: onCountChange only prompts when n differs from current installments.length
- Export filename: uses Buddhist Era year (getFullYear() + 543) consistent with all date displays