# 正湘源内部工作台 · 最终初始评估方案

方案/发布补丁版本 **1.2.1**｜2026-10-02（北京时间）；八套两模式静态参考的审美与交互基线保持 **1.2.0**。五种原风格深化并新增工坊风、包豪斯风、轻盈风，平台开场允许按风格使用展示字体，实际业务工作区仍统一字体与等高数字。本补丁新增[网站缓存与发布流程](docs/11-网站缓存与发布.md)。独立第4基础环境会话和前三功能分工继续有效，技术、业务与实施职责不重排。

**主要交付是完整方案，次要交付是八个可点击的静态参考网页。** 原初始提示词和已有项目作为研究依据；本会话最新指令优先。源码研究、架构论证、实施流程和静态参考已形成可接续材料；生产功能仍按下面流程另行开发。

## 1. 已确定的技术与产品方向

采用 **React/TypeScript响应式前端 + Android/iOS PWA + 单个Fastify/Node LTS模块化单体API + 服务器本地SQLite**。PC主要用同源网页，可安装PWA；关网页后定时留存备份由独立Windows .NET助手承担。前端静态产物由Nginx提供，数据库只通过API访问。

VPS硬件固定。2026-10-02此前只读采样为1vCPU、937MiB总内存、约520—525MiB MemAvailable、约23GiB可用磁盘；该采样不代表应用运行后的性能。用户现在已选定Fastify + SQLite，资源不足时先处理查询、索引、事务长度及后台任务安排；不在实施步骤中自动换技术栈。第4会话已建立并固定Node/Fastify/驱动/SQLite版本，详[环境状态](docs/modules/platform-environment/status.md)。该基础环境不是生产业务API。详见[架构](docs/04-架构与技术方案.md)与[固定硬件评估](research/04-VPS固定硬件数据库选型.md)。

十来人低频并发的规模不需要默认引入微服务、Redis、消息队列、Kubernetes。保持模块职责、公开接口和数据归属，避免单体变成一个巨大文件。服务端只有一个业务写进程、一个正式SQLite库；WAL单写多读，使用短事务、参数化SQL、有限分页。备份与文件压缩不放在业务写事务内。

### 工作台与子APP分开

| 层级 | 内容 | 边界 |
| --- | --- | --- |
| 工作台/平台 | 应用入口、个人待办、工作通知、最近使用、账号、审计与备份中心 | 总览不出现时控表内的台次、用时、异常菜品、明细表 |
| 出品时控日报表APP `reports` | 应用首页、午晚市/桌台录入、查询、历史修订、统计、客户端导出 | 独立应用内部导航与业务数据 |
| 存酒表APP `wine` | 独立首页、寄存/取用记录、查询与导出 | 自己的领域和字段；详细业务在该APP开发时确认 |
| 盘点表APP `inventory` | 独立首页、盘点录入、差异/历史查询与导出 | 自己的领域和字段；不复用时控万能表 |

三个APP共享平台身份、能力上下文、公共设计令牌和基础设施，业务仓储彼此独立。静态参考中可进入三个完整演示空间；存酒和盘点的示例字段是布局材料，并非生产业务规则已冻结。

## 2. 直接给三个会话的开发安排

**并行单位是同一个子APP内的不同功能。** 默认三会话同时开发时控日报APP，三人都从[并行开发入口](docs/并行开发入口.md)开始；入口已有可直接复制的三条指令。用户指定别的子APP时沿相同职责组织，先确认该APP业务，不把三个会话分别分给三个APP。

| 会话 | 明确职责 | 直接执行流程 | 独立状态文件 |
| --- | --- | --- | --- |
| 一 | 录入/编辑/草稿/提交；兼共享领域规则、字段、基础表、根配置、注册与集成唯一owner | [recording/tasks](docs/modules/reports/recording/tasks.md) | [recording/status](docs/modules/reports/recording/status.md) |
| 二 | 查询、历史、统计、只读API与ReportReader | [query/tasks](docs/modules/reports/query/tasks.md) | [query/status](docs/modules/reports/query/status.md) |
| 三 | 客户端XLSX/PDF/图片导出、内容模型与文件保存/分享适配 | [export/tasks](docs/modules/reports/export/tasks.md) | [export/status](docs/modules/reports/export/status.md) |

每份流程已经规定“阅读→声明目录owner→F具体步骤和产物→简短交接→S→U→完成说明”，无需另行拆任务。会话一先发布最小C0字段/规则/reader签名和fixture；二三立即以同形状mock开发，不等待一完成全部功能。二提供真实reader后，三替换自己的mock。详见[07 C0清单](docs/07-开发文档与实施计划.md#075-最小c0冻结清单二三不全程等一)。

每人只修改自己的功能目录和status。共享领域、基础表、shared契约、root依赖/lockfile、路由入口、迁移源码与本地集成执行由一处理；二拥有query内部和reader；三拥有formatter/保存适配。迁移文件按APP+feature命名，本地集成库只由一执行。最终仍接到同一个APP、Fastify和SQLite，并非三个独立服务。新会话不用读取其他会话历史才能开始。

必要沟通只有几类：C0发布、reader可用、共享文件修改请求、集成版本通知。用各自status留痕，用户可手动贴一句交接；获得明确授权后也可工具发送。共享冲突只交给该文件owner处理，其他可做内容继续。无需专职协调会话、每步审批或全局等待。

### 独立第4会话：基础运行环境布置

第4会话从[环境入口](docs/modules/platform-environment/README.md)开始，按[环境执行流程](docs/modules/platform-environment/tasks.md)实际完成基础布置。它独占infra/**、对应VPS账户/目录/服务/网站接入和自己的[环境状态](docs/modules/platform-environment/status.md)，不修改前三会话的业务代码、业务DDL或应用根依赖。

范围为：受支持Node LTS与SQLite驱动兼容验证；应用专用账户和非公开数据库/文件/备份目录；可打开的空SQLite及连接参数；独立Fastify环境探针和单实例systemd服务；保留现有网站与证书的同源HTTPS健康检查；环境变量模板、统一迁移执行工具和单份一致快照。交接实际版本、路径、端口、服务、健康结果、数据库状态及待接入项。

**空库可用、业务Schema已迁移、业务API已运行是三种不同状态。** 第4会话不编造业务表或业务功能；业务Schema与迁移manifest仍由一开发，第4在收到明确版本/顺序/校验和后独占正式环境的迁移执行。没有业务产物时，空库与环境探针即可完成基础阶段，并明确业务Schema/API尚未接入；后续正式业务发布仍是独立REL任务。前三会话用本地库和mock继续，不等环境，也不承担它的布置工作。

2026-10-02 21:50复核时：Nginx/AcePanel运行、现站点HTTPS 200且证书验证通过；检查的PATH及指定运行时目录无Node/npm，指定项目目录未发现SQLite文件。系统libsqlite3不是已设置的项目数据库。详见[只读证据](evidence/vps-runtime-check-2026-10-02.txt)。以上为21:50历史记录。第4会话随后独立完成基础环境1.0.0，22:26:06的交接记录确认兼容运行时、私有空库schema=0、环境探针、systemd及单份一致快照已就绪，业务Schema/API/真实身份尚未接入。当前状态以[环境status](docs/modules/platform-environment/status.md)为准。

### 每个功能独立推进F→S→U

- **F 功能实现**：先跑通用例、数据和可用界面。领域校验、短事务、revision、幂等及可信业务事件属于功能正确性，随F完成。本地显式mock身份允许先实现，不能上线自动降级为mock。
- **S 安全加固**：真实激活/会话、权限范围、CSRF/CSP/限流、日志/秘密边界独立处理。平台公共底座由一兼任，二三补各自查询/导出边界。未接真实底座记“待集成”，不阻止其他功能继续F。
- **U UI优化**：选择本轮审美方向后独立完成生产组件、状态、响应式与输出文件美化；共享令牌由一管理。

不要求A功能的F等待B功能的S/U。风险管理是按触发条件查阅的独立简表；备份是独立PLAT-B任务，不绑在普通导出和每个功能步骤里。实际公开上线前集中完成必要安全、可恢复备份和固定硬件运行检查。测试只覆盖本次核心行为与真实改动，不重复整套审计、真机全矩阵、网络采样及回滚仪式。**本轮静态审美参考仍完整美化交付，不因未来生产F/S/U顺序而简化。**

## 3. 继承的时控业务决定

| 事项 | 原项目事实/冲突 | 新方案决定 |
| --- | --- | --- |
| 日报粒度 | 微信全店一日current；Windows同日多版本；Android同日多UUID | `storeId,module,businessDate`唯一有效日报；午晚市、23固定台/翻台为子行，历史revision保留 |
| 营业日/时区 | 09:00边界，旧端部分依赖设备时区 | 服务端统一Asia/Shanghai；00:00—08:59计该营业日的次日，设备时间仅提示 |
| 时间/异常 | 起菜人工，终点/用时联动，≥50/≥15，阈值0关闭 | 纯规则共享、服务端最终重算；鱼汤/菜品在有效起齐区间内，合法0分钟保留 |
| 非法输入 | Windows可应用/导出非法，其他端限制正式应用 | 原文可留本机草稿，正式写拒绝；旧错误数据独立整理 |
| 并发修订 | 旧端粒度/租约不同 | expectedRevision条件更新；幂等键处理结果丢失重试，冲突保留草稿，不自动覆盖 |
| 导出/恢复 | 旧端能力和权限不同 | 普通业务文件客户端生成；系统备份/恢复另设能力和任务 |
| 旧版本状态 | Android 0.3.15-dev与0.3.14记录、微信0.4.6/0.4.7实施中 | 分开记录源码实现与实际交付，不把旧项目的开发版本当正式验收 |

完整菜单、字段、算法、规范和旧项目证据见[01 对照](docs/01-现有项目对照.md)；需求和六项既有维度/新增维度评估见[08 唯一基线](docs/08-需求基线与验收.md)。迁移独立安排，不能静默挑一个旧端覆盖其他端历史。

## 4. 身份、同步、审计与备份

首次授权后免反复输密码可实现，但不是永久一次激活。管理员给已有员工的新客户端短期一次性码，登记后使用高熵、HttpOnly/HTTPS、可撤销服务端会话；三端分别授权，employeeId统一归属历史，丢设备只撤销相应客户端。公开UUID/IP/指纹、微信OpenID不能独立充当可信认证。[OWASP会话指导](https://cheatsheetseries.owasp.org/cheatsheets/Session_Management_Cheat_Sheet.html)。正式身份和基础防护在S落实，方案详见[05](docs/05-身份安全审计备份.md)。

草稿本机保存，恢复联网先读取正式revision，再由员工确认提交。正式日报、行、revision、幂等结果、业务事件在同一SQLite短事务成立；query消费统一规则结果，export读取选定revision，避免混合新旧版本。统计、分页、同步cursor和墓碑契约见04/07与[API初稿](contracts/openapi.yaml)。当前机器可读契约是时控初稿，后续由共享owner拆成各功能职责，不代表存酒/盘点已有完整端点。

SQLite没有数据库表级角色隔离：审计append代码和可选触发器能防误改，不能抵抗掌握库文件写权限的进程。基础系统账户、非公开目录及单份快照能力由第4会话布置；业务身份授权由S实现，完整备份调度/加密/PC助手由独立B任务实现。备份采用SQLite Online Backup API的一致快照，校验后加密、manifest标completed；运行中只复制主.db不可作为完整备份。[SQLite在线备份](https://www.sqlite.org/backup.html)。

PC助手按独立受限授权下载、校验、原子落盘和轮换，关机/离线恢复后补跑。云端保留数量随实际归档大小和磁盘预算调整，长期历史放PC/离线副本。RPO≤24h/RTO≤4h是后续演练目标，非本轮已证明指标。备份设计及恢复检查只在PLAT-B及实际发布前集中做，不加到每个普通功能步骤。

## 5. 八种审美方向

| 方向 | 设计意图 | 本地参考 |
| --- | --- | --- |
| A 商务风 | 保留A垂直品牌侧栏、表格秩序与重点卡，统一字体/等高数字 | [商务风](/ui-preview/crimson.html) |
| B 手帐风 | 保留B横向页眉、日期纸页与轻柔台账细线 | [手帐风](/ui-preview/ledger.html) |
| C 杂志风 | 指定参考会话的东方极简布局、双行问候、开放应用目录、编辑式留白 | [杂志风](/ui-preview/editorial.html) |
| D 静奢风 | 新方向：克制材质、精选卡片、宽松比例与细节品质 | [静奢风](/ui-preview/luxury.html) |
| E 瑞士风 | 新方向：严格网格、平直边界、强信息层级、列表与详情并置 | [瑞士风](/ui-preview/swiss.html) |

旧C/D/E已从活动入口与页面移除。方向由布局/信息组织/比例/边界表达，浅深色是每种方向的两种模式，不另算一种风格。C参考[识别当前设计风格](codex://threads/01a0fc1b-a468-7500-af49-89c44135b753)中的图片，用户最新截图说明优先：平台问候、日期与概览数字可选适合工作的本地展示字体；目录正文及子APP实际工作区同一语言仍只用一套字体，不混宋/黑/等宽。数字统一lining-nums/tabular-nums，同角色KPI同字号，无逐位缩放或老式高低数字。完整规范和端内布局见[06](docs/06-UI与交互方案.md)。

八页均提供平台入口→完整子APP→内功能导航，浅深色切换、搜索、筛选、详情/修改、演示新增及本地CSV下载。所有业务变化只在当前页面，刷新恢复。页面不连接真实业务API或数据库；静态展示发布结果见10，静态页面是审美材料，不是功能系统交付。

## 6. 完整研究与文档入口

初始任务要求的 **40个不同权威页面/标准文档**已实际联网阅读，含来源编号/机构/链接/访问日期/结论/限制，见[权威研究](research/02-权威来源研究.md)、[sources.json](research/sources.json)。**10个开源项目**实际下载并分析，固定commit SHA、许可证、活跃情况、具体借鉴源码/位置和成本，见[源码分析](research/03-开源源码分析.md)、[repositories.json](research/repositories.json)、[references索引](references/README.md)。项目为Tabler、React-admin、TanStack Table、React Hook Form、Dexie、Vite PWA、Fastify、Drizzle ORM、PocketBase、Restic；没有执行上游安装脚本。这些材料保留原始版本作为历史研究，不把新方案版本强写成重新研究的日期。

| 主材料 | 职责 |
| --- | --- |
| [00 阅读入口](docs/00-阅读入口与交付清单.md) | 全部成果和事实标签 |
| [04 架构](docs/04-架构与技术方案.md) | 三端、产品/功能层级、数据与技术边界 |
| [05 安全/备份](docs/05-身份安全审计备份.md) | 独立S/B设计和实际发布必要项 |
| [06 UI](docs/06-UI与交互方案.md) | 八方向、两模式、字体、组件与交互 |
| [07 实施计划](docs/07-开发文档与实施计划.md) | 功能并行、共享契约、F/S/U与沟通机制 |
| [08 需求基线](docs/08-需求基线与验收.md) | 原始任务覆盖、功能与验收、六维评估 |
| [09 简化决策风险](docs/09-决策与风险台账.md) | 必要决策、触发式风险索引 |
| [11 网站缓存与发布](docs/11-网站缓存与发布.md) | 稳定入口核验、内容hash长缓存、统一静态发布入口与最小检查 |
| [10 跨会话状态](docs/10-跨会话状态.md) | 实际完成、未实施与接续事实 |
| [并行开发入口](docs/并行开发入口.md) | 直接给三会话的指令、职责、执行流程 |
| [第4会话环境入口](docs/modules/platform-environment/README.md) | 独立基础环境布置、实际状态与交接；不增加前三任务 |

本地[方案阅读版](/ui-preview/guide.html)、[八风格入口](/ui-preview/index.html)通过[启动脚本](启动静态评估.ps1)打开。本地服务仅绑定127.0.0.1；按用户最新授权，本轮已将静态评估站发布到[域名首页](https://ctworkbench.top/)，实际发布证据见[10](docs/10-跨会话状态.md)。1.2.1将静态更新统一到[11流程](docs/11-网站缓存与发布.md)与scripts/deploy_static_review.ps1：稳定HTML/文档核验，CSS/JS/字体/预览图按完整SHA地址长期缓存，资源先发、HTML与首页最后发。该补丁实际核验另记10，不以文档代替运行证明。当前交付仍为方案和审美参考，页面不接业务API或数据库；生产F/S/U、完整备份作业与正式业务发布未执行。真机、长期资源、恢复等只在相关阶段做必要核实。
