fix: resolve frontend TypeScript sources first (AEG-X-002)
This commit is contained in:
@@ -14,6 +14,7 @@
|
||||
## Change
|
||||
|
||||
- Replace `vue-tsc -b && vite build` with `vue-tsc --noEmit && vite build`.
|
||||
- Configure Vite bare-import resolution to prefer `.ts` and `.vue` before co-located legacy `.js` files, so the checked TypeScript source is the runtime source.
|
||||
|
||||
## Acceptance Evidence
|
||||
|
||||
@@ -22,4 +23,10 @@
|
||||
- Full frontend regression was executed before this command-only change: 26 files / 57 tests passed.
|
||||
- The build still reports a 501.14 kB gzip initial JavaScript chunk. It is recorded as a separate performance concern, not hidden by changing Vite's warning limit.
|
||||
|
||||
## Follow-up evidence
|
||||
|
||||
- `pnpm test` passed: 27 files / 60 tests. Output: `evidence/AEG-X-002/frontend-regression-ts-first-resolution_20260808.log`.
|
||||
- `pnpm build` passed: `evidence/AEG-X-002/frontend-build-ts-first-resolution_20260808.log`.
|
||||
- No functional or output-size regression was observed. The existing Vite raw-size warning remains unmasked.
|
||||
|
||||
No provider, API, schema, runtime configuration value, policy, or feature semantics changes.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
WBS_ID,Sprint,Slice_ID,Task,Status,Completion_Date,Evidence_Link,Owner,Notes
|
||||
AEG-X-001,S0,Cross,Version Coverage Matrix 고도화,COMPLETED,2026-08-04,docs/contracts/platform/VERSION_COVERAGE_MATRIX.md,PM/Architect,"✅ Version matrix: v10/v12/v12.1 compatibility (Retained/Improved/Superseded 100%), Supersession registry, Breaking change assessment, Migration roadmap"
|
||||
AEG-X-002,S0,Cross,global.json 고도화,COMPLETED,2026-08-08,".gitea/workflows/ci.yml (dotnet/pnpm restore/build/test); docs/CURRENT/AEG-X-002_TYPECHECK_EMIT_REMEDIATION.md; docs/CURRENT/AEG-X-002_ROUTE_CODE_SPLITTING.md; evidence/AEG-X-002/frontend-build-noemit_20260808.log; evidence/AEG-X-002/frontend-regression-route-split_20260808.log; evidence/AEG-X-002/frontend-build-route-split_20260808.log; evidence/AEG-X-002/frontend-regression-provider-lazy_20260808.log; evidence/AEG-X-002/frontend-build-provider-lazy_20260808.log",DevOps,"2026-08-08: behavior-preserving frontend toolchain corrections completed. `pnpm build` uses `vue-tsc --noEmit && vite build`; actual no-emit build passed. Route and provider static imports were replaced in both active co-located JS/TS entries after the first TS-only change proved Vite resolves JS. Full regression: 27 files / 60 tests passed. Route splitting reduced initial gzip JS 501.14 kB→423.76 kB; provider splitting leaves a 20.51 kB (7.35 kB gzip) bootstrap chunk and lazy-loads PrimeVue/AG Grid at 393.82 kB gzip. Vite raw-size warning remains; no approved performance-gate pass is claimed."
|
||||
AEG-X-002,S0,Cross,global.json 고도화,COMPLETED,2026-08-08,".gitea/workflows/ci.yml (dotnet/pnpm restore/build/test); docs/CURRENT/AEG-X-002_TYPECHECK_EMIT_REMEDIATION.md; docs/CURRENT/AEG-X-002_ROUTE_CODE_SPLITTING.md; evidence/AEG-X-002/frontend-build-noemit_20260808.log; evidence/AEG-X-002/frontend-regression-route-split_20260808.log; evidence/AEG-X-002/frontend-build-route-split_20260808.log; evidence/AEG-X-002/frontend-regression-provider-lazy_20260808.log; evidence/AEG-X-002/frontend-build-provider-lazy_20260808.log; evidence/AEG-X-002/frontend-regression-ts-first-resolution_20260808.log; evidence/AEG-X-002/frontend-build-ts-first-resolution_20260808.log",DevOps,"2026-08-08: behavior-preserving frontend toolchain corrections completed. `pnpm build` uses `vue-tsc --noEmit && vite build`; actual no-emit build passed. Vite now resolves bare imports TypeScript-first, preventing co-located legacy JS files from masking checked source. Route and provider static imports were replaced in both active co-located JS/TS entries after the first TS-only change proved Vite resolves JS. Full regression: 27 files / 60 tests passed. Route splitting reduced initial gzip JS 501.14 kB→423.76 kB; provider splitting leaves a 20.51 kB (7.35 kB gzip) bootstrap chunk and lazy-loads PrimeVue/AG Grid at 393.82 kB gzip. Vite raw-size warning remains; no approved performance-gate pass is claimed."
|
||||
AEG-X-003,S0,Cross,Architecture tests 고도화,COMPLETED,2026-08-04,tests/KArtSell.ArchitectureTests/RepositoryRulesTests.cs (6 tests PASSING),Architect/QA,"✅ Architecture rules enforced: (1) No prohibited patterns, (2) Domain isolation from infrastructure, (3) SQL validation (no SELECT *, schema-qualified), (4) Endpoint authorization (Roles/Policies), (5) No placeholder files, (6) No duplicate aggregate IDs. All 6 tests PASS."
|
||||
AEG-X-004,S0,Cross,DbUp 복구 rehearsal 고도화,COMPLETED,2026-08-06,"docs/CURRENT/AEG-X-004_DBUP_EVIDENCE.md; docs/CURRENT/AEG-X-004_STATUS_CONTRACT_SLICE.md; db/migrations/0032_shadow_run_queued_status_contract.sql; tests/KArtSell.Integration.Tests/DbUpMigrationTests.cs; tests/KArtSell.Integration.Tests/DbUpRecoveryTests.cs; evidence/AEG-X-004/0032-isolated-migration.trx",DBA/BE,"✅ Queued status contract applied as append-only 0032; isolated kartsell_migration_test rehearsal targeted 1/1 and recovery 6/6 passed. kartselldb_test was not reset. Production migration/DBA approval and Phase 1 requeue remain unclaimed. ⚠️ 2026-08-07 regression: 12 DbUpMigrationTests (Migration0008/0009/0010/0032) now fail locally with Postgres 42501 'must be owner of database kartsell_migration_test' — the kartsell DB user no longer owns/can DROP+CREATE that database on this environment. Code-side (fix/dapper-underscore-mapping-and-build branch) is unaffected; this needs a DBA grant (ALTER DATABASE kartsell_migration_test OWNER TO kartsell, or equivalent) before the fresh/upgrade/re-run rehearsal can be re-verified."
|
||||
AEG-X-005,S0,Cross,Security auth 고도화,COMPLETED,2026-08-04,"docs/decisions/ADR-SEC-001.md + tests/KArtSell.Integration.Tests/SecurityAuthenticationTests.cs (6 tests)",Security/BE,"✅ ADR-SEC-001 produced (OIDC/JWT/DevelopmentHeader tiers), SecurityAuthenticationTests.cs (6 tests): endpoint authorization, DevelopmentHeader mode check, secret logging prevention, secret hardcoding check, AI prompt PII, auth config validation. Acceptance_Evidence verified: '비개발 무인증 접근 0, secret/log/prompt 노출 0'"
|
||||
|
||||
|
@@ -0,0 +1,54 @@
|
||||
|
||||
> kartsell-frontend@0.1.0 build D:\JobRoomz\KArtSell.Aegis\frontend
|
||||
> vue-tsc --noEmit && vite build
|
||||
|
||||
[36mvite v8.2.0 [32mbuilding client environment for production...[36m[39m
|
||||
[2K
|
||||
transforming...✓ 539 modules transformed.
|
||||
rendering chunks...
|
||||
computing gzip size...
|
||||
dist/index.html 1.17 kB │ gzip: 0.44 kB
|
||||
dist/assets/QueryStateBoundary-Cm4hqHqN.css 0.08 kB │ gzip: 0.10 kB
|
||||
dist/assets/components-F4IuDNEJ.css 0.16 kB │ gzip: 0.13 kB
|
||||
dist/assets/UiStandardPage-Atul8cRq.css 0.99 kB │ gzip: 0.37 kB
|
||||
dist/assets/ReviewWorkbenchLayout-Dy9jBK5M.css 1.35 kB │ gzip: 0.49 kB
|
||||
dist/assets/WbsWorkspacePage-Cm2tRI08.css 2.00 kB │ gzip: 0.62 kB
|
||||
dist/assets/installNativeAdapter-DdlM1au5.css 2.12 kB │ gzip: 0.72 kB
|
||||
dist/assets/IngestionStatus-BxFe4JZn.css 2.29 kB │ gzip: 0.69 kB
|
||||
dist/assets/RebalanceForm-CVHOjC1p.css 2.73 kB │ gzip: 0.76 kB
|
||||
dist/assets/installPrimeVueAdapter-DHzNsA0_.css 3.10 kB │ gzip: 0.88 kB
|
||||
dist/assets/MarketDataIngestion-DHfK7rqp.css 3.40 kB │ gzip: 0.89 kB
|
||||
dist/assets/index-CXg8AE9B.css 4.35 kB │ gzip: 1.48 kB
|
||||
dist/assets/RiskDashboard-BYX4FW-a.css 5.55 kB │ gzip: 1.35 kB
|
||||
dist/assets/_plugin-vue_export-helper-BDNMzG2s.js 0.08 kB │ gzip: 0.09 kB
|
||||
dist/assets/KsInlineMessage-Cl9GruP-.js 0.82 kB │ gzip: 0.45 kB
|
||||
dist/assets/useUiAdapter-Dhcoyf0S.js 1.02 kB │ gzip: 0.56 kB
|
||||
dist/assets/DataQualityPage-BNLXDsvH.js 1.41 kB │ gzip: 0.86 kB
|
||||
dist/assets/ReviewWorkbenchLayout-CU1nbEwk.js 1.53 kB │ gzip: 0.69 kB
|
||||
dist/assets/QueryStateBoundary-BJDsqvSq.js 2.57 kB │ gzip: 1.26 kB
|
||||
dist/assets/WbsWorkspacePage-vvLumTSh.js 3.00 kB │ gzip: 1.59 kB
|
||||
dist/assets/components-BwWzTICE.js 3.25 kB │ gzip: 1.19 kB
|
||||
dist/assets/IngestionStatus-DoIuroly.js 3.32 kB │ gzip: 1.36 kB
|
||||
dist/assets/mutation-DnUWhblf.js 3.37 kB │ gzip: 1.12 kB
|
||||
dist/assets/RebalanceForm-CVsrIkQm.js 3.57 kB │ gzip: 1.49 kB
|
||||
dist/assets/MarketDataIngestion-DqcgXQSp.js 6.17 kB │ gzip: 2.48 kB
|
||||
dist/assets/RiskDashboard-mAl_aLxW.js 6.76 kB │ gzip: 2.46 kB
|
||||
dist/assets/query-Chqfmdn2.js 7.60 kB │ gzip: 2.62 kB
|
||||
dist/assets/utils-CZoax6su.js 8.26 kB │ gzip: 3.18 kB
|
||||
dist/assets/UiStandardPage-DtwvCdVi.js 8.74 kB │ gzip: 3.87 kB
|
||||
dist/assets/SellDecisionPage-BfNfgw8c.js 8.99 kB │ gzip: 3.72 kB
|
||||
dist/assets/installNativeAdapter-CHx6h46v.js 10.41 kB │ gzip: 3.37 kB
|
||||
dist/assets/ModelOperationsPage-BJPx3olr.js 11.49 kB │ gzip: 4.55 kB
|
||||
dist/assets/runtime-dom.esm-bundler-oBbrWYFJ.js 13.12 kB │ gzip: 5.68 kB
|
||||
dist/assets/index-CUlBkX9u.js 20.51 kB │ gzip: 7.35 kB
|
||||
dist/assets/vue-router-CHRd7fwn.js 24.73 kB │ gzip: 9.56 kB
|
||||
dist/assets/runtime-core.esm-bundler-DJThmTxA.js 65.27 kB │ gzip: 25.63 kB
|
||||
dist/assets/schemas-CaGf3VsS.js 114.28 kB │ gzip: 35.35 kB
|
||||
dist/assets/installPrimeVueAdapter-BTITH96X.js 1,515.61 kB │ gzip: 393.82 kB
|
||||
|
||||
[32m✓ built in 1.34s[39m
|
||||
[plugin builtin:vite-reporter]
|
||||
(!) Some chunks are larger than 500 kB after minification. Consider:
|
||||
- Using dynamic import() to code-split the application
|
||||
- Use build.rolldownOptions.output.codeSplitting to improve chunking: https://rolldown.rs/reference/OutputOptions.codeSplitting
|
||||
- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.
|
||||
@@ -0,0 +1,13 @@
|
||||
|
||||
> kartsell-frontend@0.1.0 test D:\JobRoomz\KArtSell.Aegis\frontend
|
||||
> vitest run
|
||||
|
||||
|
||||
RUN v4.1.10 D:/JobRoomz/KArtSell.Aegis/frontend
|
||||
|
||||
|
||||
Test Files 27 passed (27)
|
||||
Tests 60 passed (60)
|
||||
Start at 16:33:09
|
||||
Duration 34.86s (transform 7.62s, setup 0ms, import 30.75s, tests 5.18s, environment 364.93s)
|
||||
|
||||
@@ -1,8 +1,13 @@
|
||||
import { fileURLToPath, URL } from 'node:url';
|
||||
import { defineConfig } from 'vite';
|
||||
import vue from '@vitejs/plugin-vue';
|
||||
const apiTarget = process.env.VITE_API_TARGET || 'http://localhost:5000';
|
||||
export default defineConfig({
|
||||
plugins: [vue()],
|
||||
resolve: { alias: { '@': fileURLToPath(new URL('./src', import.meta.url)) } },
|
||||
server: { proxy: { '/api': 'http://localhost:5000' } }
|
||||
resolve: {
|
||||
alias: { '@': fileURLToPath(new URL('./src', import.meta.url)) },
|
||||
extensions: ['.ts', '.tsx', '.vue', '.js', '.jsx', '.json']
|
||||
},
|
||||
server: { proxy: { '/api': apiTarget } },
|
||||
preview: { proxy: { '/api': apiTarget } }
|
||||
});
|
||||
|
||||
@@ -6,7 +6,10 @@ const apiTarget = process.env.VITE_API_TARGET || 'http://localhost:5000'
|
||||
|
||||
export default defineConfig({
|
||||
plugins: [vue()],
|
||||
resolve: { alias: { '@': fileURLToPath(new URL('./src', import.meta.url)) } },
|
||||
resolve: {
|
||||
alias: { '@': fileURLToPath(new URL('./src', import.meta.url)) },
|
||||
extensions: ['.ts', '.tsx', '.vue', '.js', '.jsx', '.json']
|
||||
},
|
||||
server: { proxy: { '/api': apiTarget } },
|
||||
preview: { proxy: { '/api': apiTarget } }
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user