From 4472d406d90f2d6f0f65800eea859305e45e66eb Mon Sep 17 00:00:00 2001 From: YoungestSongMo <2130460579@qq.com> Date: Mon, 15 Jun 2026 11:22:59 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E5=90=8C=E6=AD=A5=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E7=BB=93=E6=9E=84=E9=87=8D=E7=BB=84=E8=87=B3=E6=96=87=E6=A1=A3?= =?UTF-8?q?=EF=BC=88CHANGELOG/PROJECT/TODO=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - CHANGELOG: 新增 0.0.21 条目 - PROJECT: 更新目录结构、状态管理架构描述 - TODO: 移除已修复的 ESLint react-refresh 警告(HomeContext 拆分后自动消除) --- CHANGELOG.md | 31 +++++++++++++++++++++++++++++++ PROJECT.md | 30 +++++++++++++++--------------- TODO.md | 6 +----- 3 files changed, 47 insertions(+), 20 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c54cec2..7b3249b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,37 @@ # 更新日志 > 每次发版前修改此文件,`npm run build:win` 打包后会自动读取生成 update-info.json。 +--- +## 0.0.21(2026-06-15) + +**文件结构重组:components/ pages/ 按职责分层** + +### components/ → 三层拆分 + +- `providers/`(状态管理):AppProvider / ThemeProvider / SettingsProvider +- `shell/`(应用外壳):Layout / PageDispatcher / navbar/ +- `ui/`(通用原子):FloatingPanel / LegalTextModal + +### pages/ → 重命名消除歧义 + +- `headers/` → `panels/`(NavBar 面板页,非 HTTP headers) +- `login/` → `auth/`(含登录/注册/忘记密码/修改密码) +- `settings/blocks/` → `sections/` +- `home/components/useUI/` → `home/controls/` + +### home/ → 四层子结构 + +- `panels/` — 布局壳(LeftPanel / CenterPanel / RightPanel) +- `features/` — 功能面板(Banner / ModelInput / ModelSelector / Output / TaskHistory) +- `controls/` — 表单控件库(12 个控件 + Widget 注册表) +- `hooks/` — 纯 Hook(useModelUI) + +### 其他 + +- HomeContext 从 HomeContent.tsx 拆分独立文件(解决 react-refresh ESLint 警告) +- uploadValidation 内联到 ImageInput(controls/ 不再混工具函数) +- 删除空占位 Test3.tsx + --- ## 0.0.20(2026-06-12) diff --git a/PROJECT.md b/PROJECT.md index adfae33..9f7495c 100644 --- a/PROJECT.md +++ b/PROJECT.md @@ -68,18 +68,16 @@ ├── src/ # 渲染进程(React 19 SPA) │ ├── main.tsx # React 挂载点 + 全局错误捕获 │ ├── App.tsx # 根组件(路由 + 登录弹窗) -│ ├── components/ # 通用 UI 组件 + Provider -│ │ ├── AppProvider.tsx # 全局状态(platform / edition / login) -│ │ ├── ThemeProvider.tsx # 主题状态(light / dark) -│ │ ├── SettingsProvider.tsx # 设置状态(存储路径等) -│ │ ├── Layout.tsx # 页面壳(NavBar + Outlet) -│ │ └── navbar/ # 导航栏 + 公告抽屉 -│ ├── contexts/ # Context 定义(app / settings / theme) -│ ├── hooks/ # 自定义 Hooks(useUpdater / useTheme) -│ ├── pages/ # 页面组件 -│ │ ├── home/ # 首页仪表盘 -│ │ ├── login/ # 登录 / 注册页 -│ │ └── settings/ # 设置面板(主题 / 存储 / 账号安全 / 系统信息 / 更新) +│ ├── components/ # 可复用组件(按职责分三层) +│ │ ├── providers/ # 状态管理(App/Theme/SettingsProvider) +│ │ ├── shell/ # 应用外壳(Layout/PageDispatcher/navbar/) +│ │ └── ui/ # 通用 UI 原子(FloatingPanel/LegalTextModal) +│ ├── hooks/ # 自定义 Hooks(业务逻辑封装) +│ ├── pages/ # 业务页面(按功能模块组织) +│ │ ├── home/ # 首页(panels/ features/ controls/ hooks/) +│ │ ├── auth/ # 认证模块(登录/注册/忘记密码/修改密码) +│ │ ├── settings/ # 设置面板(sections/) +│ │ └── panels/ # NavBar 触发的面板页(Account/Billing/WechatWork) │ ├── router/index.tsx # HashRouter 路由配置 │ ├── services/ # HTTP 请求封装 │ │ ├── request.ts # Axios 封装 + 拦截器 + Token 刷新 @@ -151,12 +149,14 @@ ## 状态管理 - 使用 React Context + Provider 模式管理全局状态,按领域拆分:AppContext(平台/登录)、ThemeContext(主题)、 - SettingsContext(设置项)。避免引入 Redux 等重量级方案。 + SettingsContext(设置项)。各 Context 定义与 Provider 合并在 `components/providers/` 目录下,避免引入 Redux 等重量级方案。 -- Provider 组件在 main.tsx 中按层级嵌套挂载: +- Provider 在 main.tsx 中按层级嵌套挂载: AppProvider → ThemeProvider → SettingsProvider → AntdApp → App -- 各模块通过自定义 Hook 消费(useAppContext / useTheme / useSettings),Hook 内部做 null 检查。 +- 各模块通过自定义 Hook 消费(useAppContext / useTheme / useSettings),Hook 内部做 null 检查并抛出明确错误信息。 + +- 页面级状态(如首页的 selectedModel / selectedTask / 分页)放在 HomeContext 中,由 HomeContent 提供,遵循与全局 Provider 相同的 Context + Provider + Hook 模式。 ## 日志系统 diff --git a/TODO.md b/TODO.md index aeadd34..dbcced3 100644 --- a/TODO.md +++ b/TODO.md @@ -1,13 +1,9 @@ # TODO — 船长·HeiXiu 待办与优化清单 -> 最后更新:2026-06-12 +> 最后更新:2026-06-15 --- -[//]: # (警告:(48, 14) ESLint: Fast refresh only works when a file only exports components. Move your React context(s) to a separate file. (react-refresh/only-export-components)) - -[//]: # (警告:(52, 17) ESLint: Fast refresh only works when a file only exports components. Use a new file to share constants or functions between components. (react-refresh/only-export-components)) - ## 🟡 功能待完善(优先级中) ### 设置页面