前言
重新建立对话的前因:omo 死循环:Internal Server Error: proxy error: Could not establish connection
旧项目:Trae开发的交易管理系统,有基于本地csv数据创建组合,和组合报告功能
AI框架:OC+OMO在虚拟机容器里隔离工作,成果用ftp同步给宿主机
s1: 架构蓝图
不做任何代码修改,仅扫描项目所有文件,建立认知根据现有项目代码结构,生成design/20260420_omo_代码现状手册.md根据下面的诉求和20260420_omo_代码现状手册.md,生成design/20260420_omo_架构改造计划01API.md
项目启动:script/start.py xxx
环境标签:xxx为空时,读取config/default.json,否则读取config/xxx.json
启动服务:启动后,读取配置文件,加载需要代理的模块,仅暴露一个端口
数据改造:使用mysql作为 策略库、算法库(算法的模型参数集)、组合库,用户数据,关系数据等等,取代之前输入的csv等方式,输出的html报告需要结合性能考虑,是否静态化
统一入口:访问任何uri都由app/gateway,代理给app/api和web等模块,根据配置文件挂载的模块。访问域名端口则代理默认模块web,host:port/xxx则指定访问app/xxx模块
统一结构:app/每个模块一个子目录,额外还有个gateway,每个模块的代码工具都高内聚,不允许有其它目录
api模块:管理mysql连接和增删改查操作,所有需要跟数据库交互都由它来,并且提供 host:port/api/docs供界面查看接口文档和调试调用
web模块:三块大功能,策略库管理分析,管理人组合算法管理,产品组合投资分析,以及管理后台,包括用户管理,数据权限管理需要更新 20260420_omo_架构改造计划01API.md
修正架构理解错误的地方,api是数据库的唯一入口,不管是绕过web,还是通过web操作数据库,都需要且只能通过api模块收敛 数据库操作+权限控制,不允许任何其它模块对数据库直接操作。1. 我认为API Data Layer 可以放入 API Server, Web UI 也只能调用API Server
2. core和templates 都是 Web UI的内容,移入Web UI
最后app结构为
app/gateway ---- 统一入口和模块服务代理
app/api ----- 前台后台的统一数据库操作入口+权鉴
app/api/docs ----- 数据接口文档和调试页面
app/web ---- 三大功能可视化交互+用户菜单+接口文档入口+后台入口
app/algo ---- 可以选择调用自定义参数的组合算法模型
app/admin ----- 管理后台(调用api管理)
3. 依照上面内容,更新20260420_omo_架构改造计划01API.md,这个计划文件的功能主要是 新架构说明示意,架构变动示意,架构改造计划,gateway开发计划,api开发计划针对 @design/20260420_omo_架构改造计划01API.md ,按照TDD规范,设计 生成 design/20260421_omo_架构改造计划01API-TDD.mds2: api模块开发
按照 @design/20260420_omo_架构改造计划01API.md 的改造开发计划为SDD开发代码,以@design/20260421_omo_架构改造计划01API-TDD.md 为验收目标,实施编程,直到满足SDD和TDD为止 ------------------ 商业算力 -------------------------
检查 @design/20260420_omo_架构改造计划01API.md 开发计划全部实施 #上下文太大了,切换到商业算力测试以 @design/20260420_omo_架构改造计划01API.md 的改造和开发计划为目标,完成所有任务 为什么 app下还有 core services templates config 这几个目录,它不符合我对新架构的模块目录结构定义,谁用的归入谁的模块目录下再核对一下 @design/20260420_omo_架构改造计划01API.md 是否已完成开发可以提测了s3: TDD
------------------ 商业算力 -------------------------
@design/20260421_omo_架构改造计划01API-TDD.md 开发提测,完成测试 继续开始修复@design/20260421_omo_架构改造计划01API-TDD.md 检查测试全部通过,--------------- 本地算力 ---------------------------
app/database 目录需要处理掉,不应该出现,除非它是架构设计内的主模块,承载独立的大业务,可以被代理的模块,如果仅仅是跟数据库有关,那它应该属于api模块下,它负责处理数据库生成 design/20260402_omo_api 使用手册.md, 字数尽可能少,以操作为主,包含 服务启动,api/docs使用,api在没有web下的其它使用看起来 scripts目录已经没有作用了,以后会使用python -m uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload这类方式来拉起服务?但是我看api模块手册仍是拉起api模块本身,而不是拉起整个服务----------------- 此任务建立了6个子任务,上下文增长到8万,只能切商业算力 ------------------
改造一下,并同步更新 api手册
1. 统一启动入口 app/run.py 作为生产正式运行脚本
2. config/database_config.py如果是必须的,从文件名看它的职责应该是ap/api下的,如果仅仅是加载yaml config,供全局使用,那它文件名不对。
3. config/database.json数据库配置在yaml已经有了,不能再冗余重复配置,需要处理掉
4. scripts职责不应该是正式运行脚本,而是一些调试或快速部署的工具s4: 验收
- 启动服务(开发) - 通过
- 查看文档 - 通过
- 登录获取 Token - 修复,抛异常AttributeError: module 'jwt' has no attribute 'encode'
检查一下测试用例,为什么功能测试都没通过, tdd却测试通过了,是什么原因,检查一遍所有用例是否有类似问题
本地算力和商业算力全都算错方向,修复auth.py 对 jwt包使用上,实际上是另一台电脑没有安装pyjwt包导致,安装即可- 获取用户 - 修复, "detail": “Missing authorization header”
http://localhost:8000/api/auth/me 输入正确的登录token,但是接口返回{
"detail": "Missing authorization header"
}
apidoc右上角增加了统一的token