This audit traced static imports, re-exports, literal dynamic imports, CSS imports, and `@/` aliases from the Vite entry. It also checked source references with `rg`, the route-boundary tests, and a production build after the minimal deletion.
The active route chain is:
```text
apps/admin/index.html
-> src/main.jsx
-> src/App.tsx
-> src/app/routes.tsx
-> src/modules/*/routes.tsx
```
`src/app/route-manifest.ts` remains the canonical public-URL inventory used by tests. The static active graph contained 406 local files, including 37 files under `src/pages`.
## Deleted in this cleanup
These files had no inbound edge from the active entry/module graph and were removed as explicitly authorized:
```text
apps/admin/src/routes/index.jsx
apps/admin/src/routes/routes.jsx
apps/admin/src/routes/lazyLoadAndDelay.jsx
apps/admin/src/components/list/index.jsx
apps/admin/src/common/TableCom/index.jsx
```
Evidence for the legacy route deletion:
-`index.html` loads only `/src/main.jsx`.
-`main.jsx` renders `App.tsx`; `App.tsx` imports `@/app/routes`, not `@/routes`.
- The only importer of `src/routes/routes.jsx` was `src/routes/index.jsx`; nothing imported `src/routes/index.jsx`.
-`lazyLoadAndDelay.jsx` was imported only by the deleted legacy route table.
- The route-boundary tests still pass after deletion and confirm that root routing delegates to domain modules.
- The production build succeeds after deletion.
Evidence for the old list-component deletion:
- No active `main/App/app/modules/layout/utils` file imports `@/components/list` or `@/common/TableCom`.
- The current list implementation is `src/shared/components/AppList`.
-`common/TableCom` and `components/list` were absent from the active static graph; tests and production build pass after removal.
`apps/admin/src/config/component.js` is therefore runtime code, not an unused route table. `generateToAntdMenus` reads its names, component metadata, `isChild`, and `childThirdRoutes`. Do not delete it until the layout/menu metadata path is replaced.
-`modules/books/management/routes.tsx` reaches the legacy add/edit screen and the full `pages/books/section` editor subtree.
-`modules/books/sale/routes.tsx` reaches the legacy sale editor and discussion-detail screen, which still depend on legacy sale/classify requests.
-`modules/books/audit` reaches the legacy preview and audit stylesheet; preview also depends on the section request.
-`modules/advertisements/advert` still deliberately uses the legacy adsense request and help-center OSS token request.
- Auth, account, student-book, and the top-level domain layouts remain compatibility wrappers over legacy pages.
## Inactive pages retained for a later domain cleanup
The audit also found legacy page files outside the active graph. They were not removed in this minimal cleanup because they must be handled by domain and some still contain textual imports of the deleted legacy list helpers.
In particular:
- Fourteen inactive legacy pages still contain `@/common/TableCom` imports.
-`pages/setting/coupon/index.jsx` still contains an `@/components/list` import.
-`config/component.js` still contains legacy component-path strings for menu metadata; these are not dynamic imports, but should be updated only when that metadata layer is redesigned.
Recommended next step: delete inactive pages in domain-sized commits, remove their now-stale helper imports at the same time, and rerun the active-graph audit after each domain. Do not delete the 37 reachable files listed above.
## Post-cleanup verification
- Active-entry/module `rg` check for the deleted route and list helpers: no references.
- Full-page-tree `rg`: only the inactive legacy-page imports documented above remain.
-`pnpm test`: passed, 11 tests.
-`pnpm build`: passed; only the existing formula-editor and large-chunk warnings were emitted.
## Concerns
- The retained inactive pages are not independently buildable until their stale `TableCom`/`components/list` imports are removed or replaced. They are outside the current Vite runtime graph, which is why the admin build remains valid.
-`config/component.js` couples backend menu data to legacy component-path metadata even though current routing is module-owned; it needs a separate migration before removal.