fix: withhold print action until bid validation finishes
This commit is contained in:
+19
-3
@@ -6,6 +6,8 @@ import {tmpdir} from 'node:os';
|
||||
import {join} from 'node:path';
|
||||
import {randomBytes} from 'node:crypto';
|
||||
import {createServer as netServer} from 'node:net';
|
||||
import {readyBid} from './fixtures/ready-bid.mjs';
|
||||
import {preparationSummary} from '../src/services/preparationSummary.js';
|
||||
const dir=mkdtempSync(join(tmpdir(),'ihaleist-browser-'));
|
||||
process.env.AUTH_SECRET=randomBytes(32).toString('hex');
|
||||
const {signToken}=await import('../server/auth.mjs');
|
||||
@@ -15,6 +17,8 @@ const keyUser={email:'keys-browser-qa@example.test',name:'API QA',isAdmin:true};
|
||||
const keyToken=signToken(keyUser);
|
||||
let apiKeyListFailure=false;
|
||||
let briefFailure='none';
|
||||
let holdDocuments=false;
|
||||
const pendingDocuments=new Set();
|
||||
process.env.IHALEIST_USER_DATA_DIR=dir;
|
||||
const {createBriefOutbox}=await import('../server/brief-outbox.mjs');
|
||||
const qaBriefOutbox=createBriefOutbox(dir);
|
||||
@@ -96,17 +100,29 @@ const ui=await createServer({server:{host:'127.0.0.1',port:0,proxy:{'/api':{targ
|
||||
res.setHeader('Content-Type','application/json');res.end(JSON.stringify({success:true,job:qaJobs.getAiJob(user.email,created.id)}));
|
||||
}catch(error){res.writeHead(400,{'Content-Type':'application/json'});res.end(JSON.stringify({success:false,error:error.message}));}});return;
|
||||
}
|
||||
if(req.url==='/qa-source-update') {
|
||||
if(req.url?.startsWith('/qa-output-documents?')&&req.method==='POST') {
|
||||
const mode=new URL(req.url,'http://localhost').searchParams.get('mode');
|
||||
if(mode==='hold')holdDocuments=true;
|
||||
if(mode==='release'){holdDocuments=false;for(const pending of pendingDocuments){pending.writeHead(200,{'Content-Type':'application/json'});pending.end(JSON.stringify({success:true,belgeler:[]}));}pendingDocuments.clear();}
|
||||
res.end('Belge yanıtı: '+mode);return;
|
||||
}
|
||||
if(req.url==='/api/me/documents'&&req.method==='GET'&&holdDocuments){pendingDocuments.add(res);res.on('close',()=>pendingDocuments.delete(res));return;}
|
||||
if(req.url==='/qa-source-update'||req.url==='/qa-source-update?ready=1') {
|
||||
const selected=req.url.endsWith('?ready=1')?readyBid(tenders[0]):tenders[0];
|
||||
if(selected.bidDraft){const summary=preparationSummary(selected,{loading:false,error:null,documents:[]});if(summary.issues.length)throw new Error('QA ready fixture: '+JSON.stringify(summary.issues));}
|
||||
const html=`<html lang="tr"><head><meta name="viewport" content="width=device-width,initial-scale=1"></head><body><div id="root"></div><script type="module">
|
||||
import React from '/node_modules/.vite/deps/react.js';
|
||||
import ReactDOM from '/node_modules/.vite/deps/react-dom_client.js';
|
||||
import {AppProvider,useApp} from '/src/context/AppContext.jsx';
|
||||
import {BidPackageBuilder} from '/src/components/BidPackageBuilder.jsx';
|
||||
import '/src/index.css';
|
||||
const selected=${JSON.stringify(tenders[0])};
|
||||
function Probe(){const {setTenders}=useApp();return React.createElement('main',{},
|
||||
const selected=${JSON.stringify(selected)};
|
||||
function Probe(){const {setTenders}=useApp();const [status,setStatus]=React.useState('');const control=async mode=>setStatus(await (await fetch('/qa-output-documents?mode='+mode,{method:'POST'})).text());return React.createElement('main',{},
|
||||
React.createElement('h1',{},'Yerel kaynak güncelleme testi'),
|
||||
React.createElement('p',{},'Yalnız sentetik veri. Açık dosya korunurken güncel kaynak değişir.'),
|
||||
React.createElement('button',{onClick:()=>control('hold')},'Belge yanıtını beklet'),
|
||||
React.createElement('button',{onClick:()=>control('release')},'Belge yanıtını serbest bırak'),
|
||||
React.createElement('p',{role:'status'},status),
|
||||
React.createElement('button',{onClick:()=>setTenders([{...selected,id:'qa-rotated-source',baslik:'QA Güncellenmiş alım',kazananFirma:'QA Kazanan'}])},'Aynı İKN için yeni kayıt ID ve kazanan yayımla'),
|
||||
React.createElement(BidPackageBuilder,{tender:selected}));}
|
||||
ReactDOM.createRoot(document.getElementById('root')).render(React.createElement(AppProvider,{},React.createElement(Probe)));
|
||||
|
||||
Reference in New Issue
Block a user