目录1. 数据模型映射2. 实现新增 / 删除题目 API3. 实现题目列表 / 详情 API1. 数据模型映射SPEC.md 根据文档描述开发 “Phase 2” 中的 “题目数据模型映射” 这部分的代码。这个部分opencode 主要创建了三个类Problem表示一道题目Testcase表示一个测试用例User表示一个用户每个类的属性都是和数据库表对应的。并且提供了保存到数据库/从数据库查询的相关方法。数据模型映射关键就是把数据库中的数据对应到 C 代码中的对象里。比如数据库表结构-- ⽤⼾表 CREATE TABLE IF NOT EXISTS users ( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(64) UNIQUE NOT NULL, password VARCHAR(128) NOT NULL, role ENUM(user,admin) DEFAULT user, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );User 类class User { public: User(); User(int id, const std::string username, const std::string role); int getId() const { return id_; } void setId(int id) { id_ id; } const std::string getUsername() const { return username_; } void setUsername(const std::string username) { username_ username; } const std::string getPassword() const { return password_; } void setPassword(const std::string password) { password_ password; } const std::string getRole() const { return role_; } void setRole(const std::string role) { role_ role; } bool loadFromDB(int id); bool loadFromDBByUsername(const std::string username); bool saveToDB(); static User getByUsername(const std::string username); static bool usernameExists(const std::string username); private: int id_; std::string username_; std::string password_; std::string role_; std::string created_at_; };和之前一样也是给这些代码添加单元测试。根据上面实现的代码基于 gtest 设计测试用例进行单元测试代码放至 tests/unit/ 中.我们自己调试问题的时候不要盲目猜测而是要充分添加日志掌握清楚线索再做进一步调整。AI分析问题的时候也会犯糊涂也会有一些“谜之操作”。作为“AI驾驶员”能够给AI正确的方向引导会使AI的工作效率事半功倍。2. 实现新增 / 删除题目 APISPEC.md 按照文档描述进行 Phase 2 中的 “题目 CRUD API管理员” 的代码开发。这个部分AI会开发以下内容给 Problem 添加从数据库删除的方法。创建新增 / 删除题目的 handler 函数实现新增 / 删除逻辑本质上是落到数据库调用实现 router完成路由注册的过程实现 server完成服务器的初始化和启动编写 main 函数调用 server 真正启动服务器接下来和前面一样需要进行单元测试。针对刚才实现的两个 API 接口基于 gtest 实现单元测试代码放到 tests/unit/ 中。AI也是会“偷懒耍滑”的我们一定要对AI的工作进行仔细的检查及时指出纠正他的“偷懒行为”。3. 实现题目列表 / 详情 APISPEC.md 按照 Phase 2 中 “题目列表/详情 API” 部分的描述进行开发。AI本轮开发以下代码编写 problem_handler.cc实现查询题目列表和查询指定题目详情两个处理函数。编写 router.cc完成路由注册。这一轮的开发代码逻辑和上一轮非常相似。都是针对HTTP请求进行解析再操作数据库并返回响应结果。开发完成后添加单元测试用例根据上面开发的代码基于 gtest 编写单元测试用例代码放在 tests/unit/