feat: 接入内容服务端真实接口并优化页面交互

- 迁移内容数据到服务端接口,移除本地模拟数据
- 首页新增推荐课程加载与未读消息检查
- 资讯、课程、搜索页面支持分页加载与错误重试
- 登录页新增恢复课程、消息、帮助页的路由逻辑
- 评估分析页新增处理中状态动效与阶段提示
- API 环境切换到正式域名 airz.hqling.cloud
This commit is contained in:
hujun
2026-10-01 20:26:41 +08:00
parent 3b2a0139e4
commit 2a9ff403c4
41 changed files with 21742 additions and 427 deletions
+169 -32
View File
@@ -1,9 +1,143 @@
# AI 融资平台开发文档
> 版本:v1.30 · 基线日期:2026-09-22 · 更新日期:2026-09-30 · 状态:正式库6条产品已同步正常业务文案,报告/PDF/助手去标签的3个PHP文件已正式部署并完成76项服务器验收,页面改动待发行;产品地区待核实、完整发布问题清单及既有编辑/公共目录本地联调完成,四条公开银行材料为隔离库草稿,未部署。最新资料/评估版本及会话任务列精简已完成正式库维护;小程序/H5未发布,外网HTTPS沿用此前连接重置状态。原型04—10及PDF既有功能保留。
> 版本:v1.42 · 基线日期:2026-09-22 · 更新日期:2026-10-01 · 状态:积分后端及真实HTTP隔离开发检查完成,默认关闭、DEC-POINT待确认;原表未迁移、积分页面未接、未部署。模型运行参数/调用额度受控配置、后台分析进程心跳/进度超时提示、只读服务检查/调用用量、评估排障、受控人工重试与操作审计、业务权限模板、资料/消息只读及敏感字段保护源码完成未部署;FAQ服务端和反馈闭环源码完成未部署。资讯/课堂/搜索/会员课程进度、消息中心和产品编辑/公共目录已正式部署至https://airz.hqling.cloud;新域名公网HTTPS通过。微信/Android此前开发编译通过,小程序需重新发行,H5未部署、真机及多设备待验收。最新资料/评估版本及会话精简约定保留。
> 配套台账:[开发进度](开发进度.md)。本文定义范围、接口和验收口径,台账记录实际执行与证据。
> 文档初始规划后已开始开发;以下更新记录优先于原始基线。除明确列为已实现的部分外,计划接口和增量数据仍待开发。
### 0.49 2026-10-01 积分协议与隔离开发检查
五个积分接口仅接受显式合法Bearer,不使用Cookie或旧Token头回退。签到须application/json(可选UTF-8 charset)及恰好三个唯一字符串字段,普通与Unicode等价重复JSON键均拒绝;查询校验原始QUERY_STRING、解码键白名单/唯一性及与PHP解析值一致,拒绝重复、NUL、坏编码和空片段。五条精确路由将错误方法交由积分守卫统一405,原始方法与有效方法必须一致、覆盖头拒绝;允许Origin的无令牌OPTIONS由既有Common入口处理。v1框架错误JSON补no-store,未知路由仍404;这一缓存头适用于其它v1框架错误,不改变其状态和错误体。
真实HTTP87请求/1079项检查通过,覆盖草案/发布/暂停/坏规则、跨日/版本冲突、丢弃已提交成功响应后的原键确认、账户停用/删除/撤销、本人快照分页/旧NULL/隐私、余额边界和Redis不可用。HTTP脚本使用独立临时ROOT/RUNTIME、随机ENV_PREFIX、新合成数据库及Redis DB15随机Token作用域,不加载仓库正式.env。测试数据库、Token、临时服务与文件已清理,原fa_user/score_log和原Redis队列摘要一致,无worker/模型调用。
新增非NULL历史流水时间校验(上海四位年份上限253402271999)和正UINT主键校验;NULL时间保留,首次快照坏主键返回POINT_LEDGER_INVALID。主服务238项、HTTP输入190项纯检查通过;23项原表只读预检通过,仍4增量/14类质量计数全0。业务规则未获确认,运行配置false/null,POINT-002保持开发中、POINT-003/004未实施,页面仍本机体验,27页面/63任务不变。下一开发子项可接积分页真实读取和原键确认状态;启用真实奖励、原表迁移及部署仍需明确安排。
迁移纯110项、独立apply/备份/Windows ACL/恢复89项通过。检查只复制共享库两表结构,另建两个随机合成库(2会员4流水);第一库apply4增量、重复apply0,二表完整schema+NDJSON备份恢复到第二库后逐列摘要一致,目录/3文件仅当前用户ACL及读写probe通过。实际演练修复Windows原生备份路径识别及父级路径拒绝,新增纯validateBackupPath检查。两新库、私密INI/备份/probe已按所有权清理,原表保持。安全回执在C:/Users/JUN/AppData/Local/Temp/airz-points-migration-20261001/apply-20261001-115749-d50a5cd87fd5a84a/verification.json;该恢复仅为合成环境检查,不是生产恢复方案执行证据。
### 0.48 2026-10-01 历史:积分后端基础(默认关闭、未迁移/未部署/未接页面)
新增PointsRules/UserPoints、v1 Points控制器及五条严格路由,复用认证会员身份,提供余额、规则、ID有界流水、每日签到和任务状态。配置安全默认enabled=false,ruleVersion/reward及权益/期限/等级策略为null;损坏或不可读规则固定失败,不能用体验10分兜底。每天10分、不自动过期、level不联动等仍是待确认建议,用户尚未定稿,DEC-POINT/POINT-001保持待确认;POINT-002仅后端基础开发中,POINT-003未做,POINT-004页面仍本机体验。27页面、63任务及编号不变,完整契约见[积分规则与开发契约](积分规则与开发契约.md)。
签到恰好requestId/expectedRuleVersion/expectedDate三个字段;先锁正常会员,再查成功请求回执,未命中才校验锁后上海业务日、固定当日事件和当前发布规则。余额与一条冻结流水同事务,原成功请求可跨日/暂停重放,回执balanceAfter只代表历史余额;同日异键拒绝,无零分占位。只有1062/1205/1213且明确回滚才返回写冲突,未知提交/回滚为账本不可用。流水只本人、字符串ID游标、历史NULL元数据保留,不返回自由memo;未实施资料/邀请任务为unavailable、reward=null。
旧通用后台score/level直接修改、伪造字段与旧User::score已封闭,原level 0/1初始化保持,不新增管理员积分调整。schema.sql和ScoreLog中文注释增加期望request_id CHAR(36)/rule_version VARCHAR(64),ASCII ascii_bin可空,唯一(user_id,request_id)与idx_user_point_id(user_id,id);原业务键/事件唯一/时间索引复用。新增[显式积分迁移脚本](D:/AAdesk/202609/airz/database/migrate_points.php),默认只读,apply须精确环境/目标、停写确认和双表完整私密备份;MySQL DDL隐式提交,不自动修复或整表恢复。脚本实际apply和ACL仍未运行,任何原fa_user/score_log未执行迁移。
本轮检查:主服务纯237项、旧写保护纯98项、迁移纯84项、隔离事务45项、只读预检22项及16PHP lint通过。事务检查只在127.0.0.1:3309/airz_product_test_20260930的随机pts_合成表执行,覆盖真正双PHP同键/异键、锁等待跨业务日及trigger故障回滚;原fa_user/score_log结构与数据摘要保持,合成表精确清理。相同精确目标连续两次实际默认只读迁移预检通过:4增量、13类质量计数各项0、applied=false,无backup/apply,原两表读前后结构/数据摘要一致;PDO原生事务追踪已修正。未连接正式库或默认.env,未HTTP/浏览器/Redis/worker/模型调用,未部署或进行运营/真机验收。下一步先确认业务规则、显式隔离迁移验证及HTTP开发检查,再接积分页面;后端源码/合成表测试不能作为页面已到账证据。
### 0.47 2026-10-01 历史:积分规则与开发方案草案
本轮仅整理[积分规则与开发契约](积分规则与开发契约.md)及后端[积分数据库设计](D:/AAdesk/202609/airz/database/points-design.md),没有实现API、签到到账、迁移脚本或部署,不执行数据库、运行测试或收费模型调用。POINT-001仍受DEC-POINT待确认阻塞,POINT-002/003/004未实施,任务总数63不变;文档方案不能作为运行能力或业务验收证据。
首阶段建议每日10分、服务端Asia/Shanghai每天一次且不补签,不启用连续加成,资料/邀请奖励关闭。本机体验签到及固定邀请码不导入、不补发;真实余额保留服务端score。奖励额、权益范围、有效期及会员level处理仍须明确确认,未发布配置安全默认停止新入账且奖励为null,不能用页面10分兜底。旧后台绝对值score编辑和User::score吞异常/联动level是实施前门禁,需封闭或统一共同账户锁及事件审计。
拟 `POST /points/check-in`恰好三个字段requestId/expectedRuleVersion/expectedDate;expectedDate是页面读取的服务端日期预期,不能指定补签,未成功请求必须匹配取得用户锁后的上海当日。成功流水拟保存事件键、请求键、规则版本及before/delta/after冻结回执,原请求可跨日/暂停返回旧回执但不覆盖当前余额,回执后重新GET余额。`GET /points/ledger`拟改有界snapshotId/beforeId游标,目前无已发布积分API,不涉及分页兼容迁移;具体DTO及固定错误见主契约。
仓库结构已有fa_user_score_log的business_type/business_id、uk_user_business及idx_user_time,不重复添加;首阶段仅拟增加可空request_id/rule_version、唯一(user_id,request_id)及 `idx_user_point_id(user_id,id)`游标索引,不建独立签到/请求/连续表,邀请关系留后续POINT-003。没有连接目标库或执行DDL,实际实施前仍需显式目标预检/备份/保护所有旧写方。下一步先确认首阶段规则后POINT-002,发布和验收另行安排,不复用历史授权。
本轮文档校验:8个目标文档UTF-8无BOM/无行尾空白,两新方案10处本地链接目标存在、代码围栏配对,两仓库限定文档diff检查通过(仅既有LF/CRLF提示)。只读方案复核已核对已有列/索引,并补清错误优先级、已确认回滚竞争错误与ID分页索引。未连接数据库/Redis/HTTP、未调用模型,也未进行运行测试;POINT-001决定仍未批准,不将文档检查当作开发功能通过。
### 0.46 2026-10-01 模型运行参数与调用额度受控配置
ADMIN-003 本轮完成独立后台 `GET modelconfig/index` 与 `POST modelconfig/update`受控配置子项源码。复用 `fa_config` 的保留名称 `ai_runtime_policy` 存 `schemaVersion=1` JSON,不新增表或字段;通用配置入口、模型保存/删除和配置文件刷新保护该行,不允许绕过专用入口或落入公开配置文件。只开放四字段:是否接受新调用、新评估使用Flash/Pro、同会员每日评估/产品解释/助手共享次数1–1000、评估最大尝试1–3;助手和产品解释仍固定最多3次,不编辑凭据、供应商地址、timeout、maxTokens或实际环境开关。
环境 `deepseek.enabled`是硬限制,有效开关为环境启用且运行策略接受调用;页面不能绕过环境禁用。策略无跨操作缓存,三场景在会员锁内一次读取共享锁保护的当前策略快照,预留次数沿既有口径,降低限额不清零已有预留。没有保留行时沿环境配置,记录损坏或数据库不可读时停止接受新模型调用并返回固定错误,不静默启用。新评估按新策略冻结模型,旧调用日志的模型继续使用;正在curl的调用自然收尾,暂停后的未开始任务沿既有禁用路径失败,已有预留不退回,不恢复或清空队列。
保存只接受四字段、64位小写十六进制 `expectedVersion`、`cfg_`加32位小写十六进制 `requestId`、固定 `reasonCode` 和CSRF。管理员/当前权限重新核验、策略CAS版本比较和成功审计在同事务;审计失败回滚。成功原请求重放返回原回执,不覆盖后续修改;同键改参数或旧版本冲突拒绝,失联后用原键确认结果。拒绝日志只保存安全请求标识/版本/原因/固定码,不记录完整POST、CSRF、凭据或异常原文。
新增 `modelconfig`、`modelconfig/index`、`modelconfig/update` 三节点及独立技术 `v5`,继承技术v4,旧技术v4/v3/v2/v1、客服v2、运营v1和账号绑定保持。仅隔离库 `127.0.0.1:3309/airz_product_test_20260930`显式备份应用4项、重复预检0项,不进行生产迁移或换绑。仅本地开发和显式隔离检查,正式库、默认 `.env`、线上、真实worker和移动端未改,不部署或做运营/真机验收。ADMIN-003仍开发中,供应商账单/余额能力和外部告警方案未确认;维护见[服务检查与受控配置](D:/AAdesk/202609/airz/database/admin-services.md)及[后台权限说明](D:/AAdesk/202609/airz/database/admin-permissions.md)。
开发检查通过:策略纯83项/事务24项、双PHP/双连接并发43项、业务路径纯63项/隔离DB43项、权限97项、审计20项,原服务纯53/用量76/重试39项;服务HTTP207项(95请求)及Chrome Playwright桌面1280×900/手机390×844页面67项通过。首行竞争实测MySQL1213只有一方保存成功,确定1062/1205/1213映射冲突且不自动重试;同键重放、异意图拒绝、审计失败回滚、暂停/旧模型冻结及策略故障安全关闭均覆盖。坏记录禁止编辑,服务返回固定MODEL_RUNTIME_POLICY_INVALID,用量仍保留已预留数,额度/剩余数/最大尝试为NULL。页面覆盖提交已成功但响应丢失→刷新保留原键→同审计/版本重放、另一管理员冲突自动刷新和旧技术v4拒绝配置但可查服务。无未解释console/pageerror、横溢或文字重叠,一条刻意中断响应的网络错误另记。
收尾修复:保存确认关闭动画期间快速响应不再阻断冲突后的自动刷新;服务规范化策略及三个请求元字段的顺序,同值同请求键仅改变POST字段顺序仍返回原回执,不覆盖后续版本或重复审计。乱序幂等新增2项纯检查/1项真实隔离事务检查,6表摘要一致并完整回滚。
0模型/worker调用;并发夹具精确清理、14表摘要一致,HTTP held清理3项通过并复核原13表/Redis原队列;原Config行与site.php摘要保持,凭据JSON和scope私密JSON删除。最终23PHP lint、2JS语法、26源码/测试文件UTF-8无BOM和空白检查通过;原3309/PID19100、8097/PID43340仍仅监听127.0.0.1,无本机analysis:work。证据 `C:/Users/JUN/AppData/Local/Temp/airz-admin-runtime-policy-20261001/verification.json`、`ui-result.json`及 `saved-desktop.png/saved-mobile.png/invalid-mobile.png`。临时页面脚本依赖已删除夹具,不能直接重跑,须新建显式隔离夹具;继续先复查监听与bootstrap,不用默认环境或旧cleanup/reset。本轮不引入供应商余额或外部告警实现承诺。
### 0.45 2026-10-01 分析进程心跳与进度超时提示
ADMIN-003 本轮完成常驻 `analysis:work` 进程的只读可观测性子项源码。使用独立Redis JSON观测键,键名按数据库配置和 `analysis.queue` 派生隔离摘要;不复用队列载荷或数据库业务字段。只观测最近登记的一个常驻进程,新实例可接替旧实例,随机实例标识本次启动;后续进度更新和停止标记原子核验instanceId及startedAt,首次登记响应丢失后也不能重复无条件覆盖新owner。普通进度更新可原子补登记缺失键,停止不复建缺失键。`--once` 和 `--recover-only` 不登记,不能被当作常驻服务。
进程在启动、工作边界、空闲、队列降级和退出路径记录 `starting/working/idle/degraded/stopped`,停止上报不证明任务正常完成。Redis失败采用尽力记录,不能影响任务执行、调用预算、队列租约、业务日志或已有恢复机制;不改 `DeepSeekClient`,阻塞模型请求期间不虚构持续进度。超时阈值取 `max(analysis.heartbeat.stale_after_seconds默认180, deepseek.timeout+60, analysis.lease_seconds, 30)`;观测TTL为86400秒且须大于实际阈值,超时记录在过期前仍可读取。
后台沿用 `GET servicestatus/index` 的只读权限,展示最后进度时间、记录年龄和阈值。缺记录、未启用、格式损坏、Redis不可用与进度超时分别返回固定状态,不输出进程/实例标识、环境地址、队列名、路径或原异常。超时只表示超过阈值未记录进度,不能判定操作系统进程死亡、其他worker状态、任务是否一定失败或供应商是否健康;外部告警投递尚未接入。
本子项无新增权限节点/模板或数据库结构;技术 `v4` 与历史角色绑定沿用,不进行迁移或换绑。仅本地开发和显式隔离检查,正式库、默认 `.env`、线上及移动端源码未改,不部署、不做运营或真机验收。ADMIN-003 保持开发中,供应商对账和受控配置编辑仍待实施。实现契约、隔离验证和回退边界见后端[服务检查维护](D:/AAdesk/202609/airz/database/admin-services.md)。
本轮检查通过:心跳纯133项、真实隔离Redis90项、服务纯53项/隔离数据库14项、服务HTTP207项(95请求)及Chrome Playwright 1280×900/390×844页面43项;9个PHP文件lint及JS语法通过。覆盖owner接替/首次响应丢失、丢键补登记、停止不复建、exit/致命错误退出上报、Redis故障和上述9种状态,页面无console/pageerror、文档横溢或文字重叠。0模型调用,合成夹具/观测键/私密JSON及专用PHP8098精确清理,原13表与原队列摘要保持;原3309/8097保留,无真实worker。安全回执与截图 `C:/Users/JUN/AppData/Local/Temp/airz-admin-heartbeat-20261001/verification.json`、`ui-result.json`、`redis-result.json`;0.44的检查数字保留为上一阶段。
下一开发项建议推进模型运行参数和调用额度的受控配置;供应商余额/费用对账仍依赖接口能力确认,外部告警投递方案另定。该建议不授权生产配置修改或发布。
### 0.44 2026-10-01 只读模型与服务检查、调用用量
ADMIN-003 首个子项新增后台 `GET servicestatus/index` 和 `GET servicestatus/usage`。页面分服务检查/调用用量两视图,按会员ID、日期、场景和状态查询,20条分页,支持刷新、重置、空态和失败恢复。加载期间锁定当前查询控件,清除旧指标和分页,避免失败时误读旧结果;桌面和移动表格分别在内部横向滚动。控制器包含超管的所有写入口拒绝,不派发、恢复、消费队列或直接调用模型。
服务检查只读取当前PHP配置、安全布尔值/计数和固定错误码。模型检查启用、运行凭据存在、固定HTTPS来源和模型选择,不请求供应商;数据库为基本读取,队列为配置连接的PING/LLEN/ZCARD,登录存储为Redis PING;本地上传目录仅检查存在/可写,不写探针文件。业务短信尚未接入,分析进程没有心跳,状态明确为待接入/未知,队列为空不能证明进程存活。未输出地址、目录、队列名、凭据或异常原文。
调用查询仅投影已识别评估/产品解释/助手的安全元数据;日期为PHP时区日历日、首尾包含,默认当日,最多31天。已删除记录不进入报表;会员今日额度独立遵循真实预算,统计今日00:00后全部assistant预留,包含失败、软删除、遗留和未来时间记录,不随历史窗口/场景/状态变化。称为已预留次数,不推算收费。Token单值和汇总以十进制字符串保精度,未知为NULL并统计未知记录,已知零为字符串0,不读取正文、输入、报告、匹配或上下文。已登记模型/密钥与用户Token额度尚未参与真实执行,不能当作供应商余额。
新增3个权限节点和独立技术 `v4` 模板,旧技术 `v3/v2/v1`、客服 `v2`、运营 `v1` 规则及账号绑定保留,不自动扩权。无新增业务表/字段;正式库、默认 `.env`、线上和移动端源码未改,未部署或开展运营/真机验收。ADMIN-003 保持开发中,供应商余额/费用对账、受控配置编辑和心跳告警仍待开发。接口、显式隔离测试及恢复见[服务检查维护](D:/AAdesk/202609/airz/database/admin-services.md)。
本轮开发检查通过:服务纯48项/隔离数据库13项、用量纯76项/隔离数据库26项、权限定义90项;服务HTTP203项(95请求)、原后台权限227项(158请求)、Chrome Playwright 1280×900/390×844页面56项。涵盖大整数/未知及零、今日额度与历史筛选分离、真实20条翻页、加载防重复及错误清旧结果、旧角色拒绝和只读超管;无console/pageerror、文档横溢或文字重叠。合成夹具精确清理、凭据JSON删除,13表原有行及Redis原队列摘要保持,0模型调用。安全回执 `C:/Users/JUN/AppData/Local/Temp/airz-admin-services-20261001/verification.json`;原3309/8097保留、worker未启动。下一开发子项优先补分析进程心跳及失联提示,外部告警投递方案另定。
### 0.43 2026-10-01 受控人工重试与操作审计
ADMIN-002 继续实施已有评估任务的人工重试。新增 `POST assessment/retry`,仅接受正文中的评估 ID、CSRF、`adm_` 加32位小写十六进制请求键、预期当前版本/任务 ID 和固定原因枚举。详情页有失败版本确认弹窗、重复提交保护、失联后原键确认、接受后的状态刷新和操作日志入口。请求键冻结原重试意图,参数变化或版本/任务变化返回冲突;成功重放返回原任务,不重新增加次数。
管理员、会员、会话和当前输入加锁,复用用户重试的失败状态、尝试上限、每日调用预留和生命周期。成功审计复用 `fa_admin_log`,与调用预留和回执同事务提交,审计失败全部回滚。提交后才派发;派发失败仍返回已接受的持久回执,原键重放可补投。日志仅保存安全 ID、原因、前后次数和稳定结果,不记录CSRF、资料、报告或模型正文。后台请求命名空间与用户请求分开,排障可按管理员请求 ID 查到原版本与任务。
新增 `assessment/retry` 只进入独立技术 `v3` 模板;旧技术 `v2`、客服 `v2`、运营 `v1` 规则及绑定保留,不自动扩权。只在本机隔离库备份应用2项权限增量,复检0项;没有业务表字段迁移。正式库、默认 `.env`、线上与移动端源码未改,未部署、未做运营或真机验收。ADMIN-002 保持开发中,完整外部查询/对账依赖 DATA-004;下一独立开发项可做 ADMIN-003 服务状态检查。接口、测试与恢复见后端[评估排障维护](D:/AAdesk/202609/airz/database/admin-assessment.md)。
本轮开发检查通过:重试服务纯39项/隔离事务45项、审计90项、权限定义82项、诊断纯48项/隔离事务47项;重试HTTP与数据库1016项(91次请求),独立PHP并发、成功及拒绝审计均故障、队列失联/原键补投均覆盖。原排障回归1075项(200次请求)、原权限227项(158次请求)通过。Chrome Playwright桌面1280×900/移动390×844页面38项通过,包括响应丢失后取消/页面内刷新仍保留原请求、CSRF恢复、冲突刷新、原任务/审计重放和旧角色隐藏按钮;仅刻意拦截产生一次预期网络错误,无新增未解释console/pageerror。合成账号、评估、日志、触发器和随机队列精确清理,13表原有行及其他队列摘要一致,0次模型调用。证据在 `C:/Users/JUN/AppData/Local/Temp/airz-admin-retry-20261001/verification.json` 与 `ui-result.json`;8098专用PHP已停止,3309与原8097保留。
### 0.42 2026-10-01 已有评估任务只读排障
ADMIN-002 首个子项源码与隔离开发检查完成。FastAdmin 新增 `GET assessment/index` 和 `GET assessment/detail?ids=<assessmentId>`,按评估 ID、任务 ID、请求 ID、会员 ID 精确筛选,并支持类型、状态、阶段及限定排序。列表默认20条、上限100,详情提交版本与调用尝试独立分页。详情展示当前任务、派发/租约、阶段耗时、历史失败尝试和已有 Token/耗时;历史任务和重试请求可关联原版本,不切换到最新结果。接口契约与维护见后端[排障说明](D:/AAdesk/202609/airz/database/admin-assessment.md)。
查询服务在数据库中投影 JSON 元数据,不读取或返回提交表单、报告正文、匹配内容、分析上下文、模型正文、供应商异常原文或密钥。产品解释调用排除;无版本关联的遗留调用明确标记,未知用量显示未知,迟到用量更新时间不当作完成时间。配置/额度拦截产生的零调用任务保留诊断;坏版本、错会话指针、缺任务或运行租约分别给稳定提示。所有写入口包含超管均拒绝,不派发、恢复、重试或调用模型。
权限仅新增 `assessment`、`assessment/index`、`assessment/detail` 三节点和独立客服/技术 `v2` 模板,运营保持 `v1`。旧客服/技术 `v1` 及账号绑定保留,不自动扩权;正式分配 `v2` 前须配套发布排障控制器和后台资源。隔离库增量预检5项、备份应用后复检0项,精确刷新隔离菜单缓存,无业务表/字段变更。
48项纯投影、42项隔离事务及1053项HTTP/数据库检查通过(194次请求);桌面1280×900与移动390×844页面27项交互检查通过,查询、详情弹窗、版本切换、分页、错误及空态可用,无新增控制台错误。截图与临时脚本保存在 `C:/Users/JUN/AppData/Local/Temp/airz-admin-assessment-20261001/`,浏览器夹具及账号已精确清理,原记录保持,0次模型调用。正式库、默认 `.env` 与移动端源码未改,未部署或开展运营/真机验收。ADMIN-002 保持开发中,人工重试、操作审计及完整外部查询/对账仍待后续开发,外部查询依赖 DATA-004。
### 0.41 2026-10-01 后台菜单与角色权限
ADMIN-001 复用现有管理员权限表,新增按规则名称解析实际 ID 的运营/客服/技术模板,包含动作及必要父菜单;不创建账号或自动绑定。运营管理公开产品/内容,客服处理反馈和只读融资资质,技术查看配置及受控启停密钥。`user/info/financial` 是字段授权节点,不是用户 API 或可调用业务动作;技术不授该节点。各角色均可管理本人配置,未授权仪表盘时首屏进入有权业务页。完整矩阵及增量初始化/缓存/恢复约定见后端[权限维护说明](D:/AAdesk/202609/airz/database/admin-permissions.md)。
会员/资料身份保持掩码,资料附件和证件原文不对后台返回;资料与系统消息禁止任何后台写入,超级管理员也不例外。列表及模型关联选择器使用查询/输出白名单,密钥不回显且批量只允许启停、不允许改消耗或所属模型。反馈历史附件不回显,日志写入和历史读取统一脱敏并省略 URL 查询串。通用排序/缓存清理重新执行权限校验,三个业务模板均不授这些系统操作。
源码及隔离开发检查完成,没有生产变更或移动端修改;FAQ、反馈字段/业务和本轮受控后台必须配套发布后才能在正式后台绑定新模板。ADMIN-002 当前只读子项见0.42;ADMIN-003 尚未实现,ADMIN-004 运营验收仍未开展。
### 0.39 2026-10-01 FAQ服务端化开发
FAQ复用`fa_acticle`的`type=6`,正文保存为`schemaVersion=1`、`kind=faq`的JSON,包含分类、问题和答案;公开接口为`GET /api/v1/help/faqs`,只返回已发布且结构有效的内容,支持按分类筛选。新增`Faq`后台编辑模型、控制器和编辑页,沿用现有状态、管理员权限和版本冲突保护,不新增数据库表或字段。
初始FAQ材料位于`database/faq_initial.json`,通过`database/import_faq.php`按显式环境和目标导入,重复按slug保留已有记录,预检默认回滚。前端`packages/content/services/help.uts`已删除本地FAQ兜底,服务端为空或失败时按现有空态/重试展示。正式数据库、PHP部署和前端发行均未执行。
### 0.40 反馈提交与处理闭环
会员反馈接口为`POST/GET /api/v1/feedback`与`GET /api/v1/feedback/:id`,鉴权会员ID来自Bearer会话。提交体只接受`content`、`attachmentIds`、`requestId`;内容去HTML、保留换行、最多255字,`requestId`为8—64位ASCII安全字符。同用户同请求键同正文幂等返回记录,不同正文返回409;当前附件服务未开放,`attachmentIds`必须为空数组。
返回项为`id/content/attachmentIds/status/reply/createdAt/updatedAt/handledAt`,状态包括`pending`、`processing`、`resolved`、`closed`。列表只读取当前会员,`page/pageSize`默认20、上限50;详情严格校验归属。后台反馈编辑白名单仅为`status/reply`,状态进入处理中或完成状态自动记录`handled_by/handled_at`,回到待处理则清空;新增、删除、批量更新和导入均拒绝。
`fa_feedback`迁移由`database/migrate_feedback.php`执行,新增请求键、回复和处理元数据列及唯一索引,历史NULL请求键保留。脚本默认只预检,必须显式`--env`、`--target`,写入还需`--apply --backup-dir`;本轮只在隔离库应用并有完整备份,未执行正式迁移或部署。帮助页的意见反馈使用空附件数组、失败重试复用请求键,并展示本人的处理状态和回复。
### 0.38 2026-10-01 内容、学习进度与新域名发布
新闻、融资课堂、详情、首页推荐与搜索同步接真实API,列表category/topic及page/pageSize分页,返回items/total/hasMore。搜索type=all/news/lesson、多词AND匹配发布正文并按来源IP限流60次/分钟,不记录原始关键词;未发布、结构不合法或下架内容不公开。前端共享services/content.uts,分包适配保留原型字段/图片,支持空态、断网重试和迟到响应保护,无静态数组兜底。
新闻复用fa_acticle.type=5,课程复用fa_finance;既有content TEXT保存schemaVersion=1 JSON。后台结构化编辑/发布/下架、封面上传、章节排序及版本保护完成,旧协议正文兼容。章节ID固定,新增fa_user_lesson_progress记录当前会员、课程、章节、正文摘要和首次完成时间;重排保留完成,正文更新失效,lessonVersion冲突409,重复完成幂等。现有业务表不增字段;FAQ服务端未实施,CONTENT-001/004保持开发中。
40项隔离数据库、81项内容HTTP/Playwright、13项后台检查及微信/Android开发编译通过,原数据清理复验一致。正式增量维护已新增课程进度表与消息唯一索引、按slug导入4篇新闻/3门课程、限定发布34个PHP/后台资源文件(含产品管理),64项服务器HTTPS/FPM及假模型检查通过、0收费调用,原有数据与私密配置不变,worker/入口恢复。公网内容200、匿名受保护接口401、敏感路径404、HTTP301及TLS校验通过。
正式域名https://airz.hqling.cloud,前端test环境API为/api/v1。小程序需重新发行并设置微信request合法域名;H5未部署,真机、多设备与真实模型未验收。恢复及备份见[内容维护说明](D:/AAdesk/202609/airz/database/content-publication.md)与开发进度0.38;旧段落中的未部署和HTTPS阻塞为历史状态。
### 0.37 2026-09-30 站内消息契约(历史本机阶段)
消息页与首页复用共享services/messages.uts,真实读取当前会员消息,支持分类/游标分页、单条/全部已读、原输入版本报告/档案跳转、空态和失败重试。登录恢复、离页/换分类/账户切换拒绝旧响应;分页错误保留在末端,底栏不遮挡列表。所有阅读状态在服务器保存,不复用旧本机静态已读键。微信/Android本地编译及H5手机/桌面联调通过。
复用fa_user_message,唯一键(user_id,business_type,business_id),无新表/列。评估成功/失败事件同事务落库,business_id是system输入日志revisionId,同版每事件最多一条;重试成功新增成功通知,失败重试保持原通知。详情校验会话及日志归属/删除状态,不返回任意URL;原失败版本后来成功时打开该版本报告,不切到会话最新版本。
实际接口及字段见5.5和后端[消息维护说明](D:/AAdesk/202609/airz/database/user-messages.md)。未读数与全部已读均为全分类;分页固定snapshotId,批量仅更新id<=snapshotId,新消息保持未读。50项隔离数据库、57项HTTP/Playwright及16项迁移恢复检查通过,数据清理25表原摘要一致,无收费调用。MSG-001—004待正式部署/真机验收;本轮索引、PHP及前端尚未发布,用户上一版上传不包含本轮变更。站内消息不包含订阅推送、群发或新的运营后台。
### 0.36 2026-09-30 正常业务文案与来源展示
当前六条产品用于开发,按用户要求前台统一采用业务名称、机构显示名及正常材料/条件/建议,内部来源标记不作为可见标签。来源publisher/title为产品管理中心/产品参数与准入条件说明;稳定source reference不变,前端显示“产品规则档案”,产品/来源规则版本增加。金融参数、用途和准入条件保持,inputVersion=3不采集融资金额/期限/用途的约定不变;来源文字更新不新增银行核验结论。
@@ -452,10 +586,10 @@ REPORT-004页面子项完成本地联调:report/report改为评估概况、匹
| 第三方身份 | fa_user + token | 拟增fa_user_identity,以provider+app_id+subject唯一;不能只靠单个openid列覆盖所有微信应用 | LOGIN-001 |
| 外部查询审计 | fa_user_info关联 | 拟增fa_data_query:用户/评估/授权、渠道、请求和渠道单号、状态、受保护结果引用、来源时间、错误/费用状态 | DATA-002、DATA-003 |
| 普通助手引用报告 | fa_ai_chat | 计划新增context_assessment_id和context_data,保存本人评估/产品ID及快照摘要引用;当前无这两列;历史普通会话默认NULL,assistant.assessment_id仍NULL,迁移前检查归属/索引并备份 | CHAT-001 |
| 课程内容与进度 | fa_finance | 课程章节JSON带稳定chapterId/版本;拟增fa_user_lesson_progress,唯一(user_id,lesson_id,chapter_id) | CONTENT-001、CONTENT-003 |
| FAQ与发布资料 | fa_acticle | 扩展明确定义的FAQ类型、展示分类/排序;增加标题之外所需摘要/封面字段 | CONTENT-001 |
| 消息去重 | fa_user_message | 新增事件键;按用户+事件键唯一,批量已读按请求时的最大ID水位更新 | MSG-001、MSG-002 |
| 签到与邀请 | fa_user、fa_user_score_log | 流水写入business_type/business_id;share_code去重后加唯一索引;拟增fa_user_invitation,受邀用户仅绑定一次,禁止自邀 | POINT-002、POINT-003 |
| 课程内容与进度 | fa_finance、fa_user_lesson_progress | 已实现content JSON带稳定章节ID/版本,进度唯一(user_id,lesson_id,chapter_id),正文摘要判定失效 | CONTENT-001、CONTENT-003 |
| 内容发布与FAQ | fa_acticle | 新闻type=5,FAQ type=6;结构化正文复用content JSON,协议原正文保留 | CONTENT-001 |
| 消息去重 | fa_user_message | 现有user_id/business_type/business_id组合唯一索引,无新列;批量已读按列表snapshotId水位更新,正式已迁移 | MSG-001、MSG-002 |
| 签到与邀请 | fa_user、fa_user_score_log | 已有业务键/事件唯一/时间索引;schema期望request_id/rule_version、用户请求唯一及idx_user_point_id(user_id,id),迁移脚本已编写但原表未迁移;成功流水冻结回执,邀请码唯一和关系表留POINT-003,见[积分契约](积分规则与开发契约.md) | POINT-002、POINT-003 |
| 反馈处理与客服 | fa_feedback | 处理状态、回复、处理人/时间;客服历史优先使用供应商能力,只保存必要关联标识 | SUPPORT-002、SUPPORT-003 |
变更只追加有明确业务目的的字段或关系。新增这些支撑表不改变“不新增独立评估、报告、匹配表”的约定。详细DDL在对应数据任务内提交审阅;已有数据需先预检、备份、回填验证,再收紧约束。不能直接重跑原空业务表限定的迁移脚本。
@@ -638,7 +772,7 @@ REPORT-004页面子项完成本地联调:report/report改为评估概况、匹
**目标:** 后台发布的内容、图文课程和FAQ可被前端检索阅读,进度跨设备一致。 **阶段:** M3。**剩余:** 4–6人日。
- **现状:** 前端本地资讯/课程/FAQ,课程进度为设备级键;后台存在表和CRUD但发布流程不完整。
- **现状:** 资讯/课程/搜索/首页真实接口、云端进度及发布后台已正式上线;FAQ服务端源码已完成但尚未导入/部署,真机/多设备待验收,见0.39。
- **前端:** 新闻、文章、课堂、课程页接真实分页/详情;处理404/下架,搜索竞态和章节完成状态。
- **后端:** 发布/下架、富文本清洗、分类与首页推荐、搜索和FAQ;稳定章节ID与进度幂等。
- **数据:** 复用fa_acticle/fa_finance;章节数据结构化;用户章节完成关系独立存储;不引入视频和付费课程。
@@ -656,11 +790,11 @@ REPORT-004页面子项完成本地联调:report/report改为评估概况、匹
**目标:** 将真实业务通知、阅读状态与首页红点保持一致。 **阶段:** M3。**剩余:** 2–4人日。
- **现状:** 前端静态通知和本机已读;表含read_at与业务引用,没有用户端业务API。
- **现状:** 当前会员消息/已读API、评估通知与唯一索引已正式部署,页面及首页红点完成;本轮前端需重新发行,见0.38。
- **前端:** 分类分页、未读数、已读/全部已读、与正确评估记录跳转。
- **后端:** 在业务事务完成后可靠生成通知,事件唯一键去重;读取和更新均限定当前用户。
- **后端:** 通知与评估结果/失败状态在同一事务保存,事件唯一键原子去重;读取和更新均限定当前用户及原提交版本。
- **数据:** 复用fa_user_message,补事件唯一键;is_read和read_at同步;全部已读采用最大ID水位。
- **接口:** GET /messages、GET /messages/unread-count、POST /messages/:id/read、POST /messages/read-all。 具体方法和字段见第5章;匹配分页/详情、公共产品详情已实现,公共产品列表仍计划新增。
- **接口:** GET /messages、GET /messages/unread-count、GET /messages/:id、POST /messages/:id/read、POST /messages/read-all。具体字段见5.5;先生产索引、后PHP、最后前端。
- **异常与边界:** 队列重试不重复通知;全部已读期间新增消息仍未读;本期站内消息不等同App推送。
| 任务编号 | 任务与交付范围 | 优先级 | 前置任务/外部条件 | 验收条件 | 人日 |
@@ -674,12 +808,12 @@ REPORT-004页面子项完成本地联调:report/report改为评估概况、匹
**目标:** 积分与真实任务事件一致,邀请可归因且奖励不会重复发放。 **阶段:** M3。**剩余:** 4–7人日。
- **现状:** 本机签到+10,固定体验邀请码;底层score方法未使用业务唯一键。
- **前端:** 真实积分、流水、服务端签到状态、邀请码和任务进度,显示已发布规则版本。
- **后端:** 积分事务和并发锁、日期与任务幂等、防自邀、可信事件奖励;错误需向业务层传播。
- **数据:** 复用score及score_log,明确business_type/business_id;邀请码唯一、受邀用户一次绑定。
- **接口:** GET /points、GET /points/ledger、POST /points/check-in、GET /points/tasks、GET /invitations、POST /invitations/bind。 具体方法和字段见第5章;匹配分页/详情、公共产品详情已实现,公共产品列表仍计划新增。
- **异常与边界:** 默认保留每日签到10分作为待业务确认建议;其他奖励金额不编造。复制文案或客户端上报完成不直接发积分。
- **现状:** POINT-002后端基础开发中,五接口源码、默认关闭配置和旧写方保护完成,原表未迁移、未部署;POINT-001受DEC-POINT阻塞,POINT-003/004未实施。页面仍为设备日期本机签到+10及固定体验邀请码,未接真实积分。
- **前端:** 后续接真实余额、流水、服务端签到状态和已发布规则版本;邀请/任务进度按后续POINT-003范围开放,不能把本机记录当服务端到账。
- **后端:** 已实现锁正常会员、锁后上海日期、同日业务键/成功请求重放、余额/流水同事务及固定失败;旧后台score/level编辑和User::score封闭。防自邀与可信邀请奖励尚待开发。
- **数据:** 复用score及已有业务键/事件唯一/时间索引;schema期望两可空元字段和两索引,迁移脚本已编写,原表未迁移;历史流水不补伪造回执、不重建余额,邀请关系另行设计,见[数据库方案](D:/AAdesk/202609/airz/database/points-design.md)。
- **接口:** GET /points、GET /points/rules、GET /points/ledger、POST /points/check-in、GET /points/tasks源码及真实HTTP隔离开发检查完成,原表未迁移/未部署,不能视为线上能力;严格Bearer/JSON/query、签到三字段及有界游标见[积分契约](积分规则与开发契约.md)。邀请读取/绑定仍为后续目标,未实现。
- **异常与边界:** 每日10分仅待确认建议,上海每日一次不补签,资料/邀请关闭,权益/期限/level策略待确认;未发布或未知不当作0分/成功,复制分享不发奖,锁后日期防跨午夜误入账。
| 任务编号 | 任务与交付范围 | 优先级 | 前置任务/外部条件 | 验收条件 | 人日 |
| --- | --- | --- | --- | --- | ---: |
@@ -690,11 +824,11 @@ REPORT-004页面子项完成本地联调:report/report改为评估概况、匹
### 4.13 SUPPORT|反馈与人工客服
**目标:** 帮助页既能提交可追踪反馈,也能真实到达人工服务。 **阶段:** M3。**剩余:** 3–6人日。
**目标:** 帮助页既能提交可追踪反馈,也能真实到达人工服务。 **阶段:** M3。**剩余:** 2–4人日。
- **现状:** FAQ可展开,客服仅未开放提示,反馈表有基础CRUD。
- **前端:** 反馈表单/附件/记录/回复;客服在线/排队/离线状态及失败回退。
- **后端:** 反馈归属与后台处理、服务端访客签名、客服会话关联;外部系统消息遵循渠道身份规则。
- **现状:** FAQ服务端读取,文字反馈提交/本人记录/后台处理源码完成但尚未部署;客服仅未开放提示。
- **前端:** 反馈文字表单、请求键重试、记录/回复;附件入口保留为空数组,客服在线/排队/离线状态及失败回退待供应商。
- **后端:** 反馈归属与后台处理已实现;服务端访客签名、客服会话关联待供应商,外部系统消息遵循渠道身份规则。
- **数据:** 复用fa_feedback补处理结果;不把反馈图片当公共文件;客服历史优先由供应商维护。
- **接口:** POST/GET /feedback、GET /feedback/:id、POST /support/session。 具体方法和字段见第5章;匹配分页/详情、公共产品详情已实现,公共产品列表仍计划新增。
- **异常与边界:** 无坐席能留言且后台有责任人;SDK失败提示可使用站内反馈;退出切换账号清理客服身份。
@@ -710,7 +844,7 @@ REPORT-004页面子项完成本地联调:report/report改为评估概况、匹
**目标:** 让运营人员能管理业务、定位故障并执行受控操作。 **阶段:** M3。**剩余:** 3–5人日。
- **现状:** 通用管理员权限和业务CRUD基础已有;不能据此认为完整运营流程已完成。
- **现状:** ADMIN-001角色模板、字段投影与只读保护、ADMIN-002已有评估排障/受控人工重试/操作审计及ADMIN-003只读服务检查/调用用量/分析进程心跳与进度超时提示/四字段受控运行策略源码完成,尚未部署;完整外部查询、供应商余额/费用对账、外部告警及运营流程仍待能力确认或开发。
- **前端:** FastAdmin后台增加任务、模型额度、查询状态和运营入口,非移动端新增主导航。
- **后端:** 角色授权、敏感字段掩码、任务/查询定位、受控重试和审计;不允许手改已提交评估输入及正式结果。
- **数据:** 复用管理员fa_auth_*;保留被删除会员组/规则表的删除状态;不恢复历史无关业务表。
@@ -833,7 +967,7 @@ REPORT-004页面子项完成本地联调:report/report改为评估概况、匹
| Chat | chatId、title、scene:assistant、contextAssessmentId:string或null、updatedAt |
| ChatMessage | messageId、chatId、sequence:int、role、status、text、requestId、errorCode、createdAt;模型用量按权限返回摘要 |
| Article/Lesson | id、title、summary、imageUrl、category、publishedAt、version;课程chapters包含稳定chapterId、title、body |
| Message | id、type、title、content、isRead、readAt、createdAt、target:{type,id}或null |
| Message | id、type:system/service/activity、title、content、isRead、readAt、createdAt;详情另含target:{kind:report/revision,assessmentId,revisionId,type:personal/enterprise}或null、targetUnavailable |
| PointsLedger | id、delta:int、before:int、after:int、businessType、businessId、memo、createdAt |
| Feedback | id、content、attachmentIds、status、reply、createdAt、handledAt;用户端不暴露无关管理信息 |
@@ -922,22 +1056,25 @@ REPORT-004页面子项完成本地联调:report/report改为评估概况、匹
| POST /assistant/messages/:id/retry | 所有者 | requestId | assistantMessageId、status | 仅失败回复;保留历史尝试信息,成功消息不重复调用模型 |
| GET /content/articles | 公开 | category、page/pageSize | Article分页 | 仅已发布;分类白名单 |
| GET /content/articles/:id | 公开 | 无 | Article及正文 | 下架/不存在返回404 |
| GET /content/lessons | 公开 | category、page/pageSize | Lesson分页 | 图文课程 |
| GET /content/lessons | 公开 | topic、page/pageSize | items、total、hasMore | 已实现;图文课程,仅已发布 |
| GET /content/lessons/:id | 公开 | 无 | Lesson及chapters | 稳定章节ID |
| GET /content/lessons/:id/progress | 登录 | 无 | completedChapterIds、lessonVersion | 只当前用户 |
| PUT /content/lessons/:id/progress | 登录 | chapterId、lessonVersion、completed:true | 最新进度 | 重复完成幂等;不存在章节拒绝 |
| GET /content/search | 公开 | keyword、type:all/news/lesson、page/pageSize | items及分页 | 仅已发布;多词AND沿用现有体验;长度/频率限制 |
| GET /content/home | 公开 | 无 | lessons、articles | 已实现;已发布新闻/课程推荐 |
| GET /help/faqs | 公开 | category可选 | items:{id,category,question,answer}[] | 后台可维护,实际行为变更时同步文案 |
| GET /messages | 登录 | type、page/pageSize | Message分页 | 当前用户;排序稳定 |
| GET /messages/unread-count | 登录 | 无 | count:int | 与列表读状态一致 |
| POST /messages/:id/read | 所有者 | 无 | Message | 幂等,不重复改首次readAt |
| POST /messages/read-all | 登录 | upToId | affected、unreadCount | 仅更新水位及之前消息,防误读并发新增通知 |
| GET /points | 登录 | 无 | balance:int、signedToday、ruleVersion | 服务端账本为准 |
| GET /points/ledger | 登录 | page/pageSize | PointsLedger分页 | 只本人 |
| POST /points/check-in | 登录 | requestId | delta、balance、signedDate | 唯一业务键=用户+签到日期;服务端时区 |
| GET /points/tasks | 登录 | 无 | 任务规则、状态、奖励条件 | 状态来源真实业务事件 |
| GET /invitations | 登录 | 无 | personalCode、shareUrl、统计摘要 | 真实唯一邀请码,隐去受邀人敏感信息 |
| POST /invitations/bind | 登录 | inviteCode、requestId | bindStatus | 首次绑定、禁止自邀、已有关系不覆盖 |
| GET /messages | 登录 | type=all/system/service/activity、limit默认20最大50;分页beforeId及snapshotId | items、snapshotId、nextBeforeId、unreadCount | 正式已部署;当前用户ID倒序,分页固定上界 |
| GET /messages/unread-count | 登录 | 无 | unreadCount:int | 正式已部署;全分类未读数 |
| GET /messages/:id | 所有者 | 无 | item、target、targetUnavailable | 正式已部署;原revisionId目标,删除关联后提示不可用 |
| POST /messages/:id/read | 所有者 | JSON {} | id、isRead、readAt、unreadCount | 正式已部署;幂等,保留首次readAt |
| POST /messages/read-all | 登录 | snapshotId:string | updatedCount、snapshotId、unreadCount | 正式已部署;全分类仅更新水位以内,新消息仍未读 |
| GET /points | 登录 | 无 | balance、serverDate、timezone、signedToday、checkInEnabled、ruleVersion、checkInReward、balanceState | 源码/隔离HTTP检查完成,原表未迁移/未部署;一致读取,未知不当零 |
| GET /points/rules | 登录 | 无 | status:draft/published/paused、ruleVersion、checkInReward、timezone、publishedRules | 源码已实现未部署;默认draft、版本/奖励/规则为null,未批准不启用 |
| GET /points/ledger | 登录 | limit默认20最大50;后续beforeId+snapshotId | items、snapshotId、nextBeforeId | 源码已实现未部署;本人有界游标,不返回memo;原表需先显式迁移 |
| POST /points/check-in | 登录 | requestId、expectedRuleVersion、expectedDate,恰好三字段 | ledgerId、delta、balanceAfter、signedDate、ruleVersion、replayed | 源码已实现未部署、默认关闭;锁后当日、历史回执不覆盖当前余额 |
| GET /points/tasks | 登录 | 无 | serverDate、timezone、items:{task,status,reward,ruleVersion}[] | 源码已实现未部署;draft签到及资料/邀请均unavailable、奖励为null,不能客户端自报完成 |
| GET /invitations | 登录 | 无 | personalCode、shareUrl、统计摘要 | 后续POINT-003草案,当前无个人真实码 |
| POST /invitations/bind | 登录 | inviteCode、requestId | bindStatus | 后续POINT-003草案;首次有效绑定/禁止自邀,绑定不直接发奖 |
| POST /feedback | 登录 | content、attachmentIds、requestId | Feedback | 非空且当前表内容最长255字符;附件归属;幂等 |
| GET /feedback | 登录 | page/pageSize | Feedback分页 | 只本人 |
| GET /feedback/:id | 所有者 | 无 | Feedback | 处理回复可读 |