http_api_v1.json 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584
  1. {
  2. "version": "v1",
  3. "frozen_at": "2026-09-29",
  4. "source": "实测探活(重构前行为)",
  5. "bases": {
  6. "gateway": "http://127.0.0.1:28084",
  7. "detail": "http://127.0.0.1:18033",
  8. "algorithm": "http://127.0.0.1:18050"
  9. },
  10. "note": "前端 Vue / 后端 Java / 算法 FastAPI 三条线都以本契约为对拍基准;值随数据变不比,比方法/状态/顶层键。 端点若带 `json_keys_any`,表示\"响应形状有两种合法态\"(如异步构建态),复核时任一键集全中即通过。",
  11. "endpoints": [
  12. {
  13. "kind": "detail_api",
  14. "path": "/api/ask",
  15. "method": "POST",
  16. "status": 200,
  17. "ctype": "application/json",
  18. "json_keys": [
  19. "err"
  20. ],
  21. "bytes_at_least": 23
  22. },
  23. {
  24. "kind": "detail_api",
  25. "path": "/api/ask_models",
  26. "method": "GET",
  27. "status": 200,
  28. "ctype": "application/json",
  29. "json_keys": [
  30. "models"
  31. ],
  32. "bytes_at_least": 137
  33. },
  34. {
  35. "kind": "detail_api",
  36. "path": "/api/ask_status",
  37. "method": "GET",
  38. "status": 200,
  39. "ctype": "application/json",
  40. "json_keys": [
  41. "answer",
  42. "elapsed",
  43. "err",
  44. "lang",
  45. "model",
  46. "q",
  47. "review",
  48. "state",
  49. "step",
  50. "steps",
  51. "t0",
  52. "verify",
  53. "xrev"
  54. ],
  55. "bytes_at_least": 173
  56. },
  57. {
  58. "kind": "detail_api",
  59. "path": "/api/channels",
  60. "method": "GET",
  61. "status": 200,
  62. "ctype": "application/json",
  63. "json_keys": [
  64. "A.功率",
  65. "A.状态",
  66. "A.转速",
  67. "A.风况",
  68. "B.偏航",
  69. "B.冷却执行器",
  70. "B.变桨",
  71. "B.润滑液压",
  72. "B.温度NBM",
  73. "B.结构"
  74. ],
  75. "bytes_at_least": 512
  76. },
  77. {
  78. "kind": "detail_api",
  79. "path": "/api/curves",
  80. "method": "GET",
  81. "status": 200,
  82. "ctype": "application/json",
  83. "bytes_at_least": 512,
  84. "json_keys_any": [
  85. [
  86. "figs",
  87. "note",
  88. "physics"
  89. ],
  90. [
  91. "building",
  92. "months",
  93. "note",
  94. "span",
  95. "win"
  96. ]
  97. ],
  98. "note": "产物仓已在位 → figs/physics;正在后台构建 → building/months/span/win(都算正常)"
  99. },
  100. {
  101. "kind": "detail_api",
  102. "path": "/api/dq_findings",
  103. "method": "GET",
  104. "status": 200,
  105. "ctype": "application/json",
  106. "json_keys": [
  107. "n",
  108. "note",
  109. "rows"
  110. ],
  111. "bytes_at_least": 420
  112. },
  113. {
  114. "kind": "detail_api",
  115. "path": "/api/facts",
  116. "method": "GET",
  117. "status": 200,
  118. "ctype": "application/json",
  119. "json_keys": [
  120. "cards",
  121. "contract_sha256",
  122. "contract_version",
  123. "generated"
  124. ],
  125. "bytes_at_least": 512
  126. },
  127. {
  128. "kind": "detail_api",
  129. "path": "/api/fleet",
  130. "method": "GET",
  131. "status": 200,
  132. "ctype": "application/json",
  133. "json_keys": [
  134. "all_months",
  135. "control",
  136. "faults",
  137. "fus",
  138. "kpi",
  139. "m8",
  140. "m9",
  141. "m9_pending",
  142. "months",
  143. "note",
  144. "rel",
  145. "sysdist",
  146. "sysmx_pending",
  147. "sysmx_span",
  148. "systems",
  149. "watch",
  150. "win",
  151. "win_pending"
  152. ],
  153. "bytes_at_least": 512
  154. },
  155. {
  156. "kind": "detail_api",
  157. "path": "/api/maint_framework",
  158. "method": "GET",
  159. "status": 200,
  160. "ctype": "application/json",
  161. "json_keys": [
  162. "coverage",
  163. "gaps",
  164. "records",
  165. "stages",
  166. "systems",
  167. "tiers"
  168. ],
  169. "bytes_at_least": 512
  170. },
  171. {
  172. "kind": "detail_api",
  173. "path": "/api/maint_std",
  174. "method": "GET",
  175. "status": 200,
  176. "ctype": "application/json",
  177. "json_keys": [
  178. "batch",
  179. "closure",
  180. "discontinuity",
  181. "recurrence",
  182. "score"
  183. ],
  184. "bytes_at_least": 512
  185. },
  186. {
  187. "kind": "detail_api",
  188. "path": "/api/maint_survey",
  189. "method": "GET",
  190. "status": 200,
  191. "ctype": "application/json",
  192. "json_keys": [
  193. "rows"
  194. ],
  195. "bytes_at_least": 512
  196. },
  197. {
  198. "kind": "detail_api",
  199. "path": "/api/ont_chain",
  200. "method": "GET",
  201. "status": 200,
  202. "ctype": "application/json",
  203. "json_keys": [
  204. "error",
  205. "text"
  206. ],
  207. "bytes_at_least": 106
  208. },
  209. {
  210. "kind": "detail_api",
  211. "path": "/api/ont_list",
  212. "method": "GET",
  213. "status": 200,
  214. "ctype": "application/json",
  215. "json_keys": [
  216. "rows"
  217. ],
  218. "bytes_at_least": 512
  219. },
  220. {
  221. "kind": "detail_api",
  222. "path": "/api/ont_obj",
  223. "method": "GET",
  224. "status": 200,
  225. "ctype": "application/json",
  226. "json_keys": [
  227. "err",
  228. "links",
  229. "obj"
  230. ],
  231. "bytes_at_least": 39
  232. },
  233. {
  234. "kind": "detail_api",
  235. "path": "/api/reload",
  236. "method": "GET",
  237. "status": 200,
  238. "ctype": "application/json",
  239. "json_keys": [
  240. "files",
  241. "ok",
  242. "old_stamp",
  243. "stamp"
  244. ],
  245. "bytes_at_least": 87
  246. },
  247. {
  248. "kind": "detail_api",
  249. "path": "/api/rpt_export",
  250. "method": "GET",
  251. "status": 200,
  252. "ctype": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
  253. "bytes_at_least": 512
  254. },
  255. {
  256. "kind": "detail_api",
  257. "path": "/api/vibcms",
  258. "method": "GET",
  259. "status": 200,
  260. "ctype": "application/json",
  261. "json_keys": [
  262. "action",
  263. "date",
  264. "diff",
  265. "grades",
  266. "overall",
  267. "时间范围",
  268. "窗"
  269. ],
  270. "bytes_at_least": 512
  271. },
  272. {
  273. "kind": "detail_page",
  274. "path": "/v2",
  275. "method": "GET",
  276. "status": 200,
  277. "ctype": "text/html",
  278. "html_title": "观澜 · 风电数据分析与决策支持",
  279. "bytes_at_least": 512,
  280. "retired": true,
  281. "retired_reason": "前端全量 Vue + Python 业务后端(detail 服务)按用户令退役;旧页路由不再提供,替代入口 /web/(Vue 工作台)。登记于 2026-10-01。",
  282. "replaced_by": "/web/"
  283. },
  284. {
  285. "kind": "cms",
  286. "path": "/cms/api/models",
  287. "method": "GET",
  288. "status": 200,
  289. "ctype": "application/json",
  290. "json_keys": [
  291. "models",
  292. "picked"
  293. ],
  294. "bytes_at_least": 96
  295. },
  296. {
  297. "kind": "cms",
  298. "path": "/cms/api/plugins",
  299. "method": "GET",
  300. "status": 200,
  301. "ctype": "application/json",
  302. "bytes_at_least": 512
  303. },
  304. {
  305. "kind": "cms",
  306. "path": "/cms/api/run",
  307. "method": "POST",
  308. "status": 200,
  309. "ctype": "application/json",
  310. "json_keys": [
  311. "kind",
  312. "text"
  313. ],
  314. "bytes_at_least": 290
  315. },
  316. {
  317. "kind": "cms",
  318. "path": "/cms/api/views",
  319. "method": "GET",
  320. "status": 200,
  321. "ctype": "application/json",
  322. "bytes_at_least": 2
  323. },
  324. {
  325. "kind": "gateway",
  326. "path": "/",
  327. "method": "GET",
  328. "status": 200,
  329. "ctype": "text/html",
  330. "html_title": "观澜 · 风电数据分析与决策支持",
  331. "bytes_at_least": 512,
  332. "entry_note": "★P13(2026-10-01 用户令):入口改为 Vue 工作台(/ 由网关伺服 release/web/index.html,实测 200 · 413 B · 响应头 X-Portal-Source: vue);旧门户页退役。"
  333. },
  334. {
  335. "kind": "gateway",
  336. "path": "/algorithm",
  337. "method": "GET",
  338. "status": 200,
  339. "ctype": "application/json",
  340. "json_keys": [
  341. "endpoints",
  342. "ok",
  343. "service",
  344. "time",
  345. "version"
  346. ],
  347. "bytes_at_least": 104
  348. },
  349. {
  350. "kind": "gateway",
  351. "path": "/cms",
  352. "method": "GET",
  353. "status": 200,
  354. "ctype": "text/html",
  355. "html_title": "如东海上风电场 振动诊断 · 客户版",
  356. "bytes_at_least": 512
  357. },
  358. {
  359. "kind": "gateway",
  360. "path": "/detail",
  361. "method": "GET",
  362. "status": 200,
  363. "ctype": "text/html",
  364. "html_title": "观澜 · 风电数据分析与决策支持",
  365. "bytes_at_least": 512,
  366. "retired": true,
  367. "retired_reason": "前端全量 Vue + Python 业务后端(detail 服务)按用户令退役;旧页路由不再提供,替代入口 /web/(Vue 工作台)。登记于 2026-10-01。",
  368. "replaced_by": "/web/"
  369. },
  370. {
  371. "kind": "gateway",
  372. "path": "/sim",
  373. "method": "GET",
  374. "status": 200,
  375. "ctype": "text/html",
  376. "html_title": "4MW 机组 整机联调仿真台 · 演示",
  377. "bytes_at_least": 512
  378. },
  379. {
  380. "kind": "gateway",
  381. "path": "/sim/sys",
  382. "method": "GET",
  383. "status": 200,
  384. "ctype": "text/html",
  385. "html_title": "观澜 offshore-4-0-platform · 四系统联调",
  386. "bytes_at_least": 512
  387. },
  388. {
  389. "kind": "gateway",
  390. "path": "/viewer",
  391. "method": "GET",
  392. "status": 200,
  393. "ctype": "text/html",
  394. "html_title": "如东风机 · 三维拆解",
  395. "bytes_at_least": 512
  396. },
  397. {
  398. "kind": "algorithm",
  399. "path": "/api/availability_summary",
  400. "method": "GET",
  401. "status": 200,
  402. "ctype": "application/json",
  403. "json_keys": [
  404. "台级损失top",
  405. "损失MWh",
  406. "时长h",
  407. "时间可用率_不含调度令",
  408. "物理上限核",
  409. "零本底"
  410. ],
  411. "bytes_at_least": 475
  412. },
  413. {
  414. "kind": "algorithm",
  415. "path": "/api/curves_check",
  416. "method": "GET",
  417. "status": 200,
  418. "ctype": "application/json",
  419. "json_keys": [
  420. "Betz",
  421. "λ叶尖速比",
  422. "齿比恒等"
  423. ],
  424. "bytes_at_least": 512
  425. },
  426. {
  427. "kind": "algorithm",
  428. "path": "/api/endpoints",
  429. "method": "GET",
  430. "status": 200,
  431. "ctype": "application/json",
  432. "json_keys": [
  433. "count",
  434. "items"
  435. ],
  436. "bytes_at_least": 512
  437. },
  438. {
  439. "kind": "algorithm",
  440. "path": "/api/fusion",
  441. "method": "GET",
  442. "status": 200,
  443. "ctype": "application/json",
  444. "bytes_at_least": 512
  445. },
  446. {
  447. "kind": "algorithm",
  448. "path": "/api/handoff",
  449. "method": "GET",
  450. "status": 200,
  451. "ctype": "application/json",
  452. "json_keys": [
  453. "calibration_updates_v1",
  454. "detectability_prior",
  455. "field_actions_v1",
  456. "meta",
  457. "open_items",
  458. "per_turbine"
  459. ],
  460. "bytes_at_least": 512
  461. },
  462. {
  463. "kind": "algorithm",
  464. "path": "/api/matrix",
  465. "method": "GET",
  466. "status": 200,
  467. "ctype": "application/json",
  468. "json_keys": [
  469. "WTG01",
  470. "WTG02",
  471. "WTG03",
  472. "WTG04",
  473. "WTG05",
  474. "WTG06",
  475. "WTG07",
  476. "WTG08",
  477. "WTG09",
  478. "WTG10",
  479. "WTG11",
  480. "WTG12",
  481. "WTG13",
  482. "WTG14",
  483. "WTG15",
  484. "WTG16",
  485. "WTG17",
  486. "WTG18",
  487. "WTG19",
  488. "WTG20"
  489. ],
  490. "bytes_at_least": 512
  491. },
  492. {
  493. "kind": "algorithm",
  494. "path": "/api/pitch",
  495. "method": "GET",
  496. "status": 200,
  497. "ctype": "application/json",
  498. "bytes_at_least": 512
  499. },
  500. {
  501. "kind": "algorithm",
  502. "path": "/api/problems",
  503. "method": "GET",
  504. "status": 200,
  505. "ctype": "application/json",
  506. "json_keys": [
  507. "主控与传感网",
  508. "偏航",
  509. "发电机",
  510. "变桨",
  511. "变流器",
  512. "齿轮箱"
  513. ],
  514. "bytes_at_least": 512
  515. },
  516. {
  517. "kind": "algorithm",
  518. "path": "/api/reconcile",
  519. "method": "GET",
  520. "status": 200,
  521. "ctype": "application/json",
  522. "json_keys": [
  523. "主控与传感网",
  524. "主轴承",
  525. "发电机",
  526. "变流器",
  527. "齿轮箱"
  528. ],
  529. "bytes_at_least": 512
  530. },
  531. {
  532. "kind": "algorithm",
  533. "path": "/api/reliability",
  534. "method": "GET",
  535. "status": 200,
  536. "ctype": "application/json",
  537. "json_keys": [
  538. "口径",
  539. "外部类停机h",
  540. "总停机h",
  541. "窗",
  542. "表",
  543. "设备类停机h"
  544. ],
  545. "bytes_at_least": 512
  546. },
  547. {
  548. "kind": "algorithm",
  549. "path": "/api/systems",
  550. "method": "GET",
  551. "status": 200,
  552. "ctype": "application/json",
  553. "json_keys": [
  554. "SYSTEMS",
  555. "TEMP2SYS"
  556. ],
  557. "bytes_at_least": 512
  558. },
  559. {
  560. "kind": "algorithm",
  561. "path": "/docs",
  562. "method": "GET",
  563. "status": 200,
  564. "ctype": "text/html",
  565. "html_title": "观澜 · 算法服务 - Swagger UI",
  566. "bytes_at_least": 512
  567. },
  568. {
  569. "kind": "algorithm",
  570. "path": "/healthz",
  571. "method": "GET",
  572. "status": 200,
  573. "ctype": "application/json",
  574. "json_keys": [
  575. "endpoints",
  576. "ok",
  577. "service",
  578. "time",
  579. "version"
  580. ],
  581. "bytes_at_least": 104
  582. }
  583. ]
  584. }