Commit Graph

12 Commits

Author SHA1 Message Date
xiaoxia 493e85ce0e fix(web): 同步 package-lock.json ——修复 CI Staging Web 镜像构建失败 (npm ci EUSAGE) (#2021)
CI/CD Pipeline / Check push changed paths (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (push) Has been skipped
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 2s
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (push) Successful in 2s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 3s
CI/CD Pipeline / Check push changed paths (push) Successful in 4s
CI/CD Pipeline / Validate - Security (pull_request) Has been skipped
CI/CD Pipeline / Validate - Style (pull_request) Has been skipped
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (push) Has been skipped
CI/CD Pipeline / PR Build API Image (push) Has been skipped
CI/CD Pipeline / PR Build Worker Image (push) Has been skipped
CI/CD Pipeline / PR Build Web Image (push) Has been skipped
CI/CD Pipeline / Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 43s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 2m23s
CI/CD Pipeline / Build Staging Web Image (push) Successful in 1m41s
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been skipped
CI/CD Pipeline / Build Staging API Image (push) Successful in 2m6s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m8s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Has been skipped
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 3m8s
CI/CD Pipeline / Build Staging Worker Image (push) Successful in 50s
CI/CD Pipeline / CI Gate (pull_request) Successful in 2s
CI/CD Pipeline / Retag skipped Staging API Image (push) Has been skipped
CI/CD Pipeline / Retag skipped Staging Web Image (push) Has been skipped
CI/CD Pipeline / Retag skipped Staging Worker Image (push) Has been skipped
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 4m28s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Successful in 1m19s
CI/CD Pipeline / Frontend Unit Tests (push) Successful in 4m56s
CI/CD Pipeline / Validate - Style (push) Successful in 6m47s
CI/CD Pipeline / ACR Image Cleanup (push) Successful in 2m5s
AI Code Review / AI Code Review (pull_request) Successful in 6m59s
CI/CD Pipeline / Validate - Python (mypy + alembic) (push) Successful in 7m22s
CI/CD Pipeline / Staging API Integration Tests (push) Successful in 3m35s
CI/CD Pipeline / Staging E2E Tests (push) Failing after 3m49s
CI/CD Pipeline / Integration Tests (push) Successful in 10m36s
CI/CD Pipeline / Unit Tests (push) Successful in 12m55s
CI/CD Pipeline / Validate - Security (push) Successful in 17m4s
CI/CD Pipeline / Build Production API Image (push) Has been skipped
CI/CD Pipeline / Build Production Worker Image (push) Has been skipped
CI/CD Pipeline / Build Production Web Image (push) Has been skipped
CI/CD Pipeline / CI Gate (push) Has been skipped
CI/CD Pipeline / Deploy Production (push) Has been skipped
CI/CD Pipeline / Canary Release to Production (push) Has been skipped
CI/CD Pipeline / Production Browser E2E (push) Has been skipped
fix(web): 同步 package-lock.json——classnames/dayjs 显式依赖导致 npm ci EUSAGE

PR#2020 在 apps/web/package.json 中新增 classnames ^2.5.1 和 dayjs ^1.11.23 显式依赖时,只用 pnpm add 更新了 pnpm-lock.yaml,未同步 CI(web.Dockerfile)实际使用的 package-lock.json。lockfile 中 dayjs 仍停留在 1.11.21(antd 传递依赖),npm ci 严格校验版本不匹配,导致 CI Run #54590 Build Staging Web Image 连续三次失败。

修复:重新 npm install 同步 package-lock.json,dayjs 升至 1.11.23,classnames 提升为顶级依赖。本地 npm ci / tsc / vite build / eslint 均通过。
2026-09-23 17:16:19 +08:00
CI Bot 1225e65cc3 style: auto-format with black + isort + prettier [skip ci-format-check]
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 3s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 2s
CI/CD Pipeline / Validate - Style (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Security (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Has been cancelled
CI/CD Pipeline / Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / Frontend Lint (pull_request) Has been cancelled
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / PR Build API Image (pull_request) Has been cancelled
CI/CD Pipeline / PR Build Web Image (pull_request) Has been cancelled
CI/CD Pipeline / PR Build Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Staging API Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Has been cancelled
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been cancelled
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been cancelled
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / Build Production API Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been cancelled
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been cancelled
CI/CD Pipeline / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / CI Gate (pull_request) Has been cancelled
AI Code Review / AI Code Review (pull_request) Has been cancelled
PR Automation / Auto Approve on CI Green (pull_request) Has been cancelled
PR Automation / Auto Merge on CI Green + Approved (pull_request) Has been cancelled
Preview Deploy / Deploy Preview Environment (pull_request) Has been cancelled
CI/CD Pipeline / Check push changed paths (pull_request) Failing after 362h10m25s
2026-09-01 05:13:39 +00:00
xiaoxia a3f615a2d1 fix(ui): 标题拖拽pointerEvents修复 + T字放大28px + 成片thumb白边修复 (#1601)
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (push) Successful in 8s
CI/CD Pipeline / Check push changed paths (push) Successful in 10s
CI/CD Pipeline / Validate - Style (push) Successful in 4m0s
CI/CD Pipeline / Frontend Unit Tests (push) Failing after 2m52s
CI/CD Pipeline / Validate - Python (mypy + alembic) (push) Successful in 4m44s
CI/CD Pipeline / Build Staging Web Image (push) Failing after 3m21s
CI/CD Pipeline / Integration Tests (push) Successful in 4m53s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Failing after 2m1s
CI/CD Pipeline / Validate - Security (push) Successful in 9m22s
CI/CD Pipeline / Unit Tests (push) Successful in 13m20s
CI/CD Pipeline / Production Browser E2E (push) Failing after 362h7m39s
CI/CD Pipeline / Canary Release to Production (push) Failing after 362h10m33s
CI/CD Pipeline / Deploy Production (push) Failing after 362h10m35s
CI/CD Pipeline / CI Gate (push) Failing after 362h12m23s
CI/CD Pipeline / Build Production Worker Image (push) Failing after 362h12m25s
CI/CD Pipeline / Build Production API Image (push) Failing after 362h12m29s
CI/CD Pipeline / ACR Image Cleanup (push) Failing after 362h21m13s
CI/CD Pipeline / Staging API Integration Tests (push) Failing after 362h21m13s
CI/CD Pipeline / Retag skipped Staging API Image (push) Failing after 362h23m14s
CI/CD Pipeline / Build Staging Worker Image (push) Failing after 362h26m33s
CI/CD Pipeline / Check if frontend-only change (push) Failing after 362h28m16s
CI/CD Pipeline / Staging E2E Tests (push) Failing after 362h21m13s
CI/CD Pipeline / Retag skipped Staging Worker Image (push) Failing after 362h23m14s
CI/CD Pipeline / Build Staging API Image (push) Failing after 362h26m39s
CI/CD Pipeline / Frontend Lint (push) Failing after 362h26m59s
CI/CD Pipeline / PR Build Worker Image (push) Failing after 362h28m8s
CI/CD Pipeline / PR Build Web Image (push) Failing after 362h28m8s
CI/CD Pipeline / Build Production Web Image (push) Failing after 362h46m44s
CI/CD Pipeline / Retag skipped Staging Web Image (push) Failing after 362h57m31s
CI/CD Pipeline / PR Build API Image (push) Failing after 363h2m25s
2026-09-01 12:56:55 +08:00
张宏杰 71dddec3af feat: Canvas + WebCodecs 预览播放器核心实现 (#1436)
CI/CD Pipeline / Build Staging Worker Image (push) Successful in 53s
CI/CD Pipeline / Validate - Migration (alembic) (push) Successful in 2m27s
CI/CD Pipeline / Validate - Type Check (mypy) (push) Successful in 2m40s
CI/CD Pipeline / Build Staging API Image (push) Successful in 3m7s
CI/CD Pipeline / Validate - Code Quality (push) Has been cancelled
CI/CD Pipeline / Unit Tests (push) Has been cancelled
CI/CD Pipeline / Integration Tests (push) Has been cancelled
CI/CD Pipeline / Frontend Unit Tests (push) Has been cancelled
CI/CD Pipeline / Build Staging Web Image (push) Has been cancelled
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Has been cancelled
CI/CD Pipeline / Staging E2E Tests (push) Has been cancelled
CI/CD Pipeline / Staging API Integration Tests (push) Has been cancelled
CI/CD Pipeline / Build Production API Image (push) Has been cancelled
CI/CD Pipeline / Build Production Web Image (push) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (push) Has been cancelled
CI/CD Pipeline / Deploy Production (push) Has been cancelled
CI/CD Pipeline / Production Browser E2E (push) Has been cancelled
CI/CD Pipeline / ACR Image Cleanup (push) Has been cancelled
CI/CD Pipeline / Canary Release to Production (push) Has been cancelled
CI/CD Pipeline / CI Gate (push) Has been cancelled
CI/CD Pipeline / PR Build Worker Image (push) Failing after 675h28m31s
CI/CD Pipeline / PR Build Web Image (push) Failing after 675h28m33s
CI/CD Pipeline / PR Build API Image (push) Failing after 675h28m35s
CI/CD Pipeline / Frontend Lint (push) Failing after 675h28m35s
CI/CD Pipeline / Check if frontend-only change (push) Failing after 675h28m38s
- 新建 useCanvasPlayer.ts: mp4box解封装 + VideoDecoder解码 + FrameQueue环形缓冲区 + Canvas渲染
- 重写 FrontendPreviewPlayer.tsx: Canvas路径(主) + video元素fallback路径(兼容)
- 标题Canvas内合成(drawFillText),不再使用CSS overlay
- isWebCodecsSupported()运行时检测自动选择路径
- 安装mp4box依赖用于MP4解封装
2026-08-19 11:57:45 +08:00
xiaoxia 36d590e55a fix(ci): 修复npm registry配置 + package-lock.json同步 + pro套餐测试 (#1264)
CI/CD Pipeline / Validate - Migration (alembic) (push) Successful in 47s
CI/CD Pipeline / Validate - Type Check (mypy) (push) Successful in 1m6s
CI/CD Pipeline / Frontend Unit Tests (push) Successful in 3m11s
CI/CD Pipeline / Build Staging Worker Image (push) Successful in 3m59s
CI/CD Pipeline / Validate - Code Quality (push) Successful in 5m6s
CI/CD Pipeline / Integration Tests (push) Successful in 1m55s
CI/CD Pipeline / Build Staging API Image (push) Successful in 8m23s
CI/CD Pipeline / Unit Tests (push) Successful in 9m16s
CI/CD Pipeline / Build Staging Web Image (push) Successful in 11m3s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Successful in 52s
CI/CD Pipeline / Staging API Integration Tests (push) Failing after 16s
CI/CD Pipeline / ACR Image Cleanup (push) Successful in 40s
CI/CD Pipeline / Staging E2E Tests (push) Failing after 3m24s
CI/CD Pipeline / Canary Release to Production (push) Failing after 957h0m32s
CI/CD Pipeline / CI Gate (push) Failing after 957h3m44s
CI/CD Pipeline / Build Production Web Image (push) Failing after 957h3m44s
CI/CD Pipeline / Production Browser E2E (push) Failing after 957h3m43s
CI/CD Pipeline / Build Production API Image (push) Failing after 957h3m45s
CI/CD Pipeline / Build Production Worker Image (push) Failing after 957h3m44s
CI/CD Pipeline / PR Build Worker Image (push) Failing after 957h13m0s
CI/CD Pipeline / PR Build Web Image (push) Failing after 957h13m0s
CI/CD Pipeline / PR Build API Image (push) Failing after 957h13m0s
CI/CD Pipeline / Frontend Lint (push) Failing after 957h13m2s
CI/CD Pipeline / Check if frontend-only change (push) Failing after 957h13m4s
CI/CD Pipeline / Deploy Production (push) Failing after 957h37m3s
Co-authored-by: xiaoxia <dev@xiaoxiajianji.com>
Co-committed-by: xiaoxia <dev@xiaoxiajianji.com>
2026-08-07 18:11:01 +08:00
xiaoxia 44243a6bb7 feat: 优化上传音频弹窗视觉 (#1257)
CI/CD Pipeline / Validate - Migration (alembic) (push) Successful in 44s
CI/CD Pipeline / Frontend Unit Tests (push) Failing after 58s
CI/CD Pipeline / Validate - Type Check (mypy) (push) Successful in 1m5s
CI/CD Pipeline / Build Staging Web Image (push) Failing after 2m44s
CI/CD Pipeline / Validate - Code Quality (push) Successful in 5m1s
CI/CD Pipeline / Build Staging Worker Image (push) Successful in 5m4s
CI/CD Pipeline / Integration Tests (push) Successful in 2m17s
CI/CD Pipeline / Unit Tests (push) Failing after 9m10s
CI/CD Pipeline / Build Staging API Image (push) Successful in 12m43s
CI/CD Pipeline / Canary Release to Production (push) Failing after 959h7m48s
CI/CD Pipeline / Staging API Integration Tests (push) Failing after 959h7m49s
CI/CD Pipeline / Staging E2E Tests (push) Failing after 959h7m49s
CI/CD Pipeline / Production Browser E2E (push) Failing after 959h11m20s
CI/CD Pipeline / Deploy Production (push) Failing after 959h11m21s
CI/CD Pipeline / Build Production Worker Image (push) Failing after 959h11m22s
CI/CD Pipeline / Build Production Web Image (push) Failing after 959h11m22s
CI/CD Pipeline / PR Build API Image (push) Failing after 959h20m34s
CI/CD Pipeline / Build Production API Image (push) Failing after 959h11m22s
CI/CD Pipeline / Frontend Lint (push) Failing after 959h20m34s
CI/CD Pipeline / PR Build Worker Image (push) Failing after 959h20m33s
CI/CD Pipeline / Check if frontend-only change (push) Failing after 959h20m35s
CI/CD Pipeline / ACR Image Cleanup (push) Failing after 959h41m9s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Failing after 959h41m10s
CI/CD Pipeline / CI Gate (push) Failing after 959h44m42s
CI/CD Pipeline / PR Build Web Image (push) Failing after 959h53m54s
2026-08-07 16:01:12 +08:00
xiaoxia 8df8255521 ci: P3-6 前端单测接入CI + 覆盖率门禁 (#542)
CI/CD Pipeline / Frontend Unit Tests (push) Failing after 2m17s
CI Build & Deploy Pipeline / Staging E2E Tests (push) Failing after 4m29s
CI Build & Deploy Pipeline / Production Browser E2E (push) Failing after 1433h49m21s
CI Build & Deploy Pipeline / Build Production Worker Image (push) Failing after 1433h49m25s
CI Build & Deploy Pipeline / Build Production Web Image (push) Failing after 1433h49m25s
CI Build & Deploy Pipeline / Build Production API Image (push) Failing after 1433h49m25s
CI/CD Pipeline / Check if frontend-only change (push) Failing after 1433h51m58s
CI Build & Deploy Pipeline / Build Staging API Image (push) Has been skipped
CI Build & Deploy Pipeline / Build Staging Web Image (push) Has been skipped
CI Build & Deploy Pipeline / Build Staging Worker Image (push) Has been skipped
CI Build & Deploy Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Has been skipped
CI Build & Deploy Pipeline / Staging API Integration Tests (push) Has been skipped
CI Build & Deploy Pipeline / Deploy Production (push) Failing after 1434h21m27s
CI/CD Pipeline / Validate Code Quality And Tests (push) Has been skipped
CI/CD Pipeline / Unit Tests (push) Has been skipped
CI/CD Pipeline / Integration Tests (push) Has been skipped
CI/CD Pipeline / Frontend Lint (push) Has been skipped
Co-authored-by: xiaoxia <dev@xiaoxiajianji.com>
Co-committed-by: xiaoxia <dev@xiaoxiajianji.com>
2026-07-18 21:37:35 +08:00
xiaoxia 0fcb77b991 ci: Prettier纳入两层防御体系 (#520)
CI Build & Deploy Pipeline / Staging E2E Tests (push) Failing after 2m50s
CI Build & Deploy Pipeline / Production Browser E2E (push) Failing after 1437h19m24s
CI Build & Deploy Pipeline / Build Production Web Image (push) Failing after 1437h19m26s
CI Build & Deploy Pipeline / Deploy Production (push) Failing after 1437h19m25s
CI Build & Deploy Pipeline / Build Production API Image (push) Failing after 1437h19m26s
CI/CD Pipeline / Check if frontend-only change (push) Failing after 1437h21m16s
CI Build & Deploy Pipeline / Build Staging API Image (push) Has been skipped
CI Build & Deploy Pipeline / Build Staging Web Image (push) Has been skipped
CI Build & Deploy Pipeline / Build Staging Worker Image (push) Has been skipped
CI Build & Deploy Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Has been skipped
CI Build & Deploy Pipeline / Staging API Integration Tests (push) Has been skipped
CI Build & Deploy Pipeline / Build Production Worker Image (push) Failing after 1437h51m29s
CI/CD Pipeline / Validate Code Quality And Tests (push) Has been skipped
CI/CD Pipeline / Unit Tests (push) Has been skipped
CI/CD Pipeline / Integration Tests (push) Has been skipped
CI/CD Pipeline / Frontend Lint (push) Has been skipped
Co-authored-by: xiaoxia <dev@xiaoxiajianji.com>
Co-committed-by: xiaoxia <dev@xiaoxiajianji.com>
2026-07-18 18:08:19 +08:00
xiaoxia d9e00992a6 fix(ci): 修复 Frontend Lint 拉错 eslint 版本的问题 (#347)
CI/CD Pipeline / Validate Code Quality And Tests (push) Has been cancelled
CI/CD Pipeline / Unit Tests (push) Has been cancelled
CI/CD Pipeline / Integration Tests (push) Has been cancelled
CI/CD Pipeline / Frontend Lint (push) Has been cancelled
CI/CD Pipeline / Build Staging API Image (push) Has been cancelled
CI/CD Pipeline / Build Staging Worker Image (push) Has been cancelled
CI/CD Pipeline / Build Staging Web Image (push) Has been cancelled
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Has been cancelled
CI/CD Pipeline / Staging E2E Tests (push) Has been cancelled
CI/CD Pipeline / Staging API Integration Tests (push) Has been cancelled
CI/CD Pipeline / Build Production API Image (push) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (push) Has been cancelled
CI/CD Pipeline / Build Production Web Image (push) Has been cancelled
CI/CD Pipeline / Deploy Production (push) Has been cancelled
CI/CD Pipeline / Production Browser E2E (push) Has been cancelled
2026-07-15 10:52:26 +08:00
灵应 7dd407fb3a fix(P0-2): 画中画模式切换全链路修复 - 初始addType跟随模式 + 切换模式时转换已有片段类型
CI/CD Pipeline / Frontend Lint (push) Failing after 21h18m33s
CI/CD Pipeline / Validate Code Quality And Tests (push) Failing after 21h18m33s
CI/CD Pipeline / Production Browser E2E (push) Failing after 1679h53m8s
CI/CD Pipeline / Staging E2E Tests (push) Failing after 1679h53m10s
CI/CD Pipeline / Build Production Runtime Images (push) Failing after 1679h53m12s
CI/CD Pipeline / Build & Push Staging (Watchtower auto-deploy) (push) Failing after 1679h53m12s
CI/CD Pipeline / Deploy Production (push) Failing after 1680h24m38s
2026-07-08 15:35:55 +08:00
Xiaoxia AI 8c7acc019c ci(e2e): pin playwright runtime version 2026-06-23 17:09:17 +08:00
Xiaoxia AI 80a57ff0fe Phase 6: Complete admin pages (Analytics, Monitor, Logs) and Phase 7: Asset management foundation
Phase 6 completion:
- Add Analytics page with charts (user growth, revenue, retention)
- Add SystemMonitor page (CPU, memory, services health)
- Add LogViewer page (log search, filtering, details)
- Update sidebar navigation with Admin submenu
- Add recharts to package.json for data visualization

Phase 7 Day 1-2:
- Create Asset and AssetLibrary domain entities
- Define AssetRepository and AssetLibraryRepository interfaces
- Implement InMemory repositories for testing
- Implement PostgreSQL repository adapter
- Update SQLAlchemy models for assets and asset_libraries
- Add database migration script 004_asset_management.sql

Architecture: Strict Clean Architecture compliance
Testing: InMemory adapters ready for unit tests
Database: Migration script with indexes and foreign keys
2026-06-17 17:41:48 +08:00