# Day 1 - 预算模型与接口契约 ## 目标 先把预算中心的数据边界和接口边界定稳,避免后续把预算逻辑散落在申请、报销、审批和付款模块里。 ## 开发任务 - [ ] 新增预算模型设计。 - [ ] 新增预算交易台账设计。 - [ ] 新增预算服务边界设计。 - [ ] 新增预算接口契约。 - [ ] 新增预算状态与交易类型常量。 - [ ] 明确申请、报销、付款对预算服务的调用点。 ## 建议模型 预算额度: ```text BudgetAllocation - id - budget_no - fiscal_year - period_type - period_key - department_id - department_name - cost_center - project_code - subject_code - subject_name - original_amount - adjusted_amount - status - warning_threshold - created_at - updated_at ``` 预算交易: ```text BudgetTransaction - id - transaction_no - allocation_id - source_type - source_id - source_no - transaction_type - amount - before_available_amount - after_available_amount - operator - reason - created_at ``` 交易类型: ```text init 初始化 adjust 调整 reserve 预占 release 释放 consume 核销 rollback 回滚 freeze 冻结 unfreeze 解冻 ``` 预算汇总字段由交易汇总得到: ```text total_amount = original_amount + adjusted_amount reserved_amount = reserve - release consumed_amount = consume - rollback available_amount = total_amount - reserved_amount - consumed_amount ``` ## 接口契约 ```text GET /api/v1/budgets/allocations POST /api/v1/budgets/allocations GET /api/v1/budgets/allocations/{id} GET /api/v1/budgets/allocations/{id}/transactions POST /api/v1/budgets/allocations/{id}/adjust POST /api/v1/budgets/check POST /api/v1/budgets/reserve POST /api/v1/budgets/release POST /api/v1/budgets/consume POST /api/v1/budgets/rollback GET /api/v1/budgets/summary ``` ## 验收 - [ ] 能创建一条部门月度预算。 - [ ] 能查询预算列表和详情。 - [ ] 能查询预算台账。 - [ ] 能根据部门、成本中心、项目、费用科目定位预算。 - [ ] 预算不足时 `check` 接口能返回明确原因。