13 KiB
13 KiB
MEMORY.md - 长效记忆
项目架构
项目名称: OPS 运营管理系统 技术栈: Vue 3 + TypeScript (前端) / Go + Gin + GORM (后端)
目录结构
ops2/
├── backend/my_work/ # Go 后端(端口 8080)
├── frontend/
│ ├── ops_vue_js/ # Vue 3 Web 前端
│ └── ops2_uniapp/ # uni-app 移动端(待开发)
└── DOC/
后端架构
入口: backend/my_work/main.go
- 配置读取:
data/config.yaml,无则复制defConfig/configTemp.yaml - 支持 SQLite/MySQL/PostgreSQL
- 按顺序初始化路由:User → Files → Schedule → Purchase → WorkOrder → Warehouse
核心模块 (backend/my_work/routers/)
| 文件 | 用途 |
|---|---|
apiUsers.go |
用户认证(登录/注册/Cookie) |
apiFiles.go |
文件上传/管理 |
apiSchedule.go |
日程排班 |
apiPurchase.go |
采购订单 |
apiWorkOrder.go |
工单管理 |
apiWarehouse.go |
仓库管理(容器+物品) |
apiStatic.go |
静态资源 |
用户认证模块 (apiUsers.go)
核心函数
AuthenticationAuthorityFromCookie(c string)- 验证 Cookie 并返回用户AuthenticationAuthority(ctx)- 通用认证函数,分离 Cookie 和 dataGetUserInfoFromUserID(userID uint)- 通过 ID 获取用户详情
用户组
- 自动创建
admins组和admin用户(默认密码:adminpassword) - 各功能模块独立创建管理员组:
purchase_admin、work_order_admin、schedule_admin、warehouse_admin
API 路由 (/api/users/*)
| 路由 | 用途 |
|---|---|
POST /login |
用户登录(返回 Cookie) |
POST /register |
用户注册 |
POST /getinfo |
获取当前用户信息 |
POST /changePassword |
修改密码 |
POST /changeEmail |
修改邮箱 |
POST /updateAvatar |
更新头像(FormData 上传) |
POST /updateInfo |
更新用户详情 |
GET /getuserinfo/:id |
获取指定用户信息 |
GET/POST /test |
测试接口 |
密码机制
- 密码加盐哈希(Salt + Hash)
- 支持
text/md5/md5salt三种哈希类型(配置指定)
文件管理模块 (apiFiles.go)
数据表
TabFileInfo_- 文件元数据(SHA256 哈希为唯一标识)
| 字段 | 说明 |
|---|---|
Sha256 |
文件哈希(主键/索引) |
Name |
原始文件名 |
Path |
存储路径 |
Mime |
MIME 类型 |
Type |
文件类型(image/video/pdf 等) |
Const |
引用计数(同文件多次上传只存一份) |
API 路由 (/api/files/*)
| 路由 | 用途 |
|---|---|
POST /upload/image |
上传图片(FormData,含 SHA256 去重) |
GET /:mode/:hash |
获取文件(mode=get 下载,mode=download 预览) |
存储结构
data/
├── static/avatar/ # 用户头像
└── upload/
├── image/ # 图片(以 SHA256 命名)
├── video/
├── music/
└── pdf/
日程排班模块 (apiSchedule.go)
数据表
| 表 | 用途 |
|---|---|
TabSchedule |
日程(软删除) |
TabScheduleLog |
操作日志 |
日程结构
| 字段 | 说明 |
|---|---|
Title |
日程标题 |
StartDate |
开始日期(YYYY-MM-DD) |
EndDate |
结束日期(YYYY-MM-DD) |
BgColor |
背景颜色(默认 #3788d9) |
Remark |
备注 |
API 路由 (/api/schedule/*)
| 路由 | 用途 |
|---|---|
POST /getevents |
获取日程列表(按日期范围) |
POST /addevent |
新增日程 |
POST /editevent`` |
编辑日程 |
POST /deleevent |
删除日程(软删除) |
查询逻辑
WHERE start_date <= :end AND end_date >= :start
静态资源模块 (apiStatic.go)
| 路由 | 用途 |
|---|---|
GET /static/avatar/:filename |
获取用户头像 |
数据库模型 (backend/my_work/models/sql.go)
TabUser_- 用户TabUserGroups_- 用户组TabUserInfo_- 用户详情TabCookie_- 登录 Cookie(有效期 604800 秒)APIRequestLog_- API 日志
仓库模块核心表 (apiWarehouse.go)
TabWarehouseContainer- 容器(树形,最多5层嵌套)TabWarehouseItem- 物品TabWarehouseItemCommit- 物品移动记录TabWarehouseLog- 操作日志TabWarehouseItemWorkOrderBind- 物品-工单关联
采购模块 (backend/my_work/routers/apiPurchase.go)
数据表
| 表 | 用途 |
|---|---|
TabPurchaseOrder |
采购订单(软删除) |
TabPurchaseCosts |
费用明细(单价/运费,支持多币种) |
TabPurchaseFileBind |
图片关联 |
TabPurchaseCommit |
状态变更记录 |
TabPurchaseLog |
操作日志 |
订单状态流程
pending(待处理) → ordered(已下单) → arrived(已到达) → received(已收件)
↓
lost(丢件) / returned(退件)
货币类型
1-CNY / 2-MOP / 3-HKD / 4-USD
API 路由 (/api/purchase/*)
| 路由 | 用途 |
|---|---|
POST /getorder |
获取订单详情(含费用、图片、状态记录、关联工单) |
POST /getorders |
获取订单列表(支持搜索、分页、状态筛选) |
POST /addorder |
新增订单 |
POST /updateorder |
编辑订单(含费用、图片重建) |
POST /deleteorder |
删除订单 |
POST /updatestatus |
更新订单状态(可附评论/图片) |
POST /delete_commit |
删除状态记录 |
POST /getordercount |
统计各状态数量 |
POST /search_work_orders |
搜索工单(用于关联) |
工单模块 (backend/my_work/routers/apiWorkOrder.go)
数据表
| 表 | 用途 |
|---|---|
TabWorkOrder |
工单(软删除) |
TabWorkOrderFileBind |
工单图片关联 |
TabWorkOrderCommit |
进度记录 |
TabWorkOrderLog |
操作日志 |
TabWorkOrderCommitFileBind |
进度关联图片 |
TabWorkOrderPurchaseOrderBind |
工单-采购订单关联 |
工单状态流程
pending(待处理) → checked(已检查) → parts_ordered(已下单零件) → repaired(已维修) → returned(已送还)
↓
unrepairable(无法维修)
关联关系
- 工单 ↔ 仓库物品 (
TabWarehouseItemWorkOrderBind) - 工单 ↔ 采购订单 (
TabWorkOrderPurchaseOrderBind) - 特殊逻辑:状态变更为
returned时,自动移除物品的容器绑定
API 路由 (/api/work_order/*)
| 路由 | 用途 |
|---|---|
POST /add |
新增工单(可关联物品) |
POST /update |
编辑工单 |
POST /list |
获取工单列表 |
POST /get |
获取工单详情(含图片、进度、关联物品/采购订单) |
POST /commit |
提交进度(更新状态,可关联采购订单) |
POST /delete |
删除工单 |
POST /delete_commit |
删除进度 |
POST /count |
统计各状态数量 |
POST /search_purchase_orders |
搜索采购订单(用于关联) |
前端架构
Web 前端 (frontend/ops_vue_js/)
技术栈: Vue 3 + Vite 7 + Pinia + Vue Router + Vue I18n
项目结构:
src/
├── api/ # API 封装层
│ ├── index.js # Axios 实例 + 拦截器 + 统一调用接口
│ ├── auth.js # 认证 API (登录/注册/用户信息/密码修改)
│ ├── purchase.js # 采购订单 API
│ ├── warehouse.js # 仓库管理 API
│ ├── work_order.js # 工单管理 API
│ ├── schedule.js # 日程管理 API
│ └── users.js # 其他用户信息 API
├── components/ # 公共组件
├── composables/ # Vue 组合式函数 (Hooks)
├── i18n/ # 国际化 (en.json, zh-CN.json)
├── layouts/ # 页面布局 (AuthLayout, DefaultLayout)
├── router/ # 路由配置
├── stores/ # Pinia 状态管理
├── views/ # 页面视图
└── main.js # 应用入口
API 封装 (src/api/index.js):
- 基于 Axios,基础 URL:
/api - 请求拦截器自动注入
userCookieValue - 响应拦截器处理 Cookie 过期 (err_code: -44)
- 统一返回
{ errCode, data, raw }格式 - 支持文件上传 (FormData)
路由 (src/router/index.js):
- 使用
createWebHashHistory(hash 模式) - 认证页面:
/login,/register,/forgot_password - 需要登录的页面在白名单外
页面视图 (src/views/):
| 模块 | 页面 |
|---|---|
| 首页 | HomeView.vue |
| 日程 | ScheduleView.vue (FullCalendar) |
| 采购 | PurchaseList.vue, addorder.vue, ShowOrder.vue, editorder.vue |
| 工单 | WorkOrderList.vue, AddEditWorkOrder.vue, ShowWorkOrder.vue |
| 仓库 | WarehouseOverview.vue, WarehouseContainerList.vue, WarehouseContainerDetail.vue, WarehouseItemList.vue, WarehouseItemDetail.vue, WarehouseAddItem.vue, WarehouseItemEdit.vue |
| 设置 | AccountView.vue, ContactView.vue, SecurityView.vue |
状态管理 (src/stores/):
user.js: 用户状态 (登录/登出/会话恢复/用户信息)toast.js: 全局 Toast 通知users.js: 其他用户信息缓存
样式方案:
- Tailwind CSS v4
- Tabler Icons
- 亮色/暗色模式支持
国际化: src/i18n/en.json, zh-CN.json
- 覆盖模块: week, errorpage, appname, tagadder, dropzone, cropper, purchase, work_order, warehouse, purchase_addorder, schedule, home, message, settings, button, footer, cost_type, order_status
构建配置 (vite.config.js):
- 输出目录:
../../backend/my_work/dist - 开发代理:
/api→http://127.0.0.1:8080 - 路径别名:
@→./src
移动端 (frontend/ops2_uniapp/)
技术栈: uni-app + Vue 3 + Pinia + HBuilderX
项目结构:
ops2_uniapp/
├── api/ # API 接口封装
│ ├── index.js # 基础请求工具(框架已有,方法待实现)
│ ├── request.js # 请求配置(待完善)
│ └── user.js # 用户接口
├── components/
│ └── my-toast/ # 自定义 Toast 组件
├── pages/ # 页面
│ ├── index/index.vue # 主页 TabBar(占位)
│ ├── order/order.vue # 订单 TabBar(占位)
│ ├── message/message.vue # 消息 TabBar(占位)
│ ├── user/user.vue # 用户 TabBar(基础框架)
│ ├── login/login.vue # 登录页(已完成 85%)
│ └── settings/settings.vue # 设置页(已完成 90%)
├── stores/
│ ├── config.js # 配置 Store(完整)
│ └── user.js # 用户 Store(基础)
├── utils/
│ └── index.js # 工具函数(isUrl)
├── pages.json # 路由配置
├── manifest.json # 应用配置
└── package.json # 依赖(pinia)
Stores 状态管理:
useConfigStore: apiBaseUrl / appName / version / themesetApiBaseUrl()/getApiBaseUrl()- API 地址持久化
useUserStore: username / tokensetUser()/logout()
API 封装状态:
api/index.js: 框架有,get/post/upload 方法空实现- 登录页直接使用
uni.request()调用,绕过了封装层 - 需要完善 Cookie 认证机制(参照 Web 前端)
页面完成度:
| 页面 | 完成度 | 说明 |
|---|---|---|
| index | 5% | 占位文本 |
| order | 5% | 占位文本 |
| message | 5% | 占位文本 |
| user | 20% | 登录按钮 + 设置入口 |
| login | 85% | 表单 + 验证 + 请求 + Toast |
| settings | 90% | API 地址编辑 + 连接测试 |
当前总完成度: ~35-40%
移动端待开发:
- 完善 API 封装层(Cookie 认证)
- 实现各功能页面(主页仪表盘、订单列表、消息列表、用户中心)
- 添加更多组件(Loading、确认对话框、空状态)
- 对接后端各模块(仓库、工单、采购等)
前后端交互协议
请求格式 (POST JSON)
{
"data": {
"userCookieValue": "xxx",
...业务参数
}
}
响应格式
{
"err_code": 0,
"return": { ... }
}
认证机制
- 登录成功后服务端返回 Cookie(存储在
TabCookie_表) - 后续请求通过
userCookieValue字段传递 - Cookie 过期码: -44
开发注意事项
- 移动端开发时: 需要完善
api/index.js的请求封装,参照 Web 前端实现 Cookie 认证 - 仓库模块: 是当前开发重点,支持树形容器、物品管理、工单关联
- 同源部署: 后端直接 serve
./dist静态文件,简化部署
更新记录
- 2026-04-24: 首次梳理项目运行逻辑,保存长效记忆