feat: P5-W3 본론 완료 — 회계결산/이상치예측/연말명세서 (V74~V78)

P5-W2 원천세·부가세 분기신고 미커밋분 + P5-W3 메뉴/권한 보강(V74) + P5-W3 본론(V75~V78)을 일괄 정리.

- V75 accounting_close / account_balance_snapshot (회계 결산)
- V76 retention_anomaly_alert / forecast_kpi_monthly (이상치·예측 KPI)
- V77 year_end_statement (연말 지급명세서)
- V78 P5-W3 본론 메뉴 4 + 권한 + 공통코드 7그룹 + 테스트데이터
- api: AccountingClose/YearEndStatement/ForecastKpi/RetentionAnomaly Service+Controller
- batch: BatchConfig Step 11/12 (원천세·부가세 분기) 연결
- frontend: 4화면(AccountingClose/YearEndStatement/RetentionAnomaly/ForecastKpi) + API 모듈 4 + 라우트
- frontend: usePermission/PermissionButton EXECUTE 권한 누락 보강
- fix: YearEndStatementMapper.xml 미존재 컬럼 a.agent_code 참조 제거

통합검증: Flyway V74~V78 운영DB 적용(v78), 4모듈 compileJava + 프론트 build PASS,
스모크 GET 8/8 + 쓰기 4/4 PASS, verify_v74.py 20/20 PASS.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
GA Pro
2026-05-21 22:22:34 +09:00
parent d5ed642c80
commit 49f08f001d
80 changed files with 4506 additions and 62 deletions
+16 -4
View File
@@ -11,6 +11,12 @@ import AccountingJournalList from '@/pages/accounting/AccountingJournalList';
import WithholdingTaxReportList from '@/pages/tax/WithholdingTaxReportList';
import VatReportList from '@/pages/tax/VatReportList';
// ── P5-W3: 결산 / 연말명세서 / 이상치 / 예측 ──────────
import AccountingCloseList from '@/pages/accounting/AccountingCloseList';
import YearEndStatementList from '@/pages/income/YearEndStatementList';
import RetentionAnomalyList from '@/pages/kpi/RetentionAnomalyList';
import ForecastKpiList from '@/pages/kpi/ForecastKpiList';
// ── P4: 수수료 종류 ──────────────────────────────────
import CommissionMaster from '@/pages/commission/CommissionMaster';
import CollectionCommission from '@/pages/commission/CollectionCommission';
@@ -149,10 +155,12 @@ export default function App() {
<Route path="report/chargeback-risk" element={<ChargebackRiskReport />} />
{/* KPI 대시보드 */}
<Route path="kpi/monthly" element={<KpiMonthlySummary />} />
<Route path="kpi/org" element={<KpiOrgSummary />} />
<Route path="kpi/retention" element={<KpiRetention />} />
<Route path="kpi/cumulative" element={<KpiCumulative />} />
<Route path="kpi/monthly" element={<KpiMonthlySummary />} />
<Route path="kpi/org" element={<KpiOrgSummary />} />
<Route path="kpi/retention" element={<KpiRetention />} />
<Route path="kpi/cumulative" element={<KpiCumulative />} />
<Route path="kpi/retention-anomaly" element={<RetentionAnomalyList />} />
<Route path="kpi/forecast" element={<ForecastKpiList />} />
{/* P5: 연말명세서 / 분개장 */}
<Route path="commission/annual-income" element={<AgentAnnualIncomeList />} />
@@ -162,6 +170,10 @@ export default function App() {
<Route path="commission/withholding-tax" element={<WithholdingTaxReportList />} />
<Route path="commission/vat-report" element={<VatReportList />} />
{/* P5-W3: 회계 결산 / 연말 지급명세서 */}
<Route path="commission/accounting-close" element={<AccountingCloseList />} />
<Route path="commission/year-end-statement" element={<YearEndStatementList />} />
{/* P4: 수수료 종류 */}
<Route path="commission/type" element={<CommissionMaster />} />
<Route path="commission/master" element={<CommissionMaster />} />